【例2.4】 对于关系模式—分班(学号, 班级号, 班长),容易知道学号→ 班级号,班级号→ 班长,又因为班级号
学号,于是学号 班长。
• 2.4.2 候选码和主码
定义2.7 在关系模式R(U)中,假设A ⊆ U,如果A U,则A称为关系模式R(U)的一个候选码;候选码可能有多个,从候选码中选择一个用于唯一标识关系中的每一个元组,则该候选码称为主码(Primary key)。
Ø 含在任何候选码中的属性称为主属性(Prime attribute),不包含在任何码中的属性称为非主属性(Nonprime attribute)。通常将主码和候选码都简称为码。最简单的情况,单个属性构成码;最极端的情况,一个关系模式的所有属性构成码,称为全码(All key)。
Ø 对于候选码和主码,需要说明几点:
• 为正确理解候选码A,应该紧紧抓住其以下两个特性:
A可以函数决定U,即A→U。
A具有极小性,即A的任何真子集都不可能函数决定U。
• 候选码可能有多个。如果有多个候选码,则它们的地位是平等的,任何一个都可以被设置为主码。在应用当中,一般是根据实际需要来将某一个候选码设置为主码。
定理2.1 在关系模式R(U)中,对任意A, B ⊆U且A ∪ B = U,如果A B,则有A U,从而A是关系模式R(U)的一个候选码。
【例2.5】 考虑如表2.16所示的学生成绩关系模式,其中U = {学号, 姓名,系别,成绩}。对于属性“学号”,容易验证:学号 {姓名,系别,成绩},而{学号}∪{姓名,系别,成绩} = U。根据定理2.1,“学号”是学生成绩关系模式的一个候选码。
• 2.4.3 函数依赖的性质(Armstrong公理系统)
Ø 1974年Armstrong首次提出了这样的一套推理规则,由此构成的系统就是著名的Armstrong公理系统。
Ø 在关系模式R(U)中,假设A, B, C, D为U的任意子集。在Armstrong公理系统中,基于函数依赖集F的推理规则可以归结为以下3条:
ü 自反律:若C ⊆ B,则B→C为F所蕴含(平凡函数依赖)。
ü 增广律:若B → C为F所蕴含,则B∪D→C∪D为F所蕴含。
ü 传递律:若B→C且C→D为F所蕴含,则B→D为F所蕴含。
Ø 基于上述的推理规则,进一步得到下列的推理规则:
ü 自合规则:B→B。
ü 合并规则:若B→C且B→D,则B→C∪D。
ü 分解规则:若B→C∪D,则B→C且B→D。
ü 符合规则:若A→B且C→D,则A∪C→B∪D。
ü 伪传递规则:由B→C,A∪C→D,有A∪B→D。
定理2.2 在关系模式R(U)中,B及B1, B2,…, Bn是U的子集,则B→B1∪B2∪…∪Bn成立的充分必要条件是B→Bi成立,其中i = 1,2,…,n。
2.5 关系模式的范式