数据库设计:每次提交数据多次写入or每次读取数据时做统计?

要做一个“洗碗大作战”的小app,其实就是简单记录和统计全家人洗碗次数。

大概有三个页面:
成员列表-所有成员的姓名、头像列表;
XX的战果-点击成员列表项进入该页面,有三个折线图,分别是该成员历史周、月、年的洗碗次数;
团队排名-当前周、当前月和当前年中,所有成员洗碗次数排名。

mysql数据库打算这样设计:
一个存储成员资料:id, name, avatar, password, enter-time
另一个存储洗碗记录: id, date (每条记录表示编号为id的用户在日期date洗过一次碗)

但是这样每次调取洗碗次数的时候(xx的战果页面,或者团队排名),需要对第二个表进行筛选和统计。

还有一个设计方案是,
存储成员资料的表:id, name, avatar, week(本周次数), month(本月次数), year(当年次数), password, enter-time
存储历史周洗碗次数:id, week(哪一周), count(次数)
存储历史月洗碗次数:id, month, count
存储历史年洗碗次数:id, year, count

这第二种办法,读取数据的时候直接取相应的count,或者其他存“次数”的字段就可以了。
但更新洗碗记录的时候必须将第一个表中week, month, year、其他表中当前一周(月/年)的count,全部更新,每隔一段时间还必须做“清零”和“历史数据入库”的工作。

两种办法哪个更好呢?或者有没有更好的设计办法?如果用mongodb的话会有什么区别吗?

阅读 3.4k
1 个回答

存储历史周洗碗次数:id, week(哪一周), count(次数)
这个就可以啦,剩下的月和年通过计算就可以自己得出。

  1. 根据日期计算出当前周信息找到匹配的周记录,如有更新掉没有添加

  2. 历史月/年数据定期归档,这部分数据是不变化

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