您好,欢迎访问三七文档
5.6多值依赖与4NF在关系模式中,数据之间是存在一定联系的,而对这种联系处理的适当与否直接关系到模式中数据冗余的情况。函数依赖是一种基本的数据联系,通过对数据函数依赖的讨论和分解,可以有效地消除模式中的冗余现象。函数依赖实质上反映的是“多对一”联系,在实际应用中还会有“一对多”形式的数据联系,诸如此类的不同于函数依赖的数据联系也会产生数据冗余,从而引发各种数据异常现象。本节就讨论数据依赖中“多对一”现象及其产生的问题。数据库理论及应用基础335.6.1问题的引入让我们先看下述例子。例5-17设有一个课程安排关系,如图5.26所示。课程名称任课教师选用教材名称高等数学T11T12T13B11B12数据结构T21T22T23B21B22B23图5.26课程安排示意图在这里的课程安排具有如下语义:z“高等数学”这门课程可以由3个教师担任,同时有两本教材可以选用。z“数据结构”这门课程可以由3个教师担任,同时有3本教材可供选用。如果分别用Cn、Tn和Bn表示“课程名称”、“任课教师”和“教材名称”,上述情形可以表示如图5.27所示的关系CTB。CnTnBn高等数学T11B11高等数学T11B12高等数学T12B11高等数学T12B12高等数学T13B11高等数学T13B12数据结构T21B21数据结构T21B22数据结构T21B23数据结构T22B21数据结构T22B22数据结构T22B23数据结构T23B21数据结构T23B22数据结构T23B23图5.27关系CTB很明显,这个关系表是数据高度冗余的。数据库理论及应用基础34通过仔细分析关系CTB,可以发现它有如下特点:z属性集{Cn}与{Tn}之间存在着数据依赖关系,在属性集{Cn}与{Bn}也存在着数据依赖关系,而这两个数据依赖都不是“函数依赖”,当属性子集{Cn}的一个值确定之后,另一属性子集{Tn}就有一组值与之对应。例如当课程名称Cn的一个值“高等数学”确定之后,就有一组任课教师Tn的值“T11、T12和T13”与之对应。对于Cn与Bn的数据依赖关系也是如此。显然,这是一种“一对多”的情形。z属性集{Tn}和{Bn}也有关系,这种关系是通过{Cn}建立起来的间接关系,而且这种关系最值得注意的是,当{Cn}的一个值确定之后,其所对应的一组{Tn}值与U-{Cn}-{Tn}无关,取定{Cn}的一个值为“高等数学”,则对应{Tn}一组值“T11、T12和T13”与此“高等数学”课程选用的教材即U-{Cn}-{Tn}值无关。显然,这是“一对多”关系中的一种特殊情况。如果属性子集X与Y之间依赖关系具有上述特征,就不为函数依赖关系所能包容,需要引入新的概念予以刻化与描述,这就是多值依赖的概念。5.6.2多值依赖基本概念1.多值依赖的概念设有关系模式R(U),X、Y是属性集U中的两个子集,而r是R(U)中任意给定的一个关系。如果有下述条件成立,则称Y多值依赖(MultivaluedDependency)于X,记为X→→Y:(1)对于关系r在X上的一个确定的值(元组),都有r在Y中一组值与之对应。(2)Y的这组对应值与r在Z=U-X-Y中的属性值无关。此时,如果X→→Y,但Z=U-X-Y≠Φ,则称为非平凡多值依赖,否则称为平凡多值依赖。平凡多值依赖的一个常见情形是U=X∪Y,此时Z=Φ,多值依赖定义中关于X→→Y的要求总是满足的。2.多值依赖概念分析属性集Y多值依赖于属性集X,即X→→Y的定义实际上说明下面几个基本点:z“(1)”说明X与Y之间的对应关系是相当宽泛的,即X一个值所对应的Y值的个数没有作任何强制性规定,Y值的个数可以是从零到任意多个自然数,是“一对多”的情形。z“(2)”说明这种“宽泛性”应当受必要的限制,即X所对应的Y的取值与U-X-Y无关,是一种特定的“一对多”情形。确切地说,如果用形式化语言描述,则有:在R(U)中如果存在X→→Y,则对R中任意一个关系r,当元组s和t属于r,并且在X上的投影相等:s[X]=t[X],此时应有:s=s[X]+s[Y]+s[U-X-Y]和t=t[X]+t[Y]+t[U-X-Y]做出相应的两个新的元组:u=s[X]+t[Y]+s[U-X-Y]和v=t[X]+s[Y]+t[U-X-Y]则u和v还应当属于r。数据库理论及应用基础35上述情形可以用图5.28予以适当解释:XZ=U-X-YYsXZ1Y1tXZ2Y2uXZ1Y2vXZ2Y1图5.28多值依赖的示意图在例5-17关系CTB中,按照上述分析,可以验证Cn→→Tn,Cn→→Bn。“(1)”和“(2)”说明考察关系模式R(U)上多值依赖X→→Y是与另一个属性子集Z=U-Z-Y密切相关的,而X、Y和Z构成了U的一个分割,即U=X∪Y∪Z,这一观点对于多值依赖概念的推广十分重要。3.多值依赖的性质由定义可以得到多值依赖具有下述基本性质:(1)在R(U)中X→→Y成立的充分必要条件是X→→U-X-Y成立。必要性可以从上述分析中得到证明。事实上,交换s和t的Y值所得到的元组和交换s和t中的Z=U-X-Y值得到的两个元组是一样的。充分性类似可证。(2)在R(U)中如果成立X→Y,则必有X→→Y。事实上,此时,如果s、t在X上的投影相等,则在Y上的投影也必然相等,该投影自然与s和t在Z=U-X-Y上的投影无关。“(1)”表明多值依赖具有某种“对称性质”:只要知道了R上的一个多值依赖X→→Y,就可以得到另一个多值依赖X→→Z,而且X、Y和Z是U的分割;“(2)”说明多值依赖是函数依赖的某种推广,函数依赖是多值依赖的特例。5.6.3第四范式——4NF对于R(U)中的任意两个属性子集X和Y,如果成立非平凡的多值依赖X→→Y,则X必为超键,则称R(U)满足第四范式,记为R(U)∈4NF。关系模式R(U)上的函数依赖X→Y可以看作多值依赖X→→Y,如果R(U)属于第4范式,此时X就是超键,所以X→Y满足BCNF。因此,由4NF的定义,就可以得到下面两点基本结论:z4NF中可能的多值依赖都是非平凡的多值依赖。z4NF中所有的函数依赖都满足BCNF。因此,可以粗略地说,R(U)满足第四范式必满足BC范式。但是反之是不成立的,所以即BC范式不一定就是第四范式。在例5-17当中,关系模式CTB(Cn,Tn,Bn)惟一的候选键是{Cn,Tn,Bn},并且没有非主属性,当然就没有非主属性对候选键的部分函数依赖和传递函数依赖,所以CTB满足BC范式。但在多值依赖Cn→→Tn和Cn→→Bn中的“Cn”不是键,所以CTB不属于4NF。数据库理论及应用基础36对CTB进行分解,得到CTB1和CTB2如图5.29和图5.30所示。CnTn高等数学T11高等数学T12高等数学T13数据结构T21数据结构T22数据结构T23图5.29关系CTB1CnBn高等数学B11高等数学B12数据结构B21数据结构B22数据结构B23图5.30关系CTB2在CTB1中,有Cn→→Tn,不存在非平凡多值依赖,所以CTB1属于4NF;同理CTB2也属于4NF。
本文标题:多值依赖与4NF
链接地址:https://www.777doc.com/doc-4611346 .html