通过阅读,我了解了什么是好的主键,什么是外键,什么是候选键。
我在几本不同的书和资料中读到:
外键必须指向候选键(或主键)
外键几乎总是指向主键
消息来源的作者总是这样说,“而外键可以指向一个候选键(而不是主键),他们似乎”。
有没有什么例子可以说明为什么您可能选择候选密钥而不是主键?
谢谢你

最佳答案

主键(pks)在关系理论中不起作用。(例如完整性或规范化)pk只是您决定称之为“primary”的候选密钥(ck)。外键(FK)引用CK。当一个表有多个ck,而另一个表引用了一个恰好不是pk的表时,您仍然应该声明fk。dbms可以将pk声明用于其他目的。
在sql中,一个惟一的not null声明声明声明了一个superkey。ck是一个不包含较小超键的超键。sql pk声明声明了一个惟一的not null约束,因此它实际上声明了一个超键。而sql fk声明实际上声明了一个外键:引用列列表引用pk或unique not null声明中的列列表。
fk或foreign超键表示源表的子例程必须显示为被引用表的子例程。如果是这样,而且还不是先前fk声明的结果,那么声明fk。
一张化学元素表应该有三个C:名称、符号和原子序数。只有一个可以PK。但是,当任何列出现在另一个表中时,应该为它们声明fks。如果同时出现多个引用同一元素的元素,则它们应构成复合FK。(和每个的fk声明都是多余的。)

关于sql - 何时应使用指向候选键而不是主键的外键的示例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37097509/

10-13 08:32