使用“软删除”来删除数据库中的数据

数据库设计原则:应该使用删除吗? 数据库设计中,当删除一条记录的时候,是加一个标记位还是直接删除这一行? 物理删除:真删除数据消失。 逻辑删除:假删除数据存在,只是用一个字段来标记该条数据“已删除”。 参考了一些网络上的讨论如下: 关于soft delete的好处,justjavac的介绍很棒。 不过是否应该使用soft delete,还是需要慎重考虑。 在关系型数据库中,删除(soft delete)主要影响的是wri... 阅读详情

近日在infoq上读到一篇关于从数据库表中删除数据时应该采取的策略,原文地址如下:

 

Deleting Data Is Not a Recommended Practice

 

读后颇有感悟,所谓软删除(Soft Deleting),即在删除数据表中的数据时,并不直接将其从数据表中删除,而是将其标志为删除,即在每张表中设置一个删除字段(如:IsDeleted)等,默认情况下其值为0,及未删除状态;当需要将数据删除时,则将此字段更新为1。

 

与之对应的,将数据从数据库中彻底删除的方式称为硬删除,即Hard Deleting

 

当然,文中提到了另一种方法,及为数据添加状态字段(如:Statuses)等,来描述当前数据的状态,以便更好地跟踪数据。

 

联想到之前开发的招聘网站的项目中,就有这样一个需求:

1)企业可以发布、删除招聘信息;

2)用户可以收藏招聘信息;

3)用户可以申请招聘信息的职位;

 

显然,其中对于招聘信息这样的数据,在删除时采用软删除的方案是非常合适的,这样数据本身依旧是完整的,只是对于用户查看那些被删除了的招聘信息时,需要在业务层做一些对应的处理即可。

 

毕竟,不能因为企业删除了招聘信息,就把用户收藏的信息也一并删除,从而造成用户使用上的困扰。

创建和删除数据库 7.1 创建数据库 在MySQL中创建数据库比较简单,使用的是CREATE DATABASE语句,本节简单介绍如何在MySQL中创建数据库。 7.1.1 使用CREATE DATABASE语句创建数据库 1.语法格式 创建数据库的语法格式如下: CREATE DATABASE database_name ... 阅读详情

相关推荐

mongoose-softdelete:删除MongoDB文档

猫鼬删除插件 Mongoose插件,可以删除模型/文档。 这个插件是基于的工作。 有什么不同 在原始插件中,仅使用日期参考删除了模型。 该版本采用了该版本,并使用布尔标志来标记已删除/已恢复的模型。 添加deletedAt字段以记录删除文档的时间。 此外,它从原始代码中消除了很多开销,并且不使用Coffeescript。 还可以检出 。 执照 该插件已获得MIT许可,并可以在LICENSE文件中查看。 安装 使用安装 npm install mongoose-softdelete --save 测验 重要提示:您需要运行MongoDB才能运行测试 npm test 用法 模型/ tes

删除数据job笔记

某次处理一个case,发现线上库里有很多数据有问题。于是决定写一个job来将有问题的数据删除掉。涉及到的两条SQL语句如下: <select id="loadTSKTVBillDailyFlowData" parameterClass="map" resultClass="tsKTVDailyFlowData"> /*+zebra:w*/SELECT ID, ...

G19931112的博客 189

Mysql删除

所谓删除(Soft Deleting),即在删除数据中的数据时,并不直接将其从数据删除,而是将其标志为删除,即在每张中设置一个删除字段(如:IsDeleted)等,默认情况下其值为0,及未删除状态;当需要将数据删除时,则将此字段更新为1。 与之对应的,将数据数据库中彻底删除的方式称为硬删除,即Hard Deleting 当然,文中提到了另一种方法,及为数据添加状态字段(如:Stat

付博瀚 4715

数据库垃圾回收相关拾遗

回滚 3.数据流具有原子性,即pipleine 4.lua命令具有原子性 数据库的悲观锁和乐观锁 1.悲观锁也可以称作独占锁,如果是主键查询可以对单行加锁,否则是对整个加锁,这样回导致程序不断的挂起,释放,高并发下很耗费系统资源 2.乐观锁:乐观锁即先保存数据的旧值,修改的时候先和旧值比较,如果相同则更新,否则回滚,这样存在两个问题, A)ABA问题,即县城1再t1时刻保存了A的旧值,在线程1修改A之前,线程2先把A的值改为了B ,然后又改为了A,这样虽然比较相同,但是已经不是原

