是否真的需要在使用它的所有表中将列定义为外键?

时间:2018-12-24 13:52:16

标签: mysql database oracle postgresql db2

我有一个 users 表,该表具有 user_id 作为主键,并且在其他40个表中使用约50张桌子 在使用 user_id 的每个表中,是否有必要将 user_id 列定义为外键? / p>

2 个答案:

答案 0 :(得分:3)

这取决于。 RI / FK是在v7中的Oracle中引入的,因此,数据库无疑是在没有它们的情况下存在的,有些仍然存在。但是,通常在基本“免费”进行检查的情况下定义并启用这些功能。

在某些特殊情况下,您可能不想使用它们。我在一个低延迟系统上工作,速度就是一切,而不能保证将父/子数据从应用程序管理层发布到数据库的顺序。在这种情况下,我们发现在应用程序管理层中构建完整性规则更快。正如我说的,在其他地方很少见到的专家案例会使纯粹主义者吐血,但效果很好,并且十多年来一直是成功的系统。

但是,我再次强调,FK / RI总体上是不错的,我想反驳你说“我什么时候应该考虑没有FK?”。

根据我的经验,您最常见的是开发人员完全出于懒惰而缺少这些内容。

答案 1 :(得分:1)

这不是必需的,但是要保持数据完整性,这是必需的。 许多数据库都使用它来更快地查找数据。这是一个好习惯。