V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dream4ever
V2EX  ›  数据库

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

  •  
  •   dream4ever · 2021-05-18 11:05:26 +08:00 · 2030 次点击
    这是一个创建于 1045 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

    11 条回复    2021-05-18 13:06:46 +08:00
    chogath
        1
    chogath  
       2021-05-18 11:09:58 +08:00   ❤️ 2
    redis zset
    oott123
        2
    oott123  
       2021-05-18 11:34:00 +08:00 via Android
    几千名用户你都不需要排行榜表,直接从用户表里 order by 一下就完了,建个 (游戏,最高分) 的降序索引,完事
    slert
        3
    slert  
       2021-05-18 11:37:36 +08:00
    应该还有个答题表吧。根据答题表实时算出排行榜也行。搞个缓存。
    要建排行榜表的话,每个游戏也没必要单独建表,用个字段区分吧。
    你这个访问量不大,怎么弄都好说。怎么简单怎么来。
    ch2
        4
    ch2  
       2021-05-18 11:43:48 +08:00
    几千个用户,直接一张表就搞定了
    shpkng
        5
    shpkng  
       2021-05-18 11:45:28 +08:00
    有些云服务会专门提供排行榜 api..
    Te11UA
        6
    Te11UA  
       2021-05-18 11:45:49 +08:00
    这个量级随便你用啥都行
    leeyuzhe
        7
    leeyuzhe  
       2021-05-18 11:46:13 +08:00
    几千个用户根本就不叫数据量,怎么简单怎么来,每次 orderby 也来得及
    kiracyan
        8
    kiracyan  
       2021-05-18 11:46:25 +08:00
    排行榜第一反应就是 redis
    jiangwei2222
        9
    jiangwei2222  
       2021-05-18 11:57:47 +08:00 via Android
    才几千用户哪需要什么设计,mysql order by 就行了,等有几千万用户需要实时排序的时候再来问吧
    joesonw
        10
    joesonw  
       2021-05-18 12:37:50 +08:00
    大型手游都是 redis zset
    bsg1992
        11
    bsg1992  
       2021-05-18 13:06:46 +08:00
    几千个用户 用啥设计啊 数据库 order by
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1144 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 18:33 · PVG 02:33 · LAX 11:33 · JFK 14:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.