因为P1∩P2=C,P1-P2=TR,P2-P1=S,C→TR,C→S均不成立,故这个分解不具有无损连接性。
π
p1(F)∪π
p2
(F)={TR→C}
与F不等价,故不保持函数依赖。
首先了解一下几个概念:
1)把一个关系模式分解成若干个关系模式的过程,称为关系模式的分解。
2)把低一级的关系模式分解为若干个高一级的关系模式的方法不是唯一的。
3)只有能够保证分解后的关系模式与原关系模式等价,分解方法才有意义。
对于第一句话,为什么需要分解关系模式?因为原来的关系模式可能造成数据冗余或
给数据库带来潜在的不一致性。对于第二句话,根据不同语义,分解的原则也不尽相
同,所以方法肯定是不唯一的,譬如U={A,B,C},根据不同原则(随便你自己定),
可能分成(A,B)(A,C)也可能分成(B,C)(A,C)。对于第三句话,则是本文所要
讲的内容。
为了保证分解后的关系模式与原关系模式等价,我们要判定 1)分解后形成的行的关
系模式中是否为无损连接 2)是否保持函数依赖
一、无损连接的判定:
1)如果分解后的的关系模式是形如{U1,U2}这,里面只有两个,那很好做,就判断
或 是否成立,成立的话肯定是
无损连接。
2)如果是两个以上{U1,U2,U3....}这种,那就比较麻烦了,比如,有属性集,
ABCDEF,存在这样的函数依赖集{A->BC , CD->E , B->D , BE->F , EF->A},然后有
这样的分解{ABC , BD , BEF}。
例如:
设U1=ABC,U2=BD,U3=BEF,根据提供的函数依赖集,我们可得U1存在这样的
函数依赖A->BC,U2上的函数依赖是 B->D, U3的函数依赖是BE->F。
构造表的第一行看,AB,A处标a1(已知),B处标a2(已知),C处标b13(未知).构造表的第二行看,BC,A处标b21(未知),B处标a2(已知),C处标a3(已知).
因为B→C,在第二行的C处已知,在第一行中C处将b13改为a3,变为已知。
之后就变为根据A→B进行处理后的表了。这里的根据A→B进行处理说的就是这个处理的过程。
这个判断题是错误的,很明显,第二个表中的第一行全是a行。前面的一行我称为第零行,为属性行。这分解是具有无损联结特性的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)