要达到的效果,目前只是设计阶段。还没开始写后端,不过会不断更新。
前期设计思想 ,首先要知道评论和评论是多对多关系,那麽必然就需要一个中间表来关联表和表之间的关系。
首先创建四个表用来存储评论内容
-- 一级评论表
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','不错不错');
-- 二级评论插入内容
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');
-- 三级评论
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');
– 查询评论数据
-- 先将一级评论查出来
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)
-- 查询三级评论
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)
后期等后端写完我再贴出来