第三节 候选关键字与主属性
一、候选关键字
在前面我们曾给关键字定义:在关系R中,如属性(组)X能唯一地标识一条记录,则X称为关系R的关键字,显然这个定义是不严密的。从前面例中我们看到“课程号+课程名”能唯一标识一条记录, 因为课程号就能唯一标识一条记录,课程号是关键字,课程号与课程名的集合不是关键字。
关键字的更严密定义是:在关系R中如记录完全函数依赖于属性(组)X,则称X为关系R中的一个候选关键字。
在表l.2中,“系代码”是关系“系”的候选关键字,表l.4中“职工号”是关系“教师”的候选关键字。在表1.7“成绩”关系中,“学号+课程号”是候选关键字。
候选关键字有如下性质:
.在一个关系中, 候选关键字可以有多个。例如表1.6的系关系中,系号、系名都是候选关键字。
.任何两条记录候选关键字值都是不相同的,因为若有两条记录候选关键字的值相同,它和记录的关系就不是决定因素。在实际应用中,只有在任何情况下值皆不重复的属性(组)才有可能是候选关键字。由于同名同姓的人很多,在人事管理中,姓名一般不是候选关键字,我们需要设计代码例如“职工号”作为人事关系的关键字。
.关键字可能由一个属性构成,也可能由多个属性构成。关键字不可能再与其他的属性构成新的候选关键字。我们分析一个关系中有哪些候选关键字时,一般首先一个个属性逐一分析判断,再两两判断,三三判断……。
.在任何关系中至少有一个关键字。因为根据关系的基本要求,在一个关系当中任何二个元组不全同。 因而在一个N元关系当中如单个属性都不是关键字,任何两个属性的属性组也不是关键字,任何K(K<N)个属性的属性组都不是关键字,则该关系全部属性构成的属性组是其关键字。
二、主属性在一个关系中,如一个属性是构成某一个候选关键字的属性集中的一个属性,则称它为主属性。如一个属性不是构成该关系任何一个候选关键字的属性集的成员,就称它为非主属性。例如表1.7中,“学号+课程号”是关键字,那么“学号”是主属性,“课程号”是主属性,分数是非主属性。