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

2018-02-24 20:04:51 +08:00
 jakeyfly

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

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

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

有点想不明白。

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

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

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

其实 我纠结的地方是:我现 在的结构是一个所有球队的表,每条数据像你说的加个 LID 连接到联赛表。还有一个比赛场次表是接到球队表的,如果还要搞个排名表,那就是照球队表的形势再搞个结构差不多的表 加上一些积分胜场之类的字段。这个表是一年一张存,还是说加个年份 ID 也只存一张表?或者 我都想说是否把这类的东西存到 nosql 里去 因为偶尔也会要查询这个数据

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/432330

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX