03数据库系统
06-概念模型设计-函数依赖
2021-07-31 247 2
简介 函数依赖概念和Armstrong公理
函数依赖
设 R(U) 是属性集U上的关系模式, X和Y是U的子集。 若R(U)的任何一个可能的关系r中不可能存在两个元组在X上的属性值相等, 而在Y上的值不等, 则称X函数决定Y或者 Y函数依赖于X, 记为 X -> Y
* 对于任何给定的X有唯一的Y与之对应
* 函数依赖X->Y的定义不是指关系模式R的某个或某些关系满足上述条件,而是指在任何可能的关系(任何情况)下,都要满足上述条件。
* 函数依赖是语义范畴的概念, 只能根据语义来确定是否函数依赖。 例如 姓名-> 系, 如果没有同名的情况下成立, 而对于允许同名的情况, 这个函数依赖就不成立了。判断是否函数依赖要考虑上下文环境
* 若 X->Y 则X叫做决定因子
* 若X->Y, Y->X 则记做X<-->Y
* 若Y不函数依赖于X, 则记作
平凡函数依赖、非平凡函数依赖
*若不做特殊说明,一般都讨论非平凡函数依赖
非平凡函数依赖: 例如 (Sno, Cno) -> Grade 学号和课程号 决定 成绩
平凡函数依赖:例如 (Sno,Cno) -> Sno 学号和课程号 决定 学号 (Sno,Cno) -> Cno 学号和课程号 决定 课程号
完全函数依赖、 部分函数依赖
由于Sno -> Sdept
Sdept部分函数依赖于(Sno, Cno)
Grade成绩完全函数依赖于(Sno, Cno)
传递依赖
传递函数依赖; 简单理解就是“非平凡,不反依赖”
Sno-> Sdept , Sdept -> Mname(系负责人) 则Mname传递函数依赖于Sno
学号 宿舍 费用
062201 A 900
062230 B 1200
062240 B 1200
学号确定宿舍、宿舍确定费用,且有学号不包含宿舍,宿舍不确定学号,符合传递函数依赖条件。
所以以上关系R存在添加异常(建了C宿舍但是没人住无法添加了)删除异常(学生062201退学了宿舍A也删除掉)如果存在传递函数依赖,如下更改
学号 宿舍
062201 A
062230 B
062240 B
宿舍 费用
A 900
B 1200
传递函数依赖会导致数据冗余和异常。传递函数依赖的Y和Z子集往往同属于某一个事物,因此可将其合并放到一个表中。
逻辑蕴含
若R(A,B,C), F={A->B, B->C} 则F逻辑蕴含A->C
若F为关系模式R(U)的函数依赖集,我们把F以及所有被F逻辑蕴涵的函数依赖的集合称为F的闭包,记为F+。
多值依赖
6中性质: 考点:对于中级的数据库工程师,是必须记住
多值依赖: 对于给定的X有多个Y与之对应, 而且Y只与X有关系,与XY之外的属性无关。
函数依赖的公理(Armstrong)
函数依赖公式: 函数依赖定理
传递律: X->Y Y->Z 则X->Z
伪传递: X->Y WY->Z 则WX->Z
增广律: X->Y U包含Z, 则XZ->YZ
合并规则: X->Y, X->Z ,则 X->YZ
分解规则: X->Y Y包含Z,则 X->Z