数据库函数依赖和范式总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 理解:将关系分解为几个关系集合,当每个集合自然连接不存在这冗

相关文档
最新文档