# 评论表设计

  • 什么是二级评论

    • 只有对话题的评论占楼(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_typecomment 的话,那么 reply_idcommit_id,如果 reply_typereply 的话,这表示这条回复的父回复。

  • 由于二级评论一般是 “A @ B” 的形式,所以存下 from_uidto_uid 可以省去关联查询。