关于数据库的BCNF范式?
来源:学生作业帮 编辑:百度作业网作业帮 分类:数学作业 时间:2024/08/19 10:25:10
关于数据库的BCNF范式?
BCNF定义:关系模式中,若X函数确定Y且Y不在X内时X必含有码,则此关系属于BCNF.
请问以上定义中的“X必含有码”的意思是不是指“X必须是候选码”
BCNF定义:关系模式中,若X函数确定Y且Y不在X内时X必含有码,则此关系属于BCNF.
请问以上定义中的“X必含有码”的意思是不是指“X必须是候选码”
![关于数据库的BCNF范式?](/uploads/image/z/18040891-67-1.jpg?t=%E5%85%B3%E4%BA%8E%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84BCNF%E8%8C%83%E5%BC%8F%3F)
不是,而是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!
消除传递依赖是第二范式向第三范式规范的一个条件.在第二范式的基础上,不存在依赖传递,则属于第三范式!有人学艺不精!
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!
消除传递依赖是第二范式向第三范式规范的一个条件.在第二范式的基础上,不存在依赖传递,则属于第三范式!有人学艺不精!