什么是二级评论
- 只有对话题的评论占楼(2、3 ... 楼),评论挂在话题下面
- 其余的为对评论(各楼层)的回复,或对回复的回复,这些统一按时间排序,挂在对话题的评论下面
二级评论数据表设计
评论表(tbl_comment)设计如下:
表字段 | 字段说明 |
---|---|
id | 主键 |
topic_id | 话题 id |
topic_type | 话题类型 |
content | 评论内容 |
from_uid | 评论用户 id |
回复表(tbl_reply)设计如下:
表字段 | 字段说明 |
---|---|
id | 主键 |
comment_id | 评论 id |
reply_id | 回复目标 id |
reply_type | 回复类型 |
content | 回复内容 |
from_uid | 回复用户 id |
to_uid | 目标用户 id |
回复表添加了一个 comment_id 字段来表示该回复挂在的根评论 id,这样设计也是出于性能方面的考虑,我们可以直接通过评论 id 一次性的找出该评论下的所有回复,然后通过程序来编排回复的显示结构。 通过适当的冗余来提高性能也是常用的优化手段之一。
reply_type:表示回复的类型,因为回复可以是针对评论的回复(comment),也可以是针对回复的回复(reply), 通过这个字段来区分两种情景。
reply_id:表示回复目标的 id,如果 reply_type 是 comment 的话,那么 reply_id = commit_id,如果 reply_type 是 reply 的话,这表示这条回复的父回复。
由于二级评论一般是 “A @ B” 的形式,所以存下 from_uid 和 to_uid 可以省去关联查询。
PS
多级评论表也是同一个设计,不过要嵌套比较深,一般没有那个必要。现在网上最常见的还是二级评论。