数据库判断分解的无损连接性

判断无损连接

常用的还是表格法,但我看网上的正规方法有点繁琐。所以我自己琢磨了一下我自己的做法。

例题:关系模式R(ABCDE),F{A->C, C->D, B->C, DE->C, CE->A}。分解成R1(AD),R2(AB),R3(BC),R4(CDE),R5(AE)

(1) 先画初始表格:

数据库判断分解的无损连接性_第1张图片

(2)填初始值:

左侧列看成给定的元素,对应列位置就填a.
比如第一行给定AD两个元素,所以A,D列位置填a。
比如:第二行给定AB两个元素,所以AB列位置填a。
数据库判断分解的无损连接性_第2张图片
数据库判断分解的无损连接性_第3张图片
以此类推填完其他行:
数据库判断分解的无损连接性_第4张图片

(3)求F中所有依赖,也就是要把传递依赖都写出来。

F变成:{A->C, C->D, B->C, DE->C, CE->A,A->D, B->D, DE->D, CE->C,CE->D}斜体表示新加进去的,也就是由原F可以推出的。

(4)根据每行给定元素,看能不能推出右边的列元素(此时应该看新F)。

比如第一行:给定AD,看能不能推出B,C,E。能推出对应位置就填a,推不出就填b。
在这里插入图片描述
由新F中的元素,可知,推不出B,E。但可以推出C。因为新F中有A->C.
在这里插入图片描述
再来看第二行:
给定AB,可以推出C,D。因为新F中有A->C,B->D.推出不E
数据库判断分解的无损连接性_第5张图片
以此类推,得到最终的表格:
数据库判断分解的无损连接性_第6张图片
可以看到,没有一行全是a。所以不是无损连接。
如果写法正规一点。每一列的a下标带上列号。每一个b写明位置是在第几行第几列,得到正规做法的结果图是这样:
数据库判断分解的无损连接性_第7张图片
答案是一样的。省去很多步骤。如果是考试,最后直接把下标写上就行了。

你可能感兴趣的:(数据库知识点解析,数据库,无损链接判别方法)