【数据库】评论回复表设计

  |   2 评论   |   649 浏览

一般系统发展到一定时候,就会需要加上评论功能。评论也会有很多形式,不同形式的评论展示表的设计也不一样。这里介绍几种比较常见的评论。

1、一问一答

张三:文章写的不错。
作者 回复 张三:谢谢你的认可

这种评论是比较简单的,满足了基本的评论。

字段名 类型 注释
id bigint(64) 主键
target_type varchar(20) 目标类型:具体对哪个业务评论
target_id bigint(64) 目标id:具体哪个业务对应id
content varchar(1024) 评论内容
from_user_id bigint(64) 评论用户id
to_user_id bigint(64) 评论目标用户id
create_time datetime 创建时间
del_flag char(1) 删除标记 1:删除;0:未删除

如果是评论某个业务,那么to_user_id可以为空;
如果是对评论进行回复,那么to_user_id是目标用户id,from_user_id是评论用户id;
可以根据to_user_id是否为空来判断是评论业务还是回复评论;
target_type,target_id:主要是可以评论不同业务模块,你的这套评论可以适用各种业务。

2、评论回复评论
不光可以评论业务,还可以对评论进行评论

张三:文章很的可以
李四 回复 张三:你的名字很low
张三 回复 李四:你找事情

像这种评论为主的功能,你可以设计两个表,也可以设计一个表,
(1)、两个表的方案:
评论表:

字段名 类型 注释
id bigint(64) 主键
target_type varchar(20) 目标类型:具体对哪个业务评论
target_id bigint(64) 目标id:具体哪个业务对应id
content varchar(1024) 评论内容
from_user_id bigint(64) 评论用户id
create_time datetime 创建时间
del_flag char(1) 删除标记 1:删除;0:未删除

说明:这里只记录对业务功能的评论。

评论回复表:

字段名 类型 注释
id bigint(64) 主键
comment_id bigint(64) 评论表id
content varchar(1024) 评论内容
from_user_id bigint(64) 评论用户id
to_user_id bigint(64) 评论目标用户id
create_time datetime 创建时间
del_flag char(1) 删除标记 1:删除;0:未删除

说明:如果需要对评论的评论在进行回复,那么可以加一个parent_id,表示评论回复表id。

(2)、一个表

字段名 类型 注释
id bigint(64) 主键
parent_id bigint(64) 父类id,大于0时为评论的回复
target_type varchar(20) 目标类型:具体对哪个业务评论
target_id bigint(64) 目标id:具体哪个业务对应id
content varchar(1024) 评论内容
from_user_id bigint(64) 评论用户id
to_user_id bigint(64) 评论目标用户id,parent_id为0的时候该值也为0
create_time datetime 创建时间
del_flag char(1) 删除标记 1:删除;0:未删除

说明:一张表搞定评论、评论的回复;
当评论业务的时候,to_user_id为0;
当回复评论的时候,to_user_id为目标用户id;

到这里几种常见的评论表设计完成了。每个系统的功能不一样,你可以根据自己的需求进行调整。

本文为博主原创文章,未经博主允许不得转载。

评论

  • chaigx @nonespace 回复»

    每个表都有相应的关联字段,可以根据这些关联字段进行查询,不确定你说的查询是什么?

  • nonespace 回复»

    怎么查询呀

发表评论