我有一个 users 表,该表具有 user_id 作为主键,并且在其他40个表中使用约50张桌子 在使用 user_id 的每个表中,是否有必要将 user_id 列定义为外键? / p>
答案 0 :(得分:3)
这取决于。 RI / FK是在v7中的Oracle中引入的,因此,数据库无疑是在没有它们的情况下存在的,有些仍然存在。但是,通常在基本“免费”进行检查的情况下定义并启用这些功能。
在某些特殊情况下,您可能不想使用它们。我在一个低延迟系统上工作,速度就是一切,而不能保证将父/子数据从应用程序管理层发布到数据库的顺序。在这种情况下,我们发现在应用程序管理层中构建完整性规则更快。正如我说的,在其他地方很少见到的专家案例会使纯粹主义者吐血,但效果很好,并且十多年来一直是成功的系统。
但是,我再次强调,FK / RI总体上是不错的,我想反驳你说“我什么时候应该考虑没有FK?”。
根据我的经验,您最常见的是开发人员完全出于懒惰而缺少这些内容。
答案 1 :(得分:1)
这不是必需的,但是要保持数据完整性,这是必需的。 许多数据库都使用它来更快地查找数据。这是一个好习惯。