前言
许久没更新了,这次分享一下最近做得一个小东西,大佬轻喷?
上周上面分配的一个小模块,实现一个类似于发表一条留言,留言内容相当于文章,文章可以进行回复,相当于掘金文章,我们在掘金文章评论回复。这功能说难不难,只要思路理清楚,数据库设计好,很简单,下面就说下我的设计和思路.
低保真原型
开始之前先看下我画的低保真原型图?,忽略细节,看完原型图,相信脑海肯定也有想法了,下面我们通过数据库设计再来慢慢捋一捋
数据库设计
根据上面原型,我们可以知道,回复是可以无限叠加的,相当于需要添加一个上下级关系,首先留言系统包括:留言、评论、评论回复信息,留言单独为一个表,评论和回复信息可以设计为一个表,下面直接上表:
留言表 | |||
---|---|---|---|
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 |
这样的数据格式,查询时首先只需要根据leaveId和itemId==-1的,得到所有一级回复,再根据每个一级回复的主键id,去得到所有属于这个一级回复的子回复,根据回复时间排序,这样一个简单的回复就差不多了.
结尾
水文不易,点赞是鼓励我继续水文的动力,有问题欢迎指出??
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END