justinytsoft
2017-03-07 07:21
采纳率: 77.8%
浏览 1.1k
已采纳

数据库设计字段的问题

第一张表(书,book)

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

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

第四张表(用户,user)

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • 诚哥丿 2017-03-07 09:40
    已采纳

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

    点赞 打赏 评论
  • blownewbee 2017-03-07 07:28

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

    点赞 打赏 评论
  • Mmmmm_2016 2017-03-07 07:41

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

    点赞 打赏 评论
  • 林风自在 2017-03-07 07:47

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

    点赞 打赏 评论
  • a877160659 2017-03-07 07:47

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

    点赞 打赏 评论
  • 林风自在 2017-03-07 07:54

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

    点赞 打赏 评论
  • lhdren 2017-03-08 09:00

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

    点赞 打赏 评论

相关推荐 更多相似问题