【范式与函数依赖】3NF与BCNF的区别

*本文中码指代候选码,主属性为构成码的属性。

先简要引入几个概念

图1


图2

  单拿出来我认为不是很好理解的3NF和BCNF详细的说说。

  书上写了,BCNF是完善后的3NF。从图2中显然得出,1-3NF都是规范非主属性与码之间的关系。而主属性之间的关系没有规范。有人说了 ,要是构成码的主属性之间存在部分函数依赖或传递函数依赖,那么这就不是码,是超码了。too young!谁告诉你码必须是一个了?比方说AB->C,BC->A,此时AB、BC都是码即ABC都是主属性。所以ABC之间有什么函数依赖不在1-3NF的约束之内。所以需要有BCNF来约束主属性之间的函数依赖了。

 举个例子,R={AB->C,BC->A,C->A},R的码为AB、BC,故主属性为ABC,R为3NF。但是函数依赖C->A,决定因素C不包含码BC故R不是BCNF。

猜你喜欢

转载自www.cnblogs.com/yuelien/p/9934081.html