规范化数据库

函数依赖

函数依赖的定义:
设R(U)是属性集合U={A1,A2,…,An}上的一个关系模式,X,Y是U上的两个子集,若对R(U)的任意一个可能的关系r,r中不可能有两个元组满足在X中的属性值相等而在Y中的属性值不等,则称“X函数决定Y”或“Y函数依赖X”,记作X->Y
函数依赖通常是对两个属性或者两个属性组之间的依赖关系。
示例:U={学号,姓名,年龄,班号,班长,课号,成绩}

  • 学号->{姓名,年龄}
    如果学号相同的话,姓名和年龄也一定是相同的,这就说明学号可以决定姓名和年龄,或者说姓名和年龄依赖于学号

说明:函数依赖的分析取决于对问题领域的限定和分析,取决于对业务规则的正确理解。例如:问题领域中,学生是没有重名的,则有:“年龄”和“家庭住址”都函数依赖于“姓名”。而在另一个问题领域中,学生是有重名的,则上述函数依赖是不成立的。
所以函数依赖是一种对问题领域理解得到的对数据取值之间的约束关系。
设计关系模式时,除给出属性全集外,还需给出这个属性上的函数依赖的集合。

示例:
规范化数据库_第1张图片

函数依赖的特性:
1)对X->Y,但Y不属于X,则称X->Y为非平凡的函数依赖
2)若X->Y,则任意两个元组,若X上值相等,则Y上值必然相等,则称X为决定因素。
3)若X->Y, Y->X,则记作X<->Y;(互相决定)

完全函数依赖与传递函数依赖
1)部分函数依赖与完全函数依赖
规范化数据库_第2张图片
ps:部分依赖存在着非受控冗余。是需要我们消除的一个方面。
规范化数据库_第3张图片

2)传递函数依赖
规范化数据库_第4张图片
“系主任”是传递依赖于“学号”的。
ps:传递依赖存在着非受控冗余。是我们在设计中需要消除的。

你可能感兴趣的:(规范化数据库)