Sql 级联软删除的原因

Sql 级联软删除的原因,sql,database,database-design,relational-database,soft-delete,Sql,Database,Database Design,Relational Database,Soft Delete,在关系数据库中,使用软删除似乎很常见。我的思考是,是否真的有必要级联这些删除?我想知道的原因是,在我看来,级联软删除不会添加任何附加信息 也就是说,假设我们有一个表MainContract和一个表ServiceContract,其中关系是一对多。假设我们软删除主合同,但忽略这样做,让我们假设三个服务合同都属于此主合同 如果我们在DB中查询未删除的ServiceContract,我们可以轻松地检查拥有ServiceContract的MainContract是否已删除 通过思考,我意识到这里的设计选

在关系数据库中,使用软删除似乎很常见。我的思考是,是否真的有必要级联这些删除?我想知道的原因是,在我看来,级联软删除不会添加任何附加信息

也就是说,假设我们有一个表MainContract和一个表ServiceContract,其中关系是一对多。假设我们软删除主合同,但忽略这样做,让我们假设三个服务合同都属于此主合同

如果我们在DB中查询未删除的ServiceContract,我们可以轻松地检查拥有ServiceContract的MainContract是否已删除

通过思考,我意识到这里的设计选择可能取决于我们是否会经常删除,或者我们是否需要浏览大量历史记录

如果我们经常删除,但不需要经常检查历史记录,那么最好使用简单的删除方法(而不是级联软删除)。另一方面,如果我们需要经常检索历史记录,那么实现级联删除是值得的,这样我们就不需要那么复杂的查询了

然而,在关系数据库中,行本身通常没有意义。因此,在任何情况下,我们都需要在“树上”进行连接,以使行有意义。例如,如果不知道ServiceContract所属的MainContract,ServiceContract可能不会提供任何有意义的信息


有人对此有什么想法吗?有人使用过这两种方法中的任何一种或两种吗?

这些类型的问题——试图就一种方法的优点/缺点展开讨论——在StackOverflow这里都是离题的。一些通用的编程论坛更合适。