如图:
关系模式R<U,F>∈1NF。若函数依赖集合F中的所有函数依赖X→Y(Y不包含于X)的左部都包含R的任一候选键,则R∈BCNF。换言之,BCNF中的所有依赖的左部都必须包含候选键。 [1]
具有函数依赖集F的关系模式R属于BCNF的条件是,对所有F的闭包中形如
X->Y,则下面的两个条件至少有一个成立:
1、X->Y是平凡的依赖。
2、 X是R的一个超键。
将第一范式,第二范式化为第三范式的步骤:
(1)求出R的最小函数依赖集Fmin
(2)找出不在Fmin中出现的属性,并将这些属性从R中去掉,构成一个关系模式
(3)若Fmin中有一个函数依赖涉及R的全部属性,则R不能分解
(4)否则,若Fmin中有X->A,则分解应包含{XA};若有X->A1,X->A2....X->An均属于Fmin,则分解应包含{XA1A2...An}
证明:采用反证法.
设R不是3NF
则必然存在如下条件的函数依赖
X→Y(Y→/X),Y→Z
其中X是键属性,Y是任意属性组,Z是非主属性
Z属于Y,这样Y→Z函数依赖的决定因素Y不包含候选键,
与BCNF范式的定义相矛盾,
所以如果R属于BCNF,则R也是3NF.
3NF一定是2NF
若关系模式R(U,F)∈3NF,则R∈2NF
例:如S1(SNO,SNAME,DNO,DNAME,LOCATION) 各属性分别代表学号,姓名,所在系,系名称,系地址。
关键字SNO决定各个属性。由于是单个关键字,没有部分依赖的问题,肯定是2NF。但这关系肯定有大量的冗余,有关学生所在的几个属性DNO,DNAME,LOCATION将重复存储,插入,删除和修改时也将产生类似以上例的情况。
原因:关系中存在传递依赖造成的。即SNO -> DNO。 而DNO -> SNO却不存在,DNO -> LOCATION, 因此关键字 SNO 对 LOCATION 函数决定是通过传递依赖 DNO -> LOCATION 实现的。也就是说,SNO不直接决定非主属性LOCATION。
本回答被网友采纳如图:
1 所有非主属性对每一个候选键都是完全函数依赖;
2 所有的主属性对每一个不包含它的候选键,也是完全函数依赖;
3 没有任何属性完全函数依赖于非候选键的任何一组属性。
设仓库管理关系表为StorehouseManage(仓库ID,存储物品ID,管理员ID,数量),且有一个管理员只在一个仓库工作;一个仓库可以存储多种物品。这个数据库表中存在如下决定关系:
(仓库ID,存储物品ID)→(管理员ID,数量) (管理员ID,存储物品ID)→(仓库ID,数量)
所以,(仓库ID,存储物品ID)和(管理员ID,存储物品ID)都是StorehouseManage的候选关键字,表中的唯一非关键字段为数量,它是符合第三范式的。但是,由于存在如下决定关系:
(仓库ID)→(管理员ID) (管理员ID)→(仓库ID)
即存在关键字段决定关键字段的情况,所以其不符合BCNF范式。
本回答被网友采纳