多级评论单表结构设计

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

一级评论: 对微博的评论

二级评论: 对微博下的评论的回复评论 ,这里包括二种 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.mfbz.cn/a/4130.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于微信小程序的图书馆选座系统源码

开发环境及工具: 大等于jdk1.8,大于mysql5.5,idea(eclipse),微信开发者工具 技术说明: springboot mybatis 小程序 代码注释齐全,没有多余代码,适合学习(…

Android Studio模拟器运行无反应

当Android Studio模拟器点击运行无反应 报以下错误: Emulator: PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT 问题分析 大多是由于默认路径带有中文,所以找不到 解决方法 1,删除镜像 2,配置环境变量 …

Unity强化学习之ML-Agents的使用

Github下载链接:https://github.com/Unity-Technologies/ml-agents ML-Agents是游戏引擎Unity3D中的一个插件,也就是说,这个软件的主业是用来开发游戏的,实际上,它也是市面上用得最多的游戏引擎之一。而在几年前随着人…

Maven配置—idea版

在java开发中,maven是个不可或缺的工具,可以简单理解成maven是个仓库,可以远程下载各种需要的插件,而且对于项目的打包编译等也非常简单;下面来说说如何配置maven 1. 首先下载maven的工具包,解压之后放在D…

OCR之论文笔记TrOCR

文章目录TrOCR: Transformer-based Optical Character Recognition with Pre-trained Models一. 简介二. TrOCR2.1. Encoder2.2 Decoder2.3 Model Initialiaztion2.4 Task Pipeline2.5 Pre-training2.6 Fine-tuning2.7 Data Augmentation三. 实验3.1 Data3.2 Settings3.2 Resul…

测试用例设计指南

作者:京东物流 王玉坤 软件测试设计是测试过程中重要的测试活动,怎么样设计测试用例能提高我们测试的效率和质量,从以下几个方面做了简单的讲解。 1 测试用例设计原则 测试用例设计的基本原则包括:有效性、清晰性、可复用性、可维…

Linux 0.11

调试介绍 Linux 0.11-调试 Linux 最早期的代码-36 启动跟踪 BIOS 加载 电脑启动,CPU指向0xFFFFFFF0处,这里正好是系统ROM BIOS存放的地址。即开始执行BIOS指令。为了保持向下兼容,就会把与原PC兼容的BIOS代码和数据复制到低端1M末端的64K…

0基础实现微信推送天气,生日等(女朋友快乐眼)

最近微信小程序推送的功能很火,我也是去看了很多攻略,最后选了一个0基础的版本,最后也是实现了推送功能,如图 如何实现? 首先,打开微信官方提供的一个接口生成网址,微信扫码登录,然…

数据挖掘(作业汇总)

目录 环境配置 实验1 数据 作业2 环境配置 实验开始前先配置环境 以实验室2023安装的版本为例: 1、安装anaconda:(anaconda自带Python,安装了anaconda就不用再安装Python了) 下载并安装 Anaconda3-2022.10-Windows-x86_64.ex…

剑指offer JZ77 按之字形顺序打印二叉树

Java JZ77 按之字形顺序打印二叉树 文章目录Java JZ77 按之字形顺序打印二叉树一、题目描述二、双栈法三、队列reverse()法使用双栈法和队列reverse()法解决剑指offer JZ77 按之字形顺序打印二叉树的问题。 一、题目描述 给定一个二叉树,返回该二叉树的之字形层序遍…

【pytorch】深度学习模型调参策略(五):采用贝叶斯工具进行最优参数搜索及最佳步数确认

目录1.如何决定是否应用某个新的超参数配置2.参数优化工具optuna确定最终最优配置为什么在调整的探索阶段使用准随机搜索而不是更复杂的黑盒优化算法?optuna库简介pytorch实现代码搜索参数详解输出结果3.确定每次训练运行的步数使用学习率扫描选择max_train_steps初…

设置鼠标右键打开方式,添加IDEA的打开方式

一、问题描述 已下载IDEA,但是右键打开之前保存的项目文件,无法显示以IDEA方式打开。 二、解决步骤 1. 打开注册表 winR键输入regedit 2、查找路径为计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell (我找了半天没看到Class…

在芯片设计行业,从项目的初期到交付,不同的岗位的工程师主要负责什么?

大家都知道在芯片设计行业,项目是至关重要的一环。从项目的初期到交付,不同的岗位的工程师在项目的各环节主要负责什么?他们是怎样配合的?下面看看资深工程师怎么说。 一个项目,从初期到交付的过程是比较漫长的。我们知道最早的时候&#…

deskvideosys 办公行为管理软件的部署架构

deskvideosys 办公行为管理软件服务器端使用的是 B/S 架构,采用 golangvue 框架来编程,agent 端直接使用的是 vc编程框架,然后通过tcp协议连接服务器端,所以deskvideosys架构 可以作为终端安全管理,上网行为管理&#…

小程序 table组件

最近有在小程序中用table的需求,但是没有找到有符合要求的组件,所以自己弄了一个,能满足基本需求。 组件下载:https://download.csdn.net/download/weixin_67585820/85047405 引入 "usingComponents": {"table": "…

基于springboot和Web实现社区医院管理服务系统【源码+论文】分享

基于springboot和Web的社区医院管理服务系统演示开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Mave…

记录--Vue 3 中的极致防抖/节流(含常见方式防抖/节流)

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 今天给大家带来的是Vue 3 中的极致防抖/节流(含常见方式防抖/节流)这篇文章,文章中不仅会讲述原来使用的防抖或节流方式,还会带来新的一种封装方式,使用起来更简单、…

diffusion 之 cifar/mnist 数据集

diffusion 之 mnist 数据集mnist数据集ddpm/script_utils.pyscripts/train_mnist.py展示采样结果代码出处:https://github.com/abarankab/DDPMwandb的问题解决方法: step1: 按照这个https://blog.csdn.net/weixin_43164054/article/details/1…

基于kubernetes部署gitlab

目录前提下载镜像部署服务前提 已经搭建完kubernets集群并可提供服务。 下载镜像 去docker hub 下载具体版本镜像,当使用最新版本时,也建议具体制定版本号,而不是使用latest. 如 gitlab/gitlab-ce:15.10.0-ce.0 当然可以pull到本地&#x…

Linux拒绝俄罗斯开发者合入

最近在Linux社区看到这样的信息https://lore.kernel.org/all/20230314103316.313e5f61kernel.org/我们不愿意接受你们的补丁。关于上面的内容,看到有一篇这样的文章https://www.phoronix.com/news/Linux-STMAC-Russian-Sanctions由于美国对俄罗斯实施制裁&#xff0…