当前位置: 首页 > news >正文

多级评论单表结构设计

这里的多级,本质上其实也就二级,例如微博的评论,

一级评论: 对微博的评论

二级评论: 对微博下的评论的回复评论 ,这里包括二种 1. 回复的是一级评论, 2, 回复的是二级评论

效果如下

 表数据

 查询文章评论时:

SELECT * from comment where article_id = '1' and comment_level = 1 ORDER BY top_status desc ,create_time desc

结果:

1    aaa    张三    1    标题党                    1    一级评论(评论文章)    1    0    0    2019-04-26 17:37:48

查看评论下的回复时:

SELECT * from comment where parent_comment_id = '1' and article_id = '1' and comment_level = 2 ORDER BY create_time desc 

结果:

3    aaa    张三    1    标题党    1    aaa    2    bbb    2    回复二级评论    1    0    0    2019-04-26 17:40:04
2    bbb    李四    1    标题党    1    aaa            2    回复一级评论    1    0    0    2019-04-26 17:38:53

上面查询评论都是按照时间 create_time 倒叙,如果要改成微博的那种按照热度的 或者点赞量的

只需要把create_time 改成 praise_num

-----------------------------------------------------------------------表结构如下--------------------------------------------------------------------------------------------

id               评论id  可以设置为自增主键 也可设置为uuid
user_id       评论人userId
user_name  评论人昵称 ,记录当时评论的时候用户的昵称,如果用户昵称修改,评论展示也变的话 不需要设置该字段
article_id     在哪篇篇文章下评论的
article_title  文章标题,记录当时评论的时候文章标题,查看我的评论或者 评论我的时,文章动态获取的话 不需要设置该字段
parent_comment_id  父级评论id
parent_comment_user_id 父级评论的userid
reply_comment_id   被回复的评论id
reply_comment_user_id 被回复的评论的userid
comment_level  评论级别 ,回复文章的是一级评论 ,其它的都是二级评论
content  评论内容
status  评论状态,评论被删除了  都是 逻辑删除,不会真实删除
praise_num  评论的点赞数量
top_status  评论是否置顶
create_time  评论创建时间
表结构为

CREATE TABLE `comment` (`id` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '评论id',`user_id` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '评论人userId',`user_name` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '评论人名称',`article_id` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '评论的文章id',`article_title` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '评论的文章标题',`parent_comment_id` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '父评论id',`parent_comment_user_id` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '父评论的用户id',`reply_comment_id` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '被回复的评论id',`reply_comment_user_id` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '被回复的评论用户id',`comment_level` tinyint(4) NOT NULL DEFAULT '1' COMMENT '评论等级[ 1 一级评论 默认 ,2 二级评论]',`content` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '评论的内容',`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态 (1 有效,0 逻辑删除)',`praise_num` int(11) NOT NULL DEFAULT '0' COMMENT '点赞数',`top_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '置顶状态[ 1 置顶,0 不置顶 默认 ]',`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',PRIMARY KEY (`id`),KEY `idx_article_id` (`article_id`) USING BTREE,KEY `idx_user_id` (`user_id`) USING BTREE,KEY `idx_create_time` (`create_time`),KEY `idx_parent_comment_id` (`parent_comment_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文章评论表';

 

1. 编码设置为  utf8mb4 是为了支持 emoji 标签

2. id 根据需求可以设置为自增 或者 uuid

3. user_name 字段 和 article_name 字段 根据需要来是否设置为表字段。如果为表字段 就不用连表查询,但是 记录的都是当时评论的时候的用户名和 文章标题。 好在用户昵称和文章标题变化 但是 对应的 id 是不变的,也可以关联查询到。

4. 文章id ,用户id 创建时间,父评论id 设置索引   在查询时都能有效利用索引

5. 评论删除功能,其实都不是 真实物理删除,只是设置不可见,(支持消息中心以及 我的评论 )
 

http://www.lryc.cn/news/43579.html

相关文章:

  • Mac M1通过VMWare Fusion安装Centos7记录(镜像和网络有大坑)
  • 女生适合当程序员吗?
  • 昇腾AI机器人发布,12家企业、5家高校签约,昇腾AI开发者创享日全国巡展沈阳首站成功举办
  • anaconda如何改变虚拟环境安装路径
  • 根据卫星运动矢量计算轨道六根数
  • 关于微信小程序安装npm的过程,从下载到小程序内部安装完成
  • IO-操作系统
  • Downie 4 4.6.12 MAC上最好的一款视频下载工具
  • unity 玩家移动时idle和run动画频繁切换
  • 小程序 table组件
  • 利用摄影测量进行地形建模的介绍
  • 中文代码138
  • JQuery用法
  • Python采集热门城市景点数据+简单制作数据可视化图
  • VUE-cli搭建项目
  • Feign返回值统一处理
  • 探究如何在Linux系统中修改进程资源限制:四种方法调整进程限制,让你的系统高效运行(包含应用层getrlimit和setrlimit API)
  • 9.5. 机器翻译与数据集
  • 跟着凯新生物2 Arm PEG Biotin,2-Branched PEG Biotin,生物素-聚乙二醇-二臂/支,学试剂知识
  • react组件进阶(四)
  • 阿维塔城区NCA智驾导航辅助,复杂路口,全面胜任
  • [Pandas] div()函数
  • c++并发与多线程
  • Vinylsulfone PEG Biotin,Biotin-PEG-VS,生物素聚乙二醇乙烯砜,VS基团容易与游离巯基发生反应
  • 论文学习——Tune-A-Video
  • C++类与对象part1
  • 记一次抓取网页内容
  • parasoft帮助史密斯医疗通过测试驱动开发提供安全、高质量的医疗设备
  • SpringBoot整合Oauth2开放平台接口授权案例
  • Linux_创建用户