为什么要使用外键约束?

时间:2014-05-14 07:37:57

标签: php mysql sql

我正在开发一个PHP应用程序,其中Db设计是由另一个在表之间添加FK约束( On Cascade delete etc )的人创建的。到目前为止,我以前做的是将FK放在另一个表中。例如,我们有两个表:

用户

  • ID
  • 名称
  • CountryID

国家

  • ID
  • 名称

在应用程序级别,我将创建两个单独的INSERT调用。如果存在FK,那么我需要在我的应用程序级别进行哪些更改?

2 个答案:

答案 0 :(得分:1)

在另一个表中创建行之前,您需要确保使用FK引用的行存在。

...但您可能已经这样做,因为这是创建行的逻辑顺序。

答案 1 :(得分:1)

外键强制执行参照完整性 这些约束保证表order_details中的一行与引用orders表的字段 order_id 将永远不会具有在订单表中不存在的 order_id 值。

外键并不需要有一个工作的关系数据库(实际上MySQL的默认存储引擎不支持FK),但它们对于避免破坏关系和孤立行是绝对必要的(即。参照完整性)。在 ACID 中,C需要能够在数据库级别强制实施参照完整性。