聊一聊项目中的软删除

简介: 聊一聊项目中的软删除

有许多程序员,在知道一个所谓的概念之后,就非得将这个概念强加到自己的项目中

就比如今天说的软删除,随随便便的一个数据表,都是加软删除.那么真的有必要吗?软删除的应用场景在哪?

什么是软删除

在我们之前写程序的时候,经常需要删除一条记录,删除语句则是:

delete from table where condition=conditionValue

这个时候,在数据库中是真正意义上的删除,你没法再通过select语句查出来,而这个做法,就叫硬删除

回到刚刚那个的逻辑,假设有一个商品表,订单表,订单表关联了商品id

这个时候,需要删除这个商品,如果直接数据库删除的话,将导致订单表查不出商品信息,这个时候

我们可以给商品表增加一个 删除标记 isDelete  删除商品数据时,不去执行delete,而是去执行update:

update goods_list set isDelete=1 where goodsId=1

同时,后台商品列表只显示 isDelete=0的商品列表

这个时候,商品列表在项目层不会显示已删除的商品,同时在订单表又能查出相关的商品数据,以便于后期查账等

这个删除方式则叫 软删除

在项目中,软删除和硬删除都意味着是真正的删除,理论上项目不能对已删除的数据做其他操作

在数据库表示层中,硬删除表示真正的删除,软删除则表示记录依然存在,可以用于数据恢复,或者其他业务对账

软删除的应用场景

上面我们知道了软删除的含义,那么什么表有必要增加软删除呢?是不是所有表都可以加上软删除.

所有表都可以加软删除,但是有些表增加软删除并没有意义

只有一些重要数据表,关联表相关才有必要增加软删除功能

例如在商城项目中,

刚刚所说的商品删除,需要拥有关联订单表

用户端删除订单之后,为了做用户数画像,可以做成软删除方便分析数据

用户修改头像之后,也可以保留旧头像做数据分析

日志过期删除之后,没有查看的意义

商城首页的菜单栏删除了,没有恢复的意义

商品分类删除了,完全可以重新增加一个一模一样的,没有恢复的意义

删除后数据还具有意义的数据才需要做软删除功能

软删除衍生

那么,删除后数据还具有意义的就必须做软删除吗?例如刚刚的订单表商品关联的

如果要业务实现完善,理应做订单商品快照,也就是每次下单,都会将商品表的商品数据全部复制一份,关联上订单

这样商品数据真删除了,或者商品修改了信息,订单表也能看到那时候下单时的商品数据,价格等

重要数据需要做好冗余,而不是一味的关联

目录
相关文章
|
3月前
|
缓存 算法 Java
Linux内核新特性年终大盘点-安卓杀后台现象减少的背后功臣MGLRU算法简介
MGLRU是一种新型内存管理算法,它的出现是为了弥补传统LRU(Least Recently Used)和LFU(Least Frequently Used)算法在缓存替换选择上的不足,LRU和LFU的共同缺点就是在做内存页面替换时,只考虑内存页面在最近一段时间内被访问的次数和最后一次的访问时间,但是一个页面的最近访问次数少或者最近一次的访问时间较早,可能仅仅是因为这个内存页面新近才被创建,属于刚刚完成初始化的年代代页面,它的频繁访问往往会出现在初始化之后的一段时间里,那么这时候就把这种年轻代的页面迁移出去
|
3月前
|
算法 安全 数据安全/隐私保护
深入探究一个长期隐藏的底层bug的学习报告
在软件开发的过程中,底层bug往往像一颗定时炸弹,随时可能引发严重的问题。本文将分享我在开发过程中遇到的一个长期未被发现的底层bug,以及我如何逐步排查并最终解决这个问题的全过程。通过这次排查,我深刻认识到了代码规范性的重要性。一个不规范的代码修改,虽然短期内可能不会引起问题,但长期累积下来,可能会引发灾难性的后果。此外,我也意识到了底层模块的通用性和风险意识的重要性。在解决一个问题的同时,应该审视是否有相似的问题存在,以避免未来的风险。
96 3
|
计算机视觉
队列的概念及结构(内有成型代码可供CV工程师参考)
队列的概念及结构(内有成型代码可供CV工程师参考)
63 0
|
Web App开发 安全 Unix
高效率的工作工具(持续更新...)
高效率的工作工具(持续更新...)
212 0
高效率的工作工具(持续更新...)
|
数据挖掘 程序员 数据库
聊一聊项目中的软删除
聊一聊项目中的软删除
249 0
|
SQL 存储 测试技术
|
消息中间件 Kafka
万字长文解析删除Topic流程领导再也不用担心我排查生产环境问题了(附教学视频,建议收藏!!!)
万字长文解析删除Topic流程领导再也不用担心我排查生产环境问题了(附教学视频,建议收藏!!!)
万字长文解析删除Topic流程领导再也不用担心我排查生产环境问题了(附教学视频,建议收藏!!!)
|
SQL 数据管理
好好编程-物流项目16【基础数据-修改和删除】
好好编程-物流项目16【基础数据-修改和删除】
好好编程-物流项目16【基础数据-修改和删除】
|
搜索推荐
搭建相亲源码,小功能有大作用之关注功能
搭建相亲源码,小功能有大作用之关注功能