收藏功能对应的源业务数据删除了,表里脏数据了(对应业务 id 字段)?!

一、前言

没想到啊,没想到啊,上一篇文章如何不复杂的设计与实现收藏功能?说到,简单设计个收藏功能;但是,完成上线后,坏了出现问题了,原业务数据删除 了,那收藏记录的表就是会出现脏数据 了呀(即:对应的业务 id 字段的数据是有问题

因此,本篇文章将围绕处理收藏表脏数据的问题进行。

二、需求分析

需求场景(还是继续以掘金举例子,文章、小册、沸点业务):

  • 解决脏数据问题

我们看到问题的起因,是业务数据删除后,导致收藏记录出现的脏数据。

那么,

  1. 删除业务 数据的同时 ,也对收藏记录进行删除
  2. 定时任务,按指定时间(定时/日/月)进行检查收藏表的数据是否对应已被删除。(即定时检查删除
  3. 查询收藏 表数据的同时 ,根据业务id 检查对应业务数据 是否存在,不存在 就对该收藏数据删除
  4. ...(其他暂未想到,欢迎各位大佬可以评论区替之补充~ )

三、设计方案(少代码,多思路)

公共部分(根据业务 id 删除收藏记录)

它们公共部分都是需要根据业务 id 去删除对应的收藏记录表(因为业务被删除了,所有收藏了该业务的用户,都会出现脏数据)

简单的 mysql 和 java

mysql 复制代码
DELETE FROM t_collect WHERE FIND_IN_SET('business_id','business_id_01,business_id_02');
java 复制代码
    public int deleteByBusinessIds(String businessId) {
        QueryWrapper<Favorites> queryWrapper = new QueryWrapper<>();
        queryWrapper.apply("FIND_IN_SET(business_id, {0})", businessId);
        return collectMapper.delete(queryWrapper);
    }

(一)删除业务同时删除收藏记录

这个思路就是很简单了,在删除业务逻辑中,都加上公共部分的删除逻辑即可。(这个在几十个业务的情况下,是不理想的,因为所有业务都得加上。)

(二)定时检查进行删除

这个也很好理解,顾名思义;写个定时任务,根据收藏表的记录去查询原业务数据不存在进行删除该收藏记录。(不理想,收藏记录多起来是存在问题的。)

(三)查询收藏同时检查并删除不存在对应业务的数据

在查询出,用户对应的收藏记录数据的同时,多加一步进行查询对应的数据业务;不存在即进行删除。(比较理想,不存在过多处理)

四、总结

序号 方法 优点 缺点 整体
删除业务同时删除收藏记录 业务较少优势还是有的 给涉及的业务,添加处理,业务和功能分离不够明确 业务过多不理想
定时检查进行删除 算是一个解决方案,但建议性不大; 数据过多会存在时间过长,重复性功能处理也过多 数据过多(收藏用户过多)不理想
查询收藏同时检查并删除不存在对应业务的数据 业务和功能分离明确,不易受影响 仅在查询过程中删除 理想

文章小尾巴

文章小尾巴(点击展开)

文章写作、模板、文章小尾巴可参考:《写作"小心思"》

感谢你看到最后,最后再说两点~

①如果你持有不同的看法,欢迎你在文章下方进行留言、评论。

②如果对你有帮助,或者你认可的话,欢迎给个小点赞,支持一下~

我是南方者,一个热爱计算机更热爱祖国的南方人。

(文章内容仅供学习参考,如有侵权,非常抱歉,请立即联系作者删除。)

相关推荐
FoldWinCard12 分钟前
Python 第三次作业
java·服务器·python
傻啦嘿哟15 分钟前
Python列表排序:用key参数掌控排序规则
java·开发语言
+VX:Fegn089519 分钟前
计算机毕业设计|基于springboot + vue动漫交流与推荐平台系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
大尚来也31 分钟前
解决 IDEA 运行 Spring Boot 测试时“命令行过长”错误的终极方案
java·spring boot·intellij-idea
云姜.34 分钟前
如何在idea上使用数据库
java·数据库·intellij-idea
一人の梅雨1 小时前
京东工业平台商品详情接口进阶实战:B2B采购场景适配+合规落地+多规格解析全方案
java·大数据·人工智能
callJJ1 小时前
Spring AI 语音合成(TTS)完全指南:OpenAI Text-to-Speech
java·人工智能·spring·语音识别·spring ai
重生之后端学习1 小时前
98. 验证二叉搜索树
java·数据结构·后端·算法·职场和发展
qw102481 小时前
关于解决springcloud 创建bean失败的问题
后端·spring·spring cloud
用户298698530141 小时前
C# Word自动化:轻松插入特殊符号,告别手动烦恼!
后端·c#·.net