如何为游戏排行榜设计对应的数据库

2021-05-18 11:05:26 +08:00
 dream4ever

目前计划开发一系列面向小学生的答题类游戏,运行环境为微信 Web 端,用户通过公众号菜单进入游戏,后端通过每个用户在该公众号中的唯一 openid 对其进行标识。预计每个游戏最多会有几千个用户。

对于每个学科,都会有一个专属的答题游戏,各学科的题目数量均有限,各游戏规则相同。

用户在每个游戏中,每一轮都不重复地回答本学科下的所有题目,一旦答错一道题则本轮结束,并计算本轮答对的题目数量,然后开始下一轮。在每个游戏中,以各用户在该游戏中的历史最高分(即答对题目数量最多的那一轮)生成排行榜。这样的话,每个用户在每个游戏中能够拿到的最高分,就是该游戏对应学科的题目数量。

数据库层面,我的设想是需要三张表:

题目表:全是单项选择题,目前想的是保存题目的题干、选项、答案、分类这四个字段即可,之后有新的需求了再调整。

用户表:用户的 openid 是必选项,其余像昵称、头像之类的都可以根据需求决定是否保留。

排行榜表:每个游戏的排行榜,我能想到的必须要有的信息,是用户的 openid 、用户在该游戏中拿到的最高分。

至于用户在每个游戏中拿到的最高分对应的排名,是否也需要保存到表中?

每个游戏最多有几千名用户的话,假设一共有 4 个游戏,是否有必要为每个游戏的排行榜都单独建一张表?

2180 次点击
所在节点    数据库
11 条回复
chogath
2021-05-18 11:09:58 +08:00
redis zset
oott123
2021-05-18 11:34:00 +08:00
几千名用户你都不需要排行榜表,直接从用户表里 order by 一下就完了,建个 (游戏,最高分) 的降序索引,完事
slert
2021-05-18 11:37:36 +08:00
应该还有个答题表吧。根据答题表实时算出排行榜也行。搞个缓存。
要建排行榜表的话,每个游戏也没必要单独建表,用个字段区分吧。
你这个访问量不大,怎么弄都好说。怎么简单怎么来。
ch2
2021-05-18 11:43:48 +08:00
几千个用户,直接一张表就搞定了
shpkng
2021-05-18 11:45:28 +08:00
有些云服务会专门提供排行榜 api..
Te11UA
2021-05-18 11:45:49 +08:00
这个量级随便你用啥都行
leeyuzhe
2021-05-18 11:46:13 +08:00
几千个用户根本就不叫数据量,怎么简单怎么来,每次 orderby 也来得及
kiracyan
2021-05-18 11:46:25 +08:00
排行榜第一反应就是 redis
jiangwei2222
2021-05-18 11:57:47 +08:00
才几千用户哪需要什么设计,mysql order by 就行了,等有几千万用户需要实时排序的时候再来问吧
joesonw
2021-05-18 12:37:50 +08:00
大型手游都是 redis zset
bsg1992
2021-05-18 13:06:46 +08:00
几千个用户 用啥设计啊 数据库 order by

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

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

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

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

© 2021 V2EX