文章表设计疑虑,一篇文章点赞数,浏览数,评论数要不要存在文章的表里?

现在做一个评论,会有点赞、评论,同时要显示点赞和评论数

补充一下,有文章表、评论记录表、点赞记录表

升级一下话题:你们会把用户昵称一起存储了,还是关联查询

想了两种方案:

  1. 在文章表里增加三个数量字段,每次被点赞(取消点赞)/评论(删除评论)/浏览,都去更新这个字段,但是每次都要更新这些字段,效率是不是太低了,字段算不算冗余了

  2. 每次查询都关联查询统计,如果是一篇文章忍了,但是列表查询文章的数和评论书,这也太耗性能了吧

天外有天,不知道大厂是怎么处理找个问题的!

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

分表比较好,可以记录额外内容,例如评论内容,评论人,点赞人等,列表查询直接withCount并不耗性能,只有两次查询而已,自己注意N+1问题就行

4年前 评论
半人间 4年前
winter-ice (作者) 4年前
讨论数量: 7

如果只显示数量,直接写在一个表里没啥问题

但实际情况应该还需要记录其他信息吧 比如评论内容、点赞人

4年前 评论

分表比较好,可以记录额外内容,例如评论内容,评论人,点赞人等,列表查询直接withCount并不耗性能,只有两次查询而已,自己注意N+1问题就行

4年前 评论
半人间 4年前
winter-ice (作者) 4年前

@24K大白羊 有评论表,只是纠结找个统计,是在文章表记录,还是每次查询都统计

4年前 评论
24K大白羊 4年前
野犭

我会选一方案,代码控制下点赞数、评论数的同步就可以了

另外,点赞你得有记录吧,评论表是不是也可以有点赞数

最后,用缓存啊,再定时将缓存数据同步到数据库不就好了

4年前 评论
╰ゝSakura

加多个冗余字段,比如评论数,不需要每次都去计算的,默认开始为0,然后用户评论的时候,评论表加多一条数据后,再自增冗余字段,评论数

4年前 评论

方案一没毛病的。赞。 适当的冗余、适当的反范式,提升查询效率。

3年前 评论

使用方案1,操作太频繁的话可以加个缓存,定时把缓存更新进数据库

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!