数据库设计字段的问题

第一张表(书,book)

第二张表(收藏,collction), 外键(user_id, book_id)

第三张表(评论,comment), 外键(user_id, book_id)

第四张表(用户,user)

请问:
1. book的评论数量 是 联查 comment表好 还是 直接在book表里新增一个字段维护好。
2. book的收藏数量 是 联查 collction表好 还是 直接在book表里新增一个字段维护好。
3. 如果还有个浏览量 应该怎么维护

新增冗余字段比较好,减少关联查询, 实时更新收藏数和评论数。同时收藏数、评论数属于热点数据,可以考虑用redis等同步保存更新。

联查 comment表好,每个用户都要维护自己和自己发的评论的关系
联查 collction表好,每个用户都要自己的收藏,不仅是一个计数,如果book表也有就冗余了。

当然是联查,因为没一个都不光是计数而已,还需要显示具体的东西。

联查好,要考虑数据库的范式设计。

放在book里面会增加你单条数据的大小,处理大量数据的时候会影响效率。多表连查的话你全表查询(加索引用处都不大)更影响效率,放在book里面更方便,只是需要维护而已,而且一般不会出现查询大量数据

浏览量可以在书表里加一个字段,默认是0,有用户点击了书,就把该书对应的浏览量读出来+1,再更新字段

我建议**数量**最好添加到book表中,虽然冗余,但是效率高,并且最开始只需要赋予默认值即可,后续更新。