背单词软件的数据库应该怎么设计?

怎样设计数据库,来记录每个用户背过的单词呢?

如果使用一个单独的表,userId,wordId 来记录的话,1万个用户,每个人背1千个单词,这个表就1千万行了。
这样是不是不太合理?
请大佬给个思路。

阅读 5.2k
1 个回答

这种问题主要还是看你们的场景,假如你的单词很多,你的用户也多,你想要再取巧也不行。

现在做一下假设,你的单词固定是1000个。

方式一:可以用redis的bitmap,来存储用户的单词阅读状态,1000个单词,每个用户有1000个状态,这样可以不用数据库,并且消耗的内存是很小的。

假设你的单词是有阅读顺序的,只能按照你们系统给点的顺序去一个个阅读

解决:这个只要给用户一个下标字段就可以满足了

假设你的系统用户阅读1000个单词耗时很短。比如一天就完成一天的阅读。

解决:可以借鉴你上面的思路,按照你的思路就会有一个用户,就会有1000条记录。但是我们可以逆思维。

 打个比方用户阅读了900个单词的时候,你只记录用户还有哪些单词没有记录,这个时候你只用生成100条。
 再假设用户已经阅读990个单词,你的表记录里面,只有10条记录,记录是那些单词用户还未阅读。
 
 

你这个场景,和常见的消息系统的设计是一样的。你的具体场景没有指明,但是大概就上面的思路,如果都不是,那就果断存。无须犹豫,这个是必然的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题