【候选码与主码】
设 $K$ 是 $R < U,F >$ 中的属性或属性组合,若 $K\xrightarrow{F} U$,则称 $K$ 为 $R$ 的候选码(Candidate Key),若候选码多于一个,则选定其中一个为主码(Primary Key)
例如,在关系模式 student(Sno, Sname, Sage)
中,Sno
是可以唯一标识一个元组的,同样的 (Sno, Sage)
也可以唯一标识一个元组,但这个组合不能称为候选码,因为即使去掉 Sname
属性,剩下的 Sno
也完全可以唯一标识一个元组
简单来说,候选码就是可以唯一标识一个元组的最少的属性集合
【主属性与非主属性】
包含在任何一个候选码中的属性称为主属性(Prime Attribute),不包含在任何码中的属性称为非主属性(Non-prime Attribute)或非码属性(Non-key Attribute)
简单来说,一个表可以有多个候选码,对于某个属性来说,如果这个属性存在于所有的候选码中,那么这个属性就是主属性;反之,如果一个属性不在任何码中,那么这个属性就是非主属性
【全码】
最简单的情况下,单个属性为码;最极端的情况下,整个属性组为码,称为全码(All-key)
例如,在选课关系模式 SC(Sno, Cno)
中,(Sno, Cno)
共同标识一个元组,那么 (Sno, Cno)
即为全码
【外码】
关系模式 $R$ 中属性或属性组 $X$ 并非 $R$ 的码,但 $X$ 是另一个关系模式的码,则称 $X$ 是 $R$ 的外码(Foreign Key)
由此,关系间的联系可以通过主码与外码联系
例如,在 SC(Sno, Cno, Grade)
中,(Sno, Cno)
是主码,而 Sno
不是码,但在 student(Sno, Sname, Sage)
中,Sno
是主码,因此 Sno
是关系模式 SC
的外码