时间:2021-07-01 10:21:17 帮助过:96人阅读
模式分解有一套规范化的分解标准,称为范式(本章重点,见后续小节)
函数依赖(Functional Dependency,FD)是指一个关系模式中一个属性集和另一个属性集间的多对一关系,如选课关系SC(S#, C#, Score)
,给定(S#,C#)只有一个Score对应,不同(S#,C#)对应的Score值允许相等
X、Y是关系模式R(U)
属性集U的子集,R(U)
的实例r
中的两个元组t1、t2,若t1[X]==t2[X]
可以导出t1[Y]==t2[Y]
,则称Y函数依赖于X,记作X→Y
同一个关系模式可以有不同的FD,FD和应用相关;FD是对现实世界的断言,检测FD正确性只能通过考察属性的含义
形式化定义关系模式为R(U, D, dom, F)
:
关系模式设计就是寻求一个最小FD集T,一旦实现T则可以实现所有FD
若X→Y且Y是X的子集,则X→Y是平凡FD(子集必然依赖),否则是称FD不平凡;平凡FD无实际意义,可以通过消除平凡FD来缩小FD集
函数依赖有以下推理规则,称为Armstrong公理:
函数依赖集F逻辑蕴含的函数依赖的全体构成的集合称为函数依赖F的闭包,记做F+,通过一系列推理规则可以求得F的闭包并判断某一函数依赖X→Y是否能够由F推出(即判断X→Y是否属于F+)
判断X→Y是否能够由F推出就去构造F+计算量比较大,其实只需构造**属性X的闭包**X+即可,X+是所有能够用A推出的属性集合(即函数依赖于A的属性集合)
最小函数依赖集F必须满足以下性质:
求某个函数依赖集的最小函数依赖集的步骤如下:
关系模式R(U)的一个分解p={Ri(Ui)}满足U=∪{Ui},模式分解必须是无损连接并且需要保持函数依赖
无损连接是指:某关系模式的事例r按照关系模式分解成多个关系r1,…,rk,若r1,…,rk的自然连接(Join操作)等于r,则称该模式分解是无损的
Chase方法能够检测完全的无损连接,设有n个属性的模式R分解为k个模式Ri,有如下Chase过程:
当模式分解是简单的二元分解时(即p={R1,R2}),p是无损连接的分解当且仅当下面FD之一成立:
保持函数依赖是指关系模式R的FD集F在分解后仍在数据库模式中保持不变,这是模式分解的第二个条件
形式化的定义分解后F在模式Ri上的投影为:
若分解p满足如下条件则称p**保持函数依赖**:
范式
范式从低级到高级依次为:1NF、2NF、3NF、BCNF、4NF、5NF,高一级的范式总是低一级范式的真子集
根据关系模式R的不可约FD集F,可以画出节点是属性或属性集,边是由被依赖节点指向依赖节点的有向图来辅助分析关系模式,叫做函数依赖图
注:复习时间关系ppt中范式的例子来不及整理了
1NF要求关系模式R的每一个实例r均满足:r中的每一个元组t的每一个属性中只有一个值,这是关系模式的基本要求
不满足1NF的关系模式有二义性!
假定:R只有一个候选码,且该候选码为主码
A完全依赖于W是指:W→A且A不依赖于任何一个W的真子集X,W是主键也可能包括多个属性{X、Y},非主属性A不能局部函数依赖于X或Y
不满足2NF的关系模式可能存在[插入异常、删除异常、更新异常和数据冗余],通过画出函数依赖图无损分解非2NF得到2NF,但2NF也不能完全消除上述问题
假定:R只有一个候选码,且该候选码为主码
称A传递依赖于Y则有:Y→X,X→A,并且Y不依赖于X(即Y不等于X)、A不是X的子集
不满足3NF的关系模式也可能存在[插入异常、删除异常、更新异常和数据冗余],通过打破传递依赖链条,把关系模式分解成多个子关系模式
BCNF是3NF处理R有多个候选码的扩展,当R有多个候选码时即使
如果关系模式R的所有不平凡的、完全的函数依赖的决定因素(左边的属性集)都是候选码,则
若要求保持函数依赖和无损联接,则总可以达到3NF,但不一定满足BCNF;因为BCNF可以达到无损连接,但不一定保持函数依赖
算法步骤:
算法步骤:
算法步骤:
版权声明:本文为博主原创文章,未经博主允许不得转载。
数据库复习11——关系模式与范式
标签:数据库 关系模式 范式 无损连接 函数依赖