数据库软删除php,聊一聊项目中的软删除

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

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

什么是软删除

在我们之前写程序的时候,经常需要删除一条记录,删除语句则是:delete from table where condition=conditionValue

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

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

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

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

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

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

这个删除方式则叫软删除

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

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

软删除的应用场景

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

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

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

例如在商城项目中,

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

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

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

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

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

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

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

软删除衍生

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

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

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

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

本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值