数据库中的所有表都应该相关还是可以保留其中的一些表?

Should all tables be related in a Database or Is it ok to leave some of them?

我们经常会遇到一些无关紧要的(有争议的)小表格,这些表格被单独放置。尽管它们在联接中使用(很少),但开发人员仍然懒得将它们关联起来。

可能引用过多导致插入速度变慢。

这导致了这个问题: 作为经验法则,我们应该关联数据库中的所有表吗?如果不是,那么在哪里画线?

谢谢

外键并不总是对性能产生负面影响,它们也可能产生积极影响。数据库关系不仅仅确保参照完整性,它们还有助于让 SQL 服务器了解数据的性质。两个字段相关的事实可以提供有关查询基数的线索,因此优化器在估算查询成本时实际上会考虑这些关系。

在我看来,如果两个字段在您的数据库中相关,则它们应该具有定义的关系。通常,您可以向 SQL 服务器传授您的数据(不仅是关系,还包括 CHECK 约束)越多,生成高效查询计划的效果就越好。当然,就像 SQL 服务器中的任何内容一样,规则也有例外,但如果你想要一个经验法则,我会倾向于定义所有关系。