1、定义
超键:在关系模式中,能够唯一标识元组的属性集称为超键(super key)。
候选键:在关系模式中,能唯一标识元组并且不包含多余属性的属性集称为候选键。值得注意的是,超键与候选键是有区别的,超键可能含有多余的属性,而候选键不能。
主键:在一个关系的若干个候选键中随意的指定一个作为唯一标识元组的关键字,则此关键字称为主键。
三者之间的关系:
2、举例
例如关系模式学生:
对于学生,(学号、姓名、性别)可以是一个超键,但是不能够是一个候选键,因为学号就能够唯一标识一个学生。
假定姓名没有重名的话,那么(学号)、(姓名)都可以是候选键,如果我们选定学号为唯一标识元组的键,那么学号就是主键。
3、主属性和非主属性
主属性:所有候选键中的所有属性都称为主属性。
非主属性:不包含在任何候选键中的属性称为非主属性。
例如:
4、如何区分超键、候选键和主键
超键中可能包含有无关的属性,我们可以将“超”解释成“多余,赘余“的意思;而主键和候选键中属性都是必要的,缺少任何一属性都不能唯一标识一个元组。
主键它也是候选键的一员,和候选键的区别在于主键是被数据库设计者选定作为标识元组的键。
附:外键
如果关系模式R1中的某属性集不是R1的候选键,而是关系模式R2的候选键,则这个属性集对模式R1而言是外键(forergn key),注意不是对于R2而言的。