级联软删除的原因

时间:2013-10-22 16:04:08

标签: sql database database-design relational-database soft-delete

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

即。假设我们有一个表MainContract和一个ServiceContract表,其中关系是一对多的。假设我们软删除MainContract但忽略这样做,让我们说三个ServiceContracts都属于这个MainContract。

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

只是制定思考让我意识到这里的设计选择可能取决于我们是否更有可能经常删除,或者我们是否需要在历史记录中浏览很多。

如果我们经常删除但不需要经常查看历史记录,最好采用简单的删除方法(不要级联软删除)。另一方面,如果我们需要经常检索历史记录,则可能值得实现级联删除,以便我们需要更少的复杂查询。

但是,在关系数据库中,行本身通常没有意义。所以在任何情况下我们都需要加入"在树上#34;为了让一行有意义。例如,ServiceContract可能无法在不知道它属于哪个MainContract的情况下提供任何有意义的信息。

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

0 个答案:

没有答案