主键(PK)在关系理论中不起作用。(例如完整性或规范化。)PK只是您决定称为“主”的某个候选密钥(CK)。外键(FK)引用CK。当一个表具有多个CK且另一表引用了一个恰好不是PK的表时,您仍应声明FK。DBMS可以将PK声明用于其他目的。
在SQL中,UNIQUE NOT NULL声明声明一个超键。CK是一个超级键,其中不包含更小的超级键。SQL PK声明声明了UNIQUE NOT
NULL约束,因此它实际上声明了一个超键。SQL FK声明实际上声明了一个外部超键:引用列列表引用PK或UNIQUE NOT NULL声明中的列列表。
FK或外来超键表示源表的子行必须显示为引用表的子行。如果是这样,并且不是先前FK声明的结果,则声明FK。
例如:化学元素表应合理地包含三个CK:名称,符号和原子序数。只能是PK。但是,无论何时任何列出现在另一个表中,都应为其声明FK。如果同时出现多个引用同一元素的内容,则它们应构成一个复合FK。(并且每个FK声明都是多余的。)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)