超键(英语:superkey),有的文献称“超码”,是在数据库关系模式设计中能够唯一标示多元組的属性集。
包含所有屬性的集叫做明顯超鍵。
候选键或候选码(英语:candidate key)是某个关系变量的一组属性所组成的集合,它需要同时满足下列两个条件:
满足第一个条件的属性集合称为超键,因此我们也可以把候选键定义为“最小超键”,也就是不含有多余属性的超键。
候选键的重要性是它们能够在关系中唯一标识出不同的元组,因此超键也是在设计数据库模式时需要指定的最重要的约束之一。由于在关系模型中,每个关系都是一个集合(没有重复的元素),所以每个关系都至少有一个候选键(因为所有属性组合必然是个超键)。但是在某些关系型数据库中表也能代表多重集,所以在每个关系中都显式地定义至少一个候选键是一条很重要的设计原则。数据库管理系统通常都需要将每个关系中的某个候选键定义为主键,亦即这个候选键是区分不同元组时首选的识别方式,例如外键通常就是引用主键而非其他候选键。
主键,又称主码(英语:primary key或unique key)。数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。
从技术的角度来看,primary key和unique key有很多相似之处。但还是有以下区别:
- 作为primary key的域/域组不能为Null。而unique key可以。
- 在一个表中只能有一个primary key,而多个unique key可以同时存在。
- 更大的区别在逻辑设计上。primary key一般在逻辑设计中用作记录标识,这也是设置primary key的本来用意。而unique key只是为了保证域/域组的唯一性。
外鍵(英语:foreign key,中国大陆译作外码,台湾译作外来键),又称外部鍵。其实在關聯式資料庫中,每個資料表都是由關聯來連繫彼此的關係,父資料表(Parent Entity)的主鍵(primary key)會放在另一個資料表,當做屬性以建立彼此的關聯,而這個屬性就是外來鍵。
比如,學生跟老師之間是教學的關聯,學生資料表會有個屬性叫指導老師(FK),而這個值就是對應到老師資料表的老師代號(PK),學生的指導老師就是外來鍵。
資料庫理論中, 超鍵、候選鍵與主鍵之間的關係:
• 候選鍵是超鍵的一種:不含有多餘屬性的超鍵
• 某個候選鍵被選為主鍵
参考链接: