目前计划开发一系列面向小学生的答题类游戏,运行环境为微信 Web 端,用户通过公众号菜单进入游戏,后端通过每个用户在该公众号中的唯一 openid 对其进行标识。预计每个游戏最多会有几千个用户。
对于每个学科,都会有一个专属的答题游戏,各学科的题目数量均有限,各游戏规则相同。
用户在每个游戏中,每一轮都不重复地回答本学科下的所有题目,一旦答错一道题则本轮结束,并计算本轮答对的题目数量,然后开始下一轮。在每个游戏中,以各用户在该游戏中的历史最高分(即答对题目数量最多的那一轮)生成排行榜。这样的话,每个用户在每个游戏中能够拿到的最高分,就是该游戏对应学科的题目数量。
数据库层面,我的设想是需要三张表:
题目表:全是单项选择题,目前想的是保存题目的题干、选项、答案、分类这四个字段即可,之后有新的需求了再调整。
用户表:用户的 openid 是必选项,其余像昵称、头像之类的都可以根据需求决定是否保留。
排行榜表:每个游戏的排行榜,我能想到的必须要有的信息,是用户的 openid 、用户在该游戏中拿到的最高分。
至于用户在每个游戏中拿到的最高分对应的排名,是否也需要保存到表中?
每个游戏最多有几千名用户的话,假设一共有 4 个游戏,是否有必要为每个游戏的排行榜都单独建一张表?
1
chogath 2021-05-18 11:09:58 +08:00 2
redis zset
|
2
oott123 2021-05-18 11:34:00 +08:00 via Android
几千名用户你都不需要排行榜表,直接从用户表里 order by 一下就完了,建个 (游戏,最高分) 的降序索引,完事
|
3
slert 2021-05-18 11:37:36 +08:00
应该还有个答题表吧。根据答题表实时算出排行榜也行。搞个缓存。
要建排行榜表的话,每个游戏也没必要单独建表,用个字段区分吧。 你这个访问量不大,怎么弄都好说。怎么简单怎么来。 |
4
ch2 2021-05-18 11:43:48 +08:00
几千个用户,直接一张表就搞定了
|
5
shpkng 2021-05-18 11:45:28 +08:00
有些云服务会专门提供排行榜 api..
|
6
Te11UA 2021-05-18 11:45:49 +08:00
这个量级随便你用啥都行
|
7
leeyuzhe 2021-05-18 11:46:13 +08:00
几千个用户根本就不叫数据量,怎么简单怎么来,每次 orderby 也来得及
|
8
kiracyan 2021-05-18 11:46:25 +08:00
排行榜第一反应就是 redis
|
9
jiangwei2222 2021-05-18 11:57:47 +08:00 via Android
才几千用户哪需要什么设计,mysql order by 就行了,等有几千万用户需要实时排序的时候再来问吧
|
10
joesonw 2021-05-18 12:37:50 +08:00
大型手游都是 redis zset
|
11
bsg1992 2021-05-18 13:06:46 +08:00
几千个用户 用啥设计啊 数据库 order by
|