数据库的无损连接判断?

数据库的无损连接判断?,第1张

无损连接是指分解后的关系通过自然连接可以恢复成原来的关系,即通过自然连接得到的关系与原来的关系相比,既不多出信息、又不丢失信息。保持函数依赖分解是指在模式的分解过程中,函数依赖不能丢失的特性,即模式分解不能破坏原来的语义。

判断是否无损连接的方法:

若关系模式R(U,F)中,被分解为p={R1, R2}是R的一个分解,若R1∩R2 → R1 - R2或者R1∩R2 → R2 - R1,则为无损连接

下面来看个例题

设有关系模式R(U,V,W,X,Y,Z),其函数依赖集:F={U→V,W→z,Y→U,WY→X},现有下列分解:p={UVY,WXYZ}

判断分解p是否为无损连接

首先计算 R1∩R2 为Y,R1-R2为UV因为 Y→U,U→V,因此Y→UV。

所以为无损连接

构造表的第一行看,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行。前面的一行我称为第零行,为属性行。这分解是具有无损联结特性的。

这个问题很难一言以蔽之,我给你举一个我常用的例子,希望对你有帮助:

设关系模式R(U,F)中,U={A,B,C,D,E},F={AB→C,C→D,D→E},R的一个分解ρ={ R1(A,B,C),R2(C,D),R3(D,E)}。试判断ρ具有无损连接性。

解:① 首先构造初始表,如图(a)所示。

A B C D E

R1(A,B,C) a1 a2 a3 b14 b15

R2(C,D) b21 b22 a3 a4 b25

R3(D,E) b31 b32 b33 a4 a5

(a)

A B C D E

R1(A,B,C) a1 a2 a3 a4 a5

R2(C,D) b21 b22 a3 a4 b25

R3(D,E) b31 b32 b33 a4 a5

(b)

图:分解的无损连接判断表

② 按下列次序反复检查函数依赖和修改M:

AB→C,属性A、B(第1、2列)中都没有相同的分量值,故M值不变;

C→D,属性C中有相同值,故应改变D属性中的M值,b14改为a4;

D→E,属性D中有相同值,b15、b25均改为a5。

结果如图(b)所示。

③ 此时第一行已为a1,a2,a3,a4,a5,所以ρ具有无损连接性。

说明:在上例步骤后,如果没有出现a1,a2,a3,a4,a5,并不能马上判断ρ不具有无损连接性。而应该进行第二次的函数依赖检查和修改M。直至M值不能改变,才能判断ρ是否具有无损连接性。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6778473.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存