手把手教你设计简单留言系统(含数据库设计)

前言

许久没更新了,这次分享一下最近做得一个小东西,大佬轻喷?

上周上面分配的一个小模块,实现一个类似于发表一条留言,留言内容相当于文章,文章可以进行回复,相当于掘金文章,我们在掘金文章评论回复。这功能说难不难,只要思路理清楚,数据库设计好,很简单,下面就说下我的设计和思路.

低保真原型

开始之前先看下我画的低保真原型图?,忽略细节,看完原型图,相信脑海肯定也有想法了,下面我们通过数据库设计再来慢慢捋一捋

image.png

数据库设计

根据上面原型,我们可以知道,回复是可以无限叠加的,相当于需要添加一个上下级关系,首先留言系统包括:留言、评论、评论回复信息,留言单独为一个表,评论和回复信息可以设计为一个表,下面直接上表:

留言表
id 主键id
title 标题
user_id 用户编号(发布人)
user_name 用户名称(发布人)
org_id 地区id
org_name 地区名称
state 回复状态
content 内容
image_url 图片Url
publish_time 发布时间
is_top 是否置顶

留言表设计如上表格所示,相信应该也没什么疑问,下面贴回复表↓↓:

留言回复表
id 主键id
leave_id 外键>>对应留言表主键id=
user_id 留言人id
user_name 留言人名称
org_name 留言人地区名称
content 内容
item_id 父id
feedback_sup_id 回复上级id
feedback_name 回复人名称
feedback_org_name 回复人地区单位
feedback_id 回复人id
feedback_time 回复时间

心路历程

回复表需要关注的有两个字段,itemId和supId,先讲解itemId

itemId:如上所述父id,如果为一级回复则为-1,一级回复下面所有的回复都为一级回复的主键id,一级回复的意思就是在一条留言下面的回复,而不是回复下面的回复,可能会有点绕,慢慢理解

supId:上级id,如果当前为一级回复则为-1,不为一级回复则为当前被回复的主键id,通过前端才能实现匹配

如果还是不理解,下面给一个test数据,帮助大家去更容易理理解,举个例子如果有一条留言主键id为6

id leave_id item_id feedback_sup_id
1 6 -1 -1
2 6 1 1
3 6 1 2
4 6 1 3
5 6 -1 -1

这样的数据格式,查询时首先只需要根据leaveIditemId==-1的,得到所有一级回复,再根据每个一级回复的主键id,去得到所有属于这个一级回复的子回复,根据回复时间排序,这样一个简单的回复就差不多了.

结尾

水文不易,点赞是鼓励我继续水文的动力,有问题欢迎指出?‍?

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享