定义2.5 设R(U)是属性集U上的一个关系模式,A, B ⊆ U。若A→B是一个函数依赖,并且对于任意C ⊆ A且C非空,均有C B,则称A→B是一个完全函数依赖(Full functional dependency),即B完全函数依赖于A,记为AB;否则称A→B是一个部分函数依赖(Partial functional dependency),即B部分函数依赖于A,记为AB。
【例2.3】表2.5所示的选课关系模式SC(学生编号,课程编号,成绩),{学生编号, 课程编号} 成绩,因为学生编号 成绩且课程编号 成绩。又如,表2.3所示学生关系模式student(学号, 姓名, 性别, 专业号),{学号, 姓名} 性别,确实有{学号, 姓名} → 性别,但学号→性别。
Ø 对于函数依赖A→B,如果A只包含一个属性,则必有A B中,因为这时的A不存在非空真子集。
定义2.6 设R(U)是属性集U上的一个关系模式,A, B, C Í U。若A→B (B⊄A, B A),且B→C成立,则称C传递函数依赖于A,记为A C。
Ø 注意,此处加上条件B A,是因为如果B→A,则实际上变为A↔B,即A→C,而不是A C。
【例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。