您的位置:首页 > 数据库

闲话数据库(二)---第三范式/BCNF

2016-06-14 21:47 162 查看
第三范式:若关系模式R(U,F)中不存在这样的码X,属性组Y以及非主属性Z(Z不是Y的子集)使得Y函数依赖于X并且X不函数依赖于Y,Z函数依赖于Y成立,则关系模式R属于3NF。

相当的绕口,并且不清醒的时候看它只会更加的想睡觉。

但是把这个转变成另外一种表述:2NF只要消除了非主属性对码的传递函数依赖,则进阶到3NF.

首先对最上面的数学表述形式分析:找不到这样的X,使得: X是码,Y一定是非主属性组,Z非平凡函数依赖于Y。

仔细进一步分析:假如Z非平凡函数依赖于Y,那么Y里面会包含码的存在。如果Y包含码,那么Y和码X就是相互函数依赖的。出现违背条件的推理了。对于第三范式的数学证明最好的方式就是类似上面推理的反证法了。当动手证明完了,就会得到2NF消除完非主属性对码的传递函数依赖就是3NF。

将数据库模式变换成为3NF以及以上的范式的时候,才会说数据库达到规范化标准。变换处理的过程称为关系模式的规范化处理。

一旦达到3NF,就要有一个观念:非主属性对码没有传递函数依赖。

3NF做的变化是化简,虽然化简的过程没有给出具体的操作。

BCNF:若关系模式R属于1NF,对任何任何Y非平凡函数依赖与X,Y不是X的子集,同时X均包含码,则R属于BCNF。

仔细一看,这个应该是要比第三范式更高级别的范式。在函数依赖消除的要求标准上应该是做的相当好了。如果R中的码是所有属性组合形成的,没有单一属性的码,这个还是仅仅只能做到3NF,却达不到BCNF要求的。

关系模式继续的化简,消除非主属性间的函数依赖和传递函数依赖,规范化会进一步得到提升。当然还是会遗留一些问题的,例如多值问题。

当然对于现实的数据库的规范化程度取决的条件有很多,例如规范化费用,人员水平,重视程度等等。所以上面的这些都是行动的guideline,不要认为拿到手的数据库规范是严格做到的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: