V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jakeyfly
V2EX  ›  问与答

大佬们好,我又有了一个数据库的问题求解,是关于排名的

  •  
  •   jakeyfly · 2018-02-24 20:04:51 +08:00 · 1046 次点击
    这是一个创建于 2446 天前的主题,其中的信息可能已经有所发展或是发生改变。

    英超联赛积分榜。 比如我数据库里存了好多年的 英超的比赛数据,一场一条。

    然后我突然想从现在开始,要记录每个赛季的排名情况。 现在问题来了,我是保存这个实体呢(一个赛季一个表) 还是说我每当要排名的时候,都抽取历史比赛数据,计算那一年的排名情况?

    或者用 SQL 的数据计算每年的积分榜情况,存到 NOSQL 数据中?

    有点想不明白。

    大佬有没有什么好的实现方试,最好是在 MYSQL 中实现的

    7 条回复    2018-02-26 01:32:09 +08:00
    loginv2
        1
    loginv2  
       2018-02-24 20:18:50 +08:00 via Android
    除了当前赛季的,算完了存起来。赛季结束后也和以前一样。用什么写都行,程序简单点,SQL 略绕。重复统计不会变化的数据没什么意义
    jakeyfly
        2
    jakeyfly  
    OP
       2018-02-24 20:21:37 +08:00
    @loginv2 我是纠结存那里,存数据库里不就是个表吗,还是说存 NOSQL 里
    jakeyfly
        3
    jakeyfly  
    OP
       2018-02-24 20:23:53 +08:00
    @loginv2 存这个表,只是有时候需要知道某个球队某一年的排名情况,还有那一年这球队进了几个球之类的
    loginv2
        4
    loginv2  
       2018-02-24 20:36:50 +08:00 via Android
    存哪里都行啊,你纠结的应该是统计粒度的问题,最小的粒度肯定是不统计,需要的时候临时计算。但是数据量小的时候是可以的,数据多了就不行了。如果没法从需求上来好好规划统计条件,那就做统计缓存吧,相同条件的,第二次统计直接取结果
    jakeyfly
        5
    jakeyfly  
    OP
       2018-02-24 20:47:58 +08:00
    @loginv2 大佬 如果我以后加个联赛进来,是做两个表,还是在一个表里用某个字段区别?
    c6h6benzene
        6
    c6h6benzene  
       2018-02-25 03:04:09 +08:00
    我会按 @loginv2 那样,过往赛季的排名算好存成表,当前赛季在需要的时候现场算。因为过往赛季的排名肯定是不会再变了。

    多一个联赛的话,你是指多一个联赛的所有比赛数据还是?我可能会放在同一个表里但是加上 leagueID 之类的。
    jakeyfly
        7
    jakeyfly  
    OP
       2018-02-26 01:32:09 +08:00
    @c6h6benzene 因为名次这个数据要经常用到,如果要用的时候实时算,不太好吧。另:存起来的意思是这个赛季完了,就在数据库里 生个一个表存起来的意思?

    其实 我纠结的地方是:我现 在的结构是一个所有球队的表,每条数据像你说的加个 LID 连接到联赛表。还有一个比赛场次表是接到球队表的,如果还要搞个排名表,那就是照球队表的形势再搞个结构差不多的表 加上一些积分胜场之类的字段。这个表是一年一张存,还是说加个年份 ID 也只存一张表?或者 我都想说是否把这类的东西存到 nosql 里去 因为偶尔也会要查询这个数据
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5800 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 08:51 · PVG 16:51 · LAX 00:51 · JFK 03:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.