范式之间的转换一般都是通过拆分属性,即模式分解,将具有部分函数依赖和传递依赖的属
性分离出来,来达到一步步优化,一般分为以下两种:
保持函数依赖分解
对于关系模式R,有依赖集F,若对R进行分解,分解出来的多个关系模式,保持原来的依赖集不变,则为保持函数依赖的分解。另外,注意要消除掉冗余依赖(如传递依赖)。
实例:设原关系模式R(A,B,C),依赖集F(A->B,B->C,A->C),将其分解为两个关系模式R1(A,B)和R2(B,C),此时R1中保持依赖A->B,R2保持依赖B->C,说明分解后的R1和R2是保持函数依赖的分解,因为A->C这个函数依赖实际是一个冗余依赖,可以由前两个依赖传递得到,因此不需要管。
保持函数依赖的判断(了解这一点即可,还有公式的不做介绍):
1、如果F上的每一个函数依赖都在其分解后的某一个关系上成立,则这个分解是保持依赖的(这是一个充分条件)。即,看函数每个依赖的左右两边属性是否都在同一个分解的模式中。
随堂练习
0 / 0 已完成假设关系模式R(U,F),属性集U={A,B,C},函数依赖集F={A>B,B->C}。若将其分解为p={R1(U1,xF1),R2(U2,F2)},其中U1={A,B},U2={A,C}。那么,分解p()。
无损分解:
分解后的关系模式能够还原出原关系模式,就是无损分解,不能还原就是有损。
当分解为两个关系模式,可以通过以下定理判断是否无损分解:
定理:如果R的分解为p={R1,R2},F为R所满足的函数依赖集合,分解p具有无损连接性的充分必要条件是R1∩R2->(R1-R2)或者R1∩R2->(R2-R1)。
随堂练习
0 / 0 已完成给出关系R(U,F),U={A,B,C,D,E},F={A>BC,B->D,D->E}。以下关于F说法正确的是(6)。若将关系R分解为p={R1(U1,F1),R2(U2,F2)},其中:U1={A,B,C}、U2={B,D,E},则分解p(7)。



评论前必须登录!
注册