jakeyfly
V2EX  ›  问与答

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

  •  
  •   jakeyfly · Feb 24, 2018 · 1436 views
    This topic created in 3044 days ago, the information mentioned may be changed or developed.

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

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

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

    有点想不明白。

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

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

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

    其实 我纠结的地方是:我现 在的结构是一个所有球队的表,每条数据像你说的加个 LID 连接到联赛表。还有一个比赛场次表是接到球队表的,如果还要搞个排名表,那就是照球队表的形势再搞个结构差不多的表 加上一些积分胜场之类的字段。这个表是一年一张存,还是说加个年份 ID 也只存一张表?或者 我都想说是否把这类的东西存到 nosql 里去 因为偶尔也会要查询这个数据
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2624 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 11:43 · PVG 19:43 · LAX 04:43 · JFK 07:43
    ♥ Do have faith in what you're doing.