数据库学习笔记12_无损拆分和依赖保护概念

  无损拆分,指的是把一张表R拆成R1和R2,那么R=natural join of (R1,R2)。

  对于一个关系实例R和一个其所拥有的函数依赖集F+ ,R拆封出R1,R2为无损拆分当:

     R1与R2的并集->R1 or R1与R2的并集->R2 在F+ 中存在时

  当然这里是可以用属性闭包的。

  对于依赖保护,这个也是在拆分条件下说的,对于一个拆封出的关系实例R1,其拥有的依赖集为原集中F+ 中只有R1中元素的所有依赖的集合。

  那么要测试一拆分是否为依赖保护,我们只需要将所有的拆分出的关系实例R所属的F做一个并集F’,然后求其闭包F’+ 查看是否与F+相等

  鉴于上一个方法的效率不怎么高,我们有两个替换方法:

    1.对于每个拆分出来的关系实例进行测试,看其是否满足原集F中的所有函数依赖,若满足,则为依赖保护,但是这个只是一个充分条件,并非必要条件。

    2对于每一个在原集F中的f:LA(a)->LA(b),做以下算法:

      set result=a;

      while(result change)

     {

        for(Ri in the decomposition)

        {

            set t=(result并Ri)+ 并Ri

            result=result并t

        }

     }

  这里的+指的是在F下的属性闭包。

  当做完以后,若LA(b)为result的子集,则该函数依赖被保存了

  在此不对这个算法的正确性做证明。

转载于:https://www.cnblogs.com/stultus/p/6866439.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值