dw147258dw的专栏 315

数据库优雅地实现删除

一提到删除, 大家一定会说到, isDeleted这个字段, 或者叫status,关于这个可以看一下其他博友的文章 但是这种设计真的好吗, 其实针对不同的场景, 我们可以采用不同的设计方案来减少设计的复杂度。 考虑下面的场景: 你是后台API提供方, 调用者每天会定时向你发送一批全量数据, 这些数据每天都会有一定的差别, 比如新增了xx新的记录, 减少了xx条老的记录, 还有

zhwbqd的专栏 9846

FreeSql (九)删除数据

删除是一个非常危险的操作,FreeSql对删除支持并不强大,仅支持了单有条件的删除方法。 不想过多的介绍拉长删除数据的系列文章,删除数据的介绍仅此一篇。 若Where条件为空的时候执行方法,FreeSql仅返回0或默认值,不执行真正的SQL删除操作。 为了增强系统的安全性,强烈建议在实体中增加 is_deledted 字段做删除标识。 var connstr = "Data Sour...

weixin_30882895的博客 672

database.db 文件详解:数据库文件在 SQLite 中的作用与使用

本文解析了Python项目中自动生成的database.db文件的作用和使用方法。该文件是SQLite数据库的默认存储文件,包含结构、数据记录和索引等信息。文章详细介绍了SQLite的存储原理、查看和操作方法(命令行与可视化工具)、备份策略及常见问题解决方案,并强调数据库管理需严谨,避免数据丢失。掌握.db文件的特性能帮助开发者更高效地进行项目调试和数据库维护。

聚焦学生开发者需求,分享课设毕设项目实战经验、系统开发技巧、数据库设计规范及文档排版实用方法。 2204

大幅提升数据库删除性能丨DolphinDB 删除功能详解

删除(Soft Delete)是一种在数据库中处理数据删除的方法,这种删除方式并不是直接从数据库中移除数据,而是通过特定的标记方式在查询的时候将此记录过滤掉,在后台合并数据文件时才真正删除数据。相对于硬删除(Hard Delete),即直接从数据库中永久删除数据删除以追加方式进行数据删除,可大幅度提升列式数据库删除的效率。 自 DolphinDB 2.00.11版本起,Server 中已开始支持删除功能。实现原理详情&应用场景&性能测试案例,点击了解更多!

DolphinDB智臾科技 1735

DB LINK的创建使用删除

创建DB LINK 前提:当前用户有权限可以创建DB LINK,并且在你要连接的数据库上要有创建会话的权限。 在最高权限下授予你要使用的用户创建DB LINK的权限 创建当前用户的DB LINK GRANT CREATE DATABASE LINK TO USER; 创建公共的DB LINK GRANT PUBLIC DATABASE LINK TO USER; 直接使用PL SQL创建DB ...

qq_849405799的博客 1467

什么是数据库删除,什么场景下要用删除?(go GORM硬删除)

使用的是 GORM,默认启用了删除功能,即通过将 deleted_at 字段设置为非空来标记删除的记录。这就是为什么在执行 db.Delete(&image) 后,实际上只是更新了 deleted_at 字段而不是真正删除记录。

西京刀客 1945

删除和硬删除是什么?

