4

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

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

如果我们在数据库中查询未删除的 ServiceContract,我们可以轻松检查拥有该 ServiceContract 的 MainContract 是否已删除。

光是构思,就让我意识到,这里的设计选择,或许取决于它是否更可能被我们经常删除,或者我们是否需要在历史记录中大量浏览。

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

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

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

4

0 回答 0