最近公司业务需要评论回复的功能,主要是模仿着百度贴吧类似的评论模块展示,我简单的分成评论表和回复表,刚开始设计的时候,我简单的以为评论下回复根据创建时间升序排序就好,后面发现这样排序有太大bug,不知道回复的到底是谁,一天下来算是白做了 后面在交流群里问了下,了解到像评论回复一般都是以树形结构存储的,感觉学习
根据节点之间的继承关系,显现的描述某一节点的父节点,从而建立二位的关系表。表的结构设计为{id,pid}:
本人设计的评论,回复表是隔离开的,因此,只有回复放入树形结构
CREATE TABLE `reply` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID编号', `fromName` varchar(50) COLLATE utf8mb4_vietnamese_ci NOT NULL COMMENT '回复用户名', `fromId` int(11) NOT NULL COMMENT '回复用户ID', `fromImg` longtext COLLATE utf8mb4_vietnamese_ci COMMENT '回复用户头像', `commentId` int(11) NOT NULL COMMENT '评论ID', `date` int(11) NOT NULL COMMENT '回复时间,时间戳存储', `type` int(11) NOT NULL COMMENT '回复类型:回复评论,回复', `content` varchar(200) COLLATE utf8mb4_vietnamese_ci NOT NULL, `essay` int(11) NOT NULL COMMENT '文章Id', // toId就是定义中的pid `toId` int(11) DEFAULT '0' COMMENT '被回复的回复ID 如果为0 则回复的是根评论', `toName` varchar(50) COLLATE utf8mb4_vietnamese_ci DEFAULT NULL COMMENT '被回复的用户名', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_vietnamese_ci至于如何取出展示数据,那就是前端的事啦
https://www.biaodianfu.com/adjacency-list.html https://juejin.im/post/5beea202e51d451f5b54cdc4#heading-3