仿csdn三级评论数据库设计

要达到的效果,目前只是设计阶段。还没开始写后端,不过会不断更新。

前期设计思想 ,首先要知道评论和评论是多对多关系,那麽必然就需要一个中间表来关联表和表之间的关系。

仿csdn三级评论数据库设计_第1张图片

首先创建四个表用来存储评论内容


-- 一级评论表
CREATE TABLE `c_comment` (
  `bid` int(11) NOT NULL COMMENT '存储文章id',
  `cid` int(11) DEFAULT NULL COMMENT '评论id',
  `id` varchar(255) DEFAULT NULL COMMENT '评论人',
  `datatime` datetime DEFAULT NULL COMMENT '评论时间',
  `container` varchar(255) DEFAULT NULL COMMENT '评论内容'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 二级评论表
CREATE TABLE `c_comment_1` (
  `cid_1` varchar(255) DEFAULT NULL COMMENT '评论id',
  `id` varchar(255) DEFAULT NULL COMMENT '回复评论的人,当前id',
  `datetime` datetime DEFAULT NULL COMMENT '评论时间',
  `container` varchar(255) DEFAULT NULL COMMENT '评论内容'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 三级评论表
CREATE TABLE `c_comment_2` (
  `cid_2` varchar(255) DEFAULT NULL,
  `id` varchar(255) DEFAULT NULL,
  `container` varchar(255) DEFAULT NULL,
  `datetime` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 中间表
CREATE TABLE `cid1_cid2` (
  `cid` varchar(255) NOT NULL COMMENT '一级评论的id',
  `cid1` varchar(255) NOT NULL COMMENT '二级评论的id',
  `cid2` varchar(255) NOT NULL COMMENT '三级评论的id',
  PRIMARY KEY (`cid1`,`cid2`,`cid`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 一级评论插入评论内容
INSERT INTO c_comment(bid,cid,id,datatime,container) VALUES('1','1','1815925106','2020-11-10 08:25:30','不错不错');

仿csdn三级评论数据库设计_第2张图片

-- 二级评论插入内容
INSERT INTO c_comment_1(cid_1,id,datatime,container) VALUES('3','1815925108','2020-11-10 08:25:30','1815925106好好');


-- 三级没有评论时可以为空
INSERT INTO cid1_cid2(cid,cid1,cid2) VALUES('1','3','0');

为了验证准确性 我又多加了几条数据
仿csdn三级评论数据库设计_第3张图片

这里是中间表,联合了三个主键,作用关联三个评论表
仿csdn三级评论数据库设计_第4张图片

-- 三级评论
INSERT INTO c_comment_2(cid_2,id,datatime,container) VALUES('2','1815925106','2020-11-10 08:25:30','1815925105你说的对');

INSERT INTO cid1_cid2(cid,cid1,cid2) VALUES('1','3','2');

仿csdn三级评论数据库设计_第5张图片


– 查询评论数据

-- 先将一级评论查出来
SELECT * FROM c_comment WHERE bid = 1;

在这里插入图片描述

-- 查二级评论
SELECT c1.* FROM c_comment_1 as c1 WHERE c1.cid_1 in (SELECT c12.cid1 FROM cid1_cid2 as c12 WHERE c12.cid = 1 AND c12.cid2=0)

仿csdn三级评论数据库设计_第6张图片

-- 查询三级评论
SELECT c2.* FROM c_comment_2 as c2 WHERE c2.cid_2 in (SELECT c12.cid2 FROM cid1_cid2 as c12 WHERE c12.cid = 1 AND c12.cid2 <> 0)

在这里插入图片描述

后期等后端写完我再贴出来

你可能感兴趣的:(mysql,mysql)