聊一聊项目中的软删除

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

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

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

什么是软删除

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

delete from table where condition=conditionValue

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

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

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

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

update goods_list set isDelete=1 where goodsId=1

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

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

这个删除方式则叫 软删除

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

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

软删除的应用场景

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

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

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

例如在商城项目中,

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

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

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

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

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

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

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

软删除衍生

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

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

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

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

目录
相关文章
|
缓存 测试技术 编译器
[Eigen中文文档] 稠密矩阵分解函数对比
本文介绍了 Eigen 为各种方阵和过约束问题提供的稠密矩阵分解的速度比较。
285 0
|
6月前
|
搜索推荐 API 开发者
京东商品详情优惠券API接口全攻略
京东商品详情优惠券API接口为电商开发者和商家提供了精准查询、获取详细信息及实时监测优惠券状态的功能。通过商品ID,可筛选出特定商品的定向或店铺通用优惠券,获取面额、使用门槛、领取条件等详尽信息,并监测优惠券的领取情况。该接口支持多种筛选参数,满足个性化需求,助力电商业务拓展与创新。示例代码展示了如何使用Python调用此接口,实现优惠券信息的高效获取。
487 23
|
Java API Spring
spring boot中Excel文件下载踩坑大全
spring boot中Excel文件下载踩坑大全
2314 2
spring boot中Excel文件下载踩坑大全
|
关系型数据库 MySQL 应用服务中间件
Docker 镜像的创建(二)
Docker 镜像的创建(二)
|
缓存 中间件 Go
快速上手golang(持续更新)
快速上手golang(持续更新)
|
存储 JSON API
批量采集抖音商品详情数据:推荐你使用API(通过商品id取商品详情商品主图sku属性)
批量采集抖音商品详情,建议使用API接口。步骤包括:注册抖音开放平台获取App Key和Secret,调用商品详情API接口传入商品ID及相关参数,解析返回的JSON获取商品信息(如名称、价格、主图和SKU)。此外,接口列表提供商品搜索、销售量查询、历史价格、订单管理等多种功能。已封装的API接口地址:c0b.cc/R4rbK2,可测试并联系获取SDK文件。
1155 1
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的员工信息管理系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的员工信息管理系统附带文章和源代码部署视频讲解等
82 3
|
监控 小程序 开发者
【小程序质量提优解决方案】(一)页面不存在
【小程序质量提优解决方案】(一)页面不存在
432 11
|
开发者 iOS开发
苹果证书p12和描述文件的创建方法
新建证书完成后另存文件保存下来,证书就已经制作好了,点击另存到想要保存的位置就好了。 如果出现如下错误,是因为已经制作了两个发布类型的证书了,不能再制作了。
|
SQL 存储 大数据
数仓的建模和BI的建模有啥区别? by彭文华
数仓的建模和BI的建模有啥区别? by彭文华