一、
假设一个表R={X,Y,Z},其中X、Y、Z是三个属性组,X是码。再假设R不符合3NF,即:X->Y,Y->Z,其中Y不是码。
(X->Y是指X决定Y)
现在分解这张R表,如下:
R1={X,Y};R2={X,Z},而不是R‘={X,Y};R"={Y,Z}
请问是否可以,可行?
答:
哦!我知道了!这样分解不行,因为损失了函数依赖!即:Y->Z在R1,R2中丢失了。
二、
第一范式:二维表的 “每个字段” 具有原子性,不可再分。
第二范式:消除 ”非主属性“ 对 ”主码“ 的部分函数依赖,(”完全函数依赖“ 和 “部分函数依赖” 恰好相对)
第三范式:消除 “非主属性” 之间的传递函数依赖。
注意:
属性不是一个元组。
“主属性” 和 ”主码“ 是有区别的,“主码” 是在 “候选码” 里面随便选出来的一个元组(可能是单元素元组), “候选码” 是二维表里可以确定全部属性的最小属性集合(即元组),“候选码” 包括n个元组。
”主属性“ 只是特殊的属性,“主属性” 的确定方法是对候选码的所有元组取并集,去掉重复项,所得结果的每一个属性都是主属性。
“主属性” 的任意一项,不能为空!
BCNF:消除了 “主属性之一“ 对 “候选码之一” 的部分和传递函数依赖。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)