数据库:判断关系模式的分解是否是保持依赖分解,是否是无损连接分解?

整理用于复习,参考了老师的课件和网上的一些方法。

例题1. 对于关系模式r(R) = r(A,B,C,D,E,G) 和函数依赖集F = {AB→C, AC→B, AD→E, B→D, BC→A, E→G},判断下列分解是否是保持依赖分解?是否是无损连接分解?

( 1 ) {AB, BC, ABDE, EG};

解:先用表格判断法分析是否是无损连接分解:如果某一行成为a1, a2, …, aN则是无损连接分解;否则是有损连接分解。

       

        表格的第一列表示子关系模式,第一行列出所有的属性。

        ① 若 ri 中包含属性 Aj ,则在第 i 行、j 列处填上 aj 。

     

         ② 再根据函数依赖集 F 进行表格填充

        为避免反复判断,先分析单属性的依赖。对于 B→D:

        看这两列是否有整体上具有相同符号的行,因为第 3 行含有 a2 和 a4 (即 B→D) ,所以1、2行才能填上a4。  

         同理,对于  E→G:

        由于其他函数依赖都不会再得到E,所以返回考虑 AD→ E:

    继续考虑 AB→C, AC→B,  BC→A,由于表格中的符号没有一行对应函数依赖,所以表格没有再变化。

     最终没有一行填满变成(a1,a2,a3,a4,a5,a6),所以该分解是有损连接分解

是否保持依赖分解:

      对于 r1(AB) ,看它所在行,无法得到F中的任何一个函数依赖,所以 F1 = { \oslash };

      同样地,r2(BC) 的函数依赖 F2 = { \oslash };

      r3(ABDE) 的函数依赖 F3 = { AD→E, B→D };

      r4(EG) 的函数依赖 F4 = { E→G };

因为(F1∪F2∪F3∪F4)+ ≠ F +,所以该分解不保持函数依赖。


( 2) {ABC, ACDE, ADG}

解:先判断无损连接,列出表格:

分析函数依赖,对于AC→B:

对于B→D:

对于AD→E:

对于E→G:

        因为可以形成一整行的(a1,a2,a3,a4,a5,a6),所以是无损连接分解。

是否保持依赖分解:

      r1(ABC) 的函数依赖 F1 = { AB→C,AC→B , BC→A };

      r2(ACDE) 的函数依赖 F2 = { AD→E};

      r3(ADG) 的函数依赖 F3 = { Ø };

因为(F1∪F2∪F3)+ ≠ F +,所以该分解不保持函数依赖。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值