我知道外键是一个约束,引用是一个子句。
This also confuse me.Although it is mysql but not apache derby
但是我的问题是,如果您可以创建具有引用列的表到另一个表而不使用外键的表,那有什么意义呢? 下面的命令仍然有效
create table newTable(ColumnName varchar(100) references oldTable(ColumnName))
the foreign key example at the bottom of this document use foreign key to make references
任何人都可以帮我解决一下,将带有外键的引用与不使用外键的区别
答案 0 :(得分:2)
“外键”是引用表的属性集。 (在许多实现中,人们不得不说“属性的有序集合”,因为许多实现也使顺序很重要,但这与理论背道而驰。)
参照完整性约束是这样的规则,即在[引用表中]外键属性中出现的[组合]值必须在[属性]中的键属性中显示为[组合]值。参考表]。 (“键属性”是符合关系理论的术语“键”的用法。它们可能是通过UNIQUE子句而不是KEY子句声明的,但这只是语法。从理论上讲,所有声明为唯一是关键。)
“ REFERENCES”子句是声明引用完整性约束的[最流行/最常用]手段。这是一种句法手段。它始终包含外键的规范,但此外,它还定义了引用表及其引用的属性。
由于非常罕见,因此基于 SAME 外键存在两个不同的参照完整性约束(例如,指向两个不同的引用表),因此使用所有这些术语是很常见的可以互换。