登录
首页 >  数据库 >  MySQL

软删除和我们常说的删除

来源:SegmentFault

时间:2023-01-27 14:41:22 466浏览 收藏

小伙伴们对数据库编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《软删除和我们常说的删除》,就很适合你,本篇文章讲解的知识点主要包括MySQL、Java。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

上次在处理项目中的一个异常的时候,定位到异常的位置是删除时候抛出的异常,然后最后的解决办法是使用

@NotFound
注解实现的。然后老师说这是一种
软删除
。当时只是大概知道什么意思,但是并不清楚到底是什么东西。今天简单学习了下。

什么是软删除

软删除
又叫
逻辑删除
标记删除
,与我们常说的删除不同,并不是真的从数据库中将这条记录去除,而是会设置一个字段,比如:
isDelete
来标记删除状态。

那就会产生下一个问题,为什么要有软删除呢?为什么不直接删除呢?

为什么会有软删除

在现实情况中,很多时候我们说的删除并不是真的是删除的本意,因为站在用户的角度来看,并不是一种删除的状态:

  • 订单不是被删除的,是被“取消”的。
  • 员工不是被删除的,是被“解雇”的(也可能是退休了)。
  • 职位不是被删除的,是被“填补”的(或者招聘申请被撤回)。

所以这些时候,我们并不能真的把记录删除,所以软删除就出现了。

当然,我们更希望用一下代表状态的词来代替

isDelete
,就比如我们项目中已经使用的:有效、停用、弃用等等。

与硬删除的比较

虽然

软删除
比较好,它能保证数据的完整性,但并不表示我们任何时候都要使用
软删除
。当我们确定某些数据真的不需要的时候,
硬删除
就成了必须。比如验证码。这种数据删除后就没有必要保存了。

总结

项目中的问题,本来的逻辑是清空原始数据,然后重新计算,再存入数据库中,所以这时使用了

删除
,数据库中就不应该存在那些数据,所以确实不应该使用
软删除
,还是应该使用常说的
硬删除

友情链接:http://xingaiming.com/2015/12/db_design_dont_delete_data/

到这里,我们也就讲完了《软删除和我们常说的删除》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于mysql的知识点!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>