SQL外键约束和悬空元组

SQL外键约束和悬空元组,sql,Sql,外键值不出现在引用关系中的元组称为悬空元组 我在一本书中找到了这个。有人能解释一下吗 如果我们有一个表 CREATE TABLE Studio ( name CHAR(30) PRIMARY KEY, address VARCHAR(255), presC# INT, FOREIGN KEY (presC#) REFERENCES MovieExec(cert#) ); 那么我们就不能添加一个元组,它的presC#在MovieExec中不存在。那么,它们如何获得悬空元组呢?添加外键约束将阻止您

外键值不出现在引用关系中的元组称为悬空元组

我在一本书中找到了这个。有人能解释一下吗

如果我们有一个

CREATE TABLE Studio (
name CHAR(30) PRIMARY KEY,
address VARCHAR(255),
presC# INT,
FOREIGN KEY (presC#) REFERENCES MovieExec(cert#)
);

那么我们就不能添加一个元组,它的
presC#
MovieExec
中不存在。那么,它们如何获得悬空元组呢?

添加外键约束将阻止您创建悬空元组

你理解得对,这本书所讲的是一个概念,在特定的实现中可能被允许,也可能不被允许

如果表之间存在逻辑连接,但数据库上没有定义实际的外键约束(例如,在应用详细键结构之前的临时表中),则可以获得悬空元组。而如果您确实有一个FK约束,并且它实现得很好,那么您就没有了


FK约束就是这样:避免挂起元组的方法。

或者如果您禁用FK一段时间,然后重新启用(不检查平均时间内更新/插入的值)。