后端开发阅读状态公共消息功能的数据库设计
Posted nicojerry
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了后端开发阅读状态公共消息功能的数据库设计相关的知识,希望对你有一定的参考价值。
最近对管理有了另一个看法,在小团队里面,你要花多点时间去检查每个任务的完成情况,很多时候即使一个任务完成了,在开发过程中还有很多细节没有处理,也可能有Bug的存在。例如安排了前端做几个接口的接入,完成了之后我去检查一下实际情况,发现有些地方没有处理好,例如输入的参数没有做校验,有些界面从另一个界面跳进去的时候会崩溃。
因此:
1. 开发管理要把控每个任务的完成情况,每个任务完成之后要去检查落实。
2. 开发管理要提醒开发人员要注意的细节,让每个成员在开发中进行落实。
回归正题,在后端开发中遇到一个公共消息功能的需求:
1. 系统公告发布后每个用户都能收到提醒(下拉刷新的公告分类列表的时候,对应分类会有红点),点击分类进去查看公告后红点消失。
2. 用户可以删除该分类的公告(清空),删除后再次拉取该分类下的公告列表为空,不能有删除之前的公告。
其实问题在于,用户查看某个分类的公告之后,要标记用户已经读取过该分类下的公告,而且有第二条规则限制,所以简单用是否已读的字段是不行的。
所以自己想到了利用最后读取分类时间来做标识,每个公告有发布时间,而且公告是属于分类的,分类也有最近一次发布时间。利用最后读取分类时间、公告发布时间、分类最后一次发布时间这三个参数就可以做到规则一的需求。重点就是公告发布的时候,对应公告分类表的最后发布时间字段也会更新。
然后规则二,增加一个最后删除分类时间做标识,小于该时间的该分类下的公告都不会被拉取回去。
总结一下数据库表设计:
公告分类表:classify(id, name, last_publish_time)
公告表:notice(id, title, content, publish_time, classify_id)
读取记录表:readStatus(user_id, classify_id, last_read_time, last_delete_time)
流程:
发布公告:插入公告表 -> 更新公告分类表对应分类的最后发布时间
拉取分类列表:根据读取记录表的最后读取时间,判定是否该分类是否应该显示红点
拉取分类下的公告:更新读取记录表的最后读取时间,同时根据最后删除时间,筛选发布时间大于删除时间的公告。
删除分类下的公告(情况):直接更新读取记录表下的最后删除时间
以上是关于后端开发阅读状态公共消息功能的数据库设计的主要内容,如果未能解决你的问题,请参考以下文章
设计精良的网上商城系统,包括前端、后端、数据库、负载均衡、数据库缓存、分库分表、读写分离、全文检索、消息队列等,使用SpringCloud公司框架,基于Java语言开发。该项目可部署到服务器上,不断完