今天在进行后端代码维护的时候,有一条数据怎么也删除不了,在MySQL里面一直存在。我旁边的同事随口说了一句,你看看是不是删除的缘故导致MySQL里面的数据一直删除不了。之后在我搜索对应资料之后才知道删除以及对应的硬删除是什么。以下是我对删除和硬删除的理解,如果不对,恳请斧正。删除非常适用于需要保留数据历史、支持数据恢复、符合合规要求或具有审计需求的场景。它为系统提供了更多的灵活性和安全性,避免了数据的彻底丢失。在很多数据敏感的业务中,删除是一个非常实用的功能。

weixin_59299686的博客 2080

MySQL删除数据库(DROP DATABASE语句)

在 MySQL 中,当需要删除已创建的数据库时,可以使用DROP DATABASE或DROP SCHEMA语句。其语法格式为: DROP DATABASE [ IF EXISTS ] <数据库名> 语法说明如下: <数据库名>:指定要删除数据库名。 IF EXISTS:用于防止当数据库不存在时发生错误。 DROP DATABASE:删除数据库中的所...

MYSQL安装教程 2283

Sql server 使用drop database 语句,无法删除正在使用数据库的解决办法

使用DROPDATABASE删除数据库显示“无法删除数据库,因为该数据库当前正在使用。 解决办法:在删除某一个数据库(下例中的“DB1”数据库)前,强制kill掉该数据库上的所有数据库连接。 无法删除数据库 "#Test",因为该数据库当前正在使用 --查询分析器中执行下面的语句就行了. use master go declare @db...

1988

用”删除“来删除数据库中的数据

一.删除:(Soft Deleting),即在删除数据中的数据时,并不直接将其从数据删除,而是将其标志为删除,即在每张中设置一个删除字段(如:IsDeleted)等,默认情况下其值为0,及未删除状态;当需要将数据删除时,则将此字段更新为1。 在现实中,我们所说的删除并不是真正的做删除,往往我们在数据库删除掉一些数据后,想要恢复就会很难,这样的话用到删除再次查看就会方便很多。 例如:公司“解雇”了一名员工,而不是删除了员工; 公司“取消”了订单,而不是删除了订单; 公司“停用”了一台设备

万事胜意 2020

MySQL数据库操作-删除数据库 (DROP DATABASE)

数据库不再使用时应该将其删除,以确保数据库存储空间中存放的是有效数据删除数据库是将已经存在的数据库从磁盘空间上清除,清除之后,数据库中的所有数据也将一同被删除删除数据库 在 MySQL中,当需要删除已创建的数据库时,可以使用 DROP DATABASE 语句。其语法格式为: DROP DATABASE [ IF EXISTS ] <数据库名> 语法说明如下: <数据库名>:指定要删除数据库名。 IF EXISTS:用于防止当数据库不存在时发生错误。 DROP DATAB

Johnny's Lab 3万+

MySQL之删除数据库(DROP DATABASE语句)

语法 当要删除已有的数据库时,可以使用DROP DATABASE语句,语法格式为: DROP DATABASE [IF EXISTS]<数据库名> <数据库名>:指定要删除数据库名 IF EXISTS :用于防止当数据库不存在时发生错误 DROP DATABASE :删除数据库中所有格并同时删除数据库,要使用DROP DATABASE,需要获得数据库DROP权限。 ...

qq_38523616的博客 2383

技术知识库:数据库中的删除删除详解

数据库管理中,数据删除操作是日常开发中不可或缺的一部分。本文将深入探讨两种主要的删除策略:硬删除(Hard Delete)和删除(Soft Delete),分析它们的实现方式、适用场景以及优缺点。 ## 硬删除(Hard Delete) ### 基本概念 硬删除数据库中最直接的删除方式,它使用标准的SQL DELETE语句将数据数据库中永久移除。这种删除方式的特点是: - 数据被...

gitblog_00418的博客 651
上一篇: 基于文档的新一代数据库系统——CouchDB
下一篇: 各软件公司面试题汇总(持续更新中……)
kurobane
博客等级 码龄17年 49粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值