关于数据库的BCNF范式?

BCNF定义:关系模式中,若X函数确定Y且Y不在X内时X必含有码,则此关系属于BCNF。

请问以上定义中的“X必含有码”的意思是不是指“X必须是候选码”

不是,而是X必含有候选码,候选码与码在这里是一个概念。

X确定Y,X未必是一个属性,也可能是一组属性的,但这组里不能含有Y,否则(x,y)->y什么也说明不了的!因为y->y,增广率(x,y)->y,所以这里说X不能含Y或称Y不在X内。例如U是码,则x一定要包含U,如(u,z)->y则X一定要含有码的。但如果出现这种情况这不是了,U是(a,b),而x是(b,c,d)则X->Y,那么,x中因为没有(a,b)所以x不含码,那么一定不是BCNF!

其实这个BCNF的概念是在1NF上下的定义。如果在1NF中用否定方式下定义的话是:X决定于Y,Y不包含于X,X若不存在码,则该一定不是BCNF.

当然还可以在第三范式下一个定义,关系属于第三范式,X是码的真子集,若不存在X->Y则关系属于BCNF。

BCNF是第三范式的修改正,但不是消除传递依赖的,这点楼下错了,而是消除部分依赖的!也就是说非码属不能依赖于码的一部分。如果(a,b,c)是码,若存在(a,b)这个部分能确定一个非码属性时,则不符合BCNF!

消除传递依赖是第二范式向第三范式规范的一个条件。在第二范式的基础上,不存在依赖传递,则属于第三范式!呵呵,有人学艺不精!来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-14
3NF:不存在非主属性对键的传递函数依赖。
BCNF:3NF+不存在主属性对键的传递函数依赖。 -- BCNF是3NF的改进型
“X必含有码”意思是主属性对键也没有传递函数依赖,X函数里不仅包含非主属性,还一定包含主属性,换句话说X必含主属性,这里的码=主属性。