178.关系数据库理论基础 (7)

  【例2.2】表2.3所示的学生关系模式student(学号, 姓名, 性别, 专业号)。学号是不允许重复的,如果学号相同的两个学生元组在其他属性上的取值肯定相同,可以推出{学号} →{姓名}, {学号} → {性别}, {学号} → {专业号}。

l  属性间的这种函数依赖关系跟语义有关,它属于语义范畴的概念。

 【例子】 如果不允许出现重名的学生元组,则可以有{姓名} →{学号},进而{学号} ↔ {姓名}。

l  如果属性集是由单个属性构成,标志集合的大括号“{”和“}”可以省略,如“{学号} →{姓名}”可以写成“学号→ 姓名”。

l  注意,在实际数据库开发中,可以从用户提供的需求说明中或是从基本常识中获取函数依赖关系,例如上述“学号→ 姓名”就是一个基本常识。

 

 

 

     定义2.4   设R(U)是属性集U上的一个关系模式,A,B ⊆ U。若A→B是一个函数依赖,如果B→A,则称A→B为一个平凡函数依赖;如果B⊄A,则称A→B为一个非平凡函数依赖。

 

Ø 对于任意B⊆A,显然有A→B,它是一种平凡函数依赖。

【例子】“{学号, 姓名} → 姓名”是一种平凡函数依赖。由于平凡函数依赖没有实际意义,一般不予以讨论,在默认情况下提到的函数依赖均指非平凡函数依赖。

 

     定义2.5   设R(U)是属性集U上的一个关系模式,A, B ⊆ U。若A→B是一个函数依赖,并且对于任意C ⊆ A且C非空,均有C

178.关系数据库理论基础

 B,则称A→B是一个完全函数依赖(Full functional dependency),即B完全函数依赖于A,记为A

178.关系数据库理论基础

B;否则称A→B是一个部分函数依赖(Partial functional dependency),即B部分函数依赖于A,记为A

178.关系数据库理论基础

B。

【例2.3】表2.5所示的选课关系模式SC(学生编号,课程编号,成绩),{学生编号, 课程编号}     成绩,因为学生编号    成绩且课程编号    成绩。又如,表2.3所示学生关系模式student(学号, 姓名, 性别, 专业号),{学号, 姓名}     性别,确实有{学号, 姓名} → 性别,但学号→性别。

Ø 对于函数依赖A→B,如果A只包含一个属性,则必有A

178.关系数据库理论基础

B中,因为这时的A不存在非空真子集。

 

     定义2.6   设R(U)是属性集U上的一个关系模式,A, B, C Í U。若A→B (B⊄A, B  

178.关系数据库理论基础

A),且B→C成立,则称C传递函数依赖于A,记为A 

178.关系数据库理论基础

C。

Ø 注意,此处加上条件B 

178.关系数据库理论基础

  A,是因为如果B→A,则实际上变为A↔B,即A→C,而不是A 

178.关系数据库理论基础

 C。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzfxwz.html