欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » 关系数据库基础教程 » 正文

BCNF与分解成BCNF模式集的算法

创建时间:2012年06月05日 10:55  阅读次数:(12479)
分享到:

BCNF的概念


定义4.19  如果关系模式R是1NF,且每个属性都不传递依赖于R的候选键,那么称R是BCNF的模式。如果数据库模式中每个关系模式都是BCNF,则称为BCNF的数据库模式。

例4.16 设关系模式R(B#,BNAME,AUTHOR)的属性分别表示书号、书名和作者名。如果规定,每个书号只有一个书名,但不同书号可以有相同的书名;每本书可以有多个作者合写,但每个作者参与编著的书名应该互不相同。这样的规定可以用下列两个FD表示:B#→BNAME 和(AUTHOR,BNMAE)→B#
R的关键码为(BNAME,AUTHOR)或(B#,AUTHOR),因而模式

R的属性都是主属性,R是3NF。但从上述两个FD可知,属性BNAME传递依赖于关键码(AUTHOR,BNAME),因此R不是BCNF。例如一本书由多个作者编写,其书名与书号间的联系在关系中将多次出现,会导致数据冗余和操作异常。
如果把R分解成R1(B#,BNAME)和R2(B#,AUTHOR),能解决上述问题,且R1和R2都是BCNF。但有可能引起新的问题,例如这个分解把(AUTHOR,BNAME)→B#丢失了,数据语义将会引起新的矛盾。

从定义4.18和定义4.19(3NF和BCNF的定义)可以知道,如果R是BCNF模式,那么R也是3NF模式。即有下面的定理。

定理4.11 (相对于定理4.9)如果R是BCNF模式,那么R也是3NF模式。
证明:设R是BCNF,但不是3NF,那么R上必存在传递依赖X Y,Y A,这里X是R的键,A Y,Y X。显然Y不包含R的键;否则,Y X也成立。因此Y A违反了BCNF的定义,与假设R是BCNF矛盾。从而定理得以证明。

定义4.19’(相对于定义4.18’)  设F是关系模式R的FD集,如果对F中每个非平凡的FD X→Y,都有X是R的超键,那么称R是BCNF的模式。
这个定义表明,如果非平凡的FD  X Y中X不包含超键,那么Y必须传递依赖于候选键,因此R不是BCNF模式。

分解成BCNF模式集的算法


算法4.6  无损分解成BCNF模式集
对于关系模式R的分解ρ(初始时ρ={R}),如果ρ中有一个关系模式Ri相对于
πRi(F)不是BCNF。据定义4.19’可知,Ri中存在一个非平凡FD X→Y,有X不包含超键。此时把Ri分解成XY和Ri-Y两个模式。重复上述过程,一直到ρ中每一个模式都是BCNF。

算法4.7  无损分解且保持依赖地分解成3NF模式集
对于关系模式R和R上成立的FD集F,先求出F的最小依赖集,然后再把最小依赖集中那些左部相同的FD用合并性合并起来。
对最小依赖集中,每个FD X→Y去构成一个模式XY。
在构成的模式集中,如果每个模式都不包含R的候选键,那么把候选键作为一个模式放入模式集中。

这样得到的模式集是关系模式R的一个分解,并且这个分解既是无损分解,又能保持FD。

例4.7 设关系模式R(ABCDE),R的最小依赖集为{A→B,C→D}。从依赖集可知R的候选键为ACE。
先根据最小依赖集,可知ρ ={AB,CD}。然后再加入由候选键组成的模式ACE。因此最后结果ρ ={AB,CD,ACE}是一个3NF模式集,R相对于该依赖集是无损分解且保持FD。
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论1条
  • #1楼  评论人:XXOO  评论时间:2016-7-2 23:09:21
  • 蒙了。。。。
发表评论:
留言人:
内  容:
请输入问题 46+9=? 的结果(结果是:55)
结  果: