4.3.5 BC范式

4.3.5 BC范式

【定义4.11】 关系模式R∈1NF,对任何非平凡的函数依赖,X均包含码,则R∈BCNF。

BCNF是从1NF直接定义而成的,可以证明,如果R∈BCNF,则R∈3NF。

由BCNF的定义可以看到,每个BCNF的关系模式都具有如下3个性质。

①所有非主属性都完全函数依赖于每个候选码。

②所有主属性都完全函数依赖于每个不包含它的候选码。

③没有任何属性完全函数依赖于非码的任何一组属性。

如果关系模式R∈BCNF,由定义可知,R中不存在任何属性传递函数依赖于或部分依赖于任何候选码,所以必定有R∈3NF。但是,如果R∈3NF,R未必属于BCNF。

例如,在关系模式SCG(SNO,SNAME,CNO,GRADE)满足3NF,但不满足BCNF,仍然存在删除异常以及数据冗余的问题,究其原因在于SCG中的主属性SNAME部分依赖于(SNO,CNO),因此关系模式还要进行进一步的分解,转换成高一级的BCNF,以消除数据库操作中的异常情况。

3NF和BCNF是以函数依赖为基础的关系模式规范化程度的测度。

如果一个关系数据库中的所有关系模式都属于BCNF,那么在函数依赖范畴内,它已实现了模式的彻底分解,达到了最高的规范化程度,消除了插入异常和删除异常。

而当用分解的方法提高规范化程度时,将破坏原来模式的函数依赖关系,这对于系统设计来说是有问题的。这个问题涉及模式分解的一系列理论问题,在这里不再做进一步的探讨。

在信息系统的设计中,普遍采用的是“基于3NF的系统设计”方法,就是由于3NF是无条件可以达到的,并且基本解决了“异常”的问题,因此这种方法目前在信息系统的设计中仍然被广泛地应用。

如果仅考虑函数依赖这一种数据依赖,属于BCNF的关系模式已经很完美了。但如果考虑其他数据依赖,例如,多值依赖,属于BCNF的关系模式仍存在问题,不能算是一个完美的关系模式。