数据库函数依赖和范式总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库函数依赖和范式总结
1 函数依赖
1.1 定义:
一个集合R(U,F),U为属性全集,F为函数依赖集合。F中存在着{Xi->Yi...};对于每个X都存在着一个Y与之唯一对应。
意思就是相当于X为主键,Y由主键决定。比如一个学生他的学号相当于X,而他的姓名与年龄这些其他信息相当于Y。但是X有时候并不是一个值,比如一个学生他的成绩需要有两个属性才能知道他的成绩,学号+课程号->成绩
1.2 平凡函数依赖与非平凡函数依赖
平时我们主要讨论的是非平凡函数依赖。
平凡函数依赖概念:Y集合属性属于X集合属性的子集
非平凡函数则相反
1.3 逻辑蕴涵(为后面求闭包做好基础)
X,Y为属性集合U的子集,且X->Y不存在于F中。即我们需要通过F 中的函数依赖推出X->Y称为函数依赖。而所有函数依赖的集合则称为闭包
1.4 函数依赖的推理规则(就是求函数依赖的逻辑蕴涵)
1.4.1 几个公理
1.4.1.1 公理一(自反律):Y属于X的子集,则X->Y 数学公式描述 Y⊆X⊆U
1.4.1.2 公理二(增广律):X->Y成立,Z⊆U也成立,则 XZ⊆YZ
1.4.1.3 公理三(传递律):X->Y成立,Y->Z成立,则 X->Z
1.4.2 公理的推广
1.4.
2.1 推广一(合并律):X->Y,X->Z,则X->YZ
1.4.
2.2 推广二(伪传递律):X->Y,YW->Z,则XW->Z(证明只需要在XY两边*W)
1.4.
2.3 推广三(分解律):X->Y成立,Z⊆Y,则 X->Z
1.4.
2.4 推广四(复合律):X->Y,W->Z,则XW->YZ
1.5 完全函数依赖与部分函数依赖(范式中基础知识)
X->Y的集合中,若X的任一真子集x都能 x->Y则为部分函数依赖,若不能则的完全函数依赖,如果X没有真子集则也称为完全函数依赖。例如学号可以决定姓名,年龄等,因为学号集合没有真子集,则此为完全函数依赖。而当姓名没有重名的情况下,学号和姓名都可以作为X集合子集,而此时姓名也可以决定年龄,所以此函数为部分函数依赖
1.6 传递函数依赖(范式中基础知识)
X->Y,且Y!->X,Y->Z, 则X->Z称为传递函数依赖
简单理解就是X通过Y再Y通过Z,最后X可以决定Z,但是如果Y->X的话,那么X<->Y直接相等就相当于没意义经过传递而只是简单的替换了而已,所以并不能叫做传递函数依赖
1.7 (重要)属性集的闭包和算法
1.7.1 定义:从F集合中所有的函数依赖 F->A
1.7.2 X->Y的充分必要条件Y⊆X*
1.7.3 计算闭包算法
设属性集U,F是R上的依赖函数集,X是U的子集,求属性X相当于函数依赖集F的闭包X*
result = x; do{ if(F中有某个函数依赖集合Y->Z满足Y⊆result){ result = result ∪ Z ; } }while(result 有所改变);
例题:属性集合U={X,Y,Z,W}, 函数依赖集合F={X->Y,Y->Z,W->Y},求闭包
X* = XYZ ,(XW)* = XYZW ,(YW)*=YZW
1.8 (重要)候选键的求解和算法
1.8.1 定义:X是U的一个子集,若X->U(即X->U在F中)那么称X为超键,但是如果X->U成立,但是X的真子集x->U不成立(即x->U不在F中)则称为候选键
1.8.2 快速求解候选键的充分条件
(1) L类:仅仅出现在F中的函数依赖左部的属性
(2) R类:仅仅出现在F中的函数依赖右部的属性
(3) N类:不出现在F中的函数中的属性
(4) LR类:出现在F中的函数依赖左部又出现在有部的属性
根据上面得出的结论
(1) 若X是L类属性:则X必然属于任一候选键的成员
(5) 若X是L类属性:且X*包含了R的所有属性,则X必然属于唯一候选键
(2) 若X是R类属性:则X不属于任何候选键
(3) 若X是N类属性:则X必然属于任一候选键的成员
(4) 若X是LR类属性:且X*包含了R的所有属性,则X必然属于唯一候选键
1.8.3 (重要)计算候选键的算法
1 根据函数依赖集将R的所有属性分为L类,R类,N类,LR类,并令X代表L和N属性,Y代表LR属性
2 求X*,如果X*包含了R的全部属性,则X为唯一候选键,转(5),否则转(3)。
3 从Y中取一个属性A,求(XA)*,若它包含了R的全部属性转(4),否则调换这一属性反复进行这一过程,直到测试完Y中的所有属性。
4 如果找到所有的候选键,转(5),否则在Y中依次取两个,三个...求他们的属性闭包,直到其闭包包含R的全部属性
5 结束
关于候选键的定义:.....
1.9 函数依赖推理的完备性(待补充)
1.10 函数依赖集的等价,覆盖和最小函数依赖集(这里只记录关于如何求最小函数依赖集合的知识,等价和覆盖看情况是否补充)
1.10.1 最小函数依赖集Fmin应该满足的条件
1 Fmin=F
2 每个函数依赖的右边都是单属性
3 Fmin中没有冗余的函数依赖(有疑问,暂时不明和4有什么区别)
4 Fmin左边没有冗余的属性
1.10.2 Fmin的算法
1 利用分解律将右边的属性变成单属性,设此函数集合为G
2 将G中的左边属性判断是否为单属性依赖,若是可以去除多余的属性,依次判断
3 最后消除G中的冗余的函数依赖,从第一个函数依赖开始,从G中去掉它(X->Y),然后在剩下的函数依赖中求X*,看是X*包含Y,若存在则去掉X->Y,否则不去掉
2 关系模式的分解
2.1 理解:将关系分解为几个关系集合,当每个集合自然连接不存在这冗