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

判断无损连接

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

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

(1) 先画初始表格:

初始表格

(2)填初始值:

左侧列看成给定的元素,对应列位置就填a.
比如第一行给定AD两个元素,所以A,D列位置填a。
比如:第二行给定AB两个元素,所以AB列位置填a。
在这里插入图片描述
在这里插入图片描述
以此类推填完其他行:
初始表格

(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
在这里插入图片描述
以此类推,得到最终的表格:
在这里插入图片描述
可以看到,没有一行全是a。所以不是无损连接。
如果写法正规一点。每一列的a下标带上列号。每一个b写明位置是在第几行第几列,得到正规做法的结果图是这样:
在这里插入图片描述
答案是一样的。省去很多步骤。如果是考试,最后直接把下标写上就行了。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值