新闻资讯
看你所看,想你所想

bcnf

bcnf

bcnf

bcnf,全称为Boycee Codd Normal Form,中文叫巴斯範式,是由Boyce和Codd提出的,比3NF又进了一步,通常认为是修正的第三範式。

设关係模式R<U,F>∈1NF,如果对于R的每个函式依赖X→Y,若Y不属于X,则X必含有超码,那幺R∈BCNF。满足BCNF条件有:所有非主属性对每一个候选键都是完全函式依赖; 所有的主属性对每一个不包含它的候选键,也是完全函式依赖;没有任何属性完全函式依赖于非候选键的任何一组属性。

基本介绍

  • 中文名:巴斯範式
  • 外文名:Boycee Codd Normal Form
  • 简称:BCNF
  • 关係模式:R<U,F>∈1NF

BCNF简介

是由Boyce和Codd提出的,比3NF又进了一步,通常认为是修正的第三範式.所谓第三範式,定义是关係模式R<U,F>中若不存在这样的键X,属性组Y及非主属性Z,使得X—>Y,Y—>Z成立,(不存在Y—>X),则称R<U,F>为3NF.
即当2NF(第二範式)消除了非主属性对键的传递函式依赖,则称为3NF。
对3NF关係进行投影,将消除原关係中主属性对键的部分与传递依赖,得到一组BCNF关係。

BCNF定义

关係模式R<U,F>∈1NF。若函式依赖集合F中的所有函式依赖X→Y(Y不包含于X)的左部都包含R的任一候选键,则R∈BCNF。换言之,BCNF中的所有依赖的左部都必须包含候选键。
具有函式依赖集F的关係模式R属于BCNF的条件是,对所有F的闭包中形如
X->Y,则下面的两个条件至少有一个成立:
1. X->Y是平凡的依赖。
2. X是R的一个超键。

满足BCNF条件

1 所有非主属性对每一个候选键都是完全函式依赖;
2 所有的主属性对每一个不包含它的候选键,也是完全函式依赖;
3 没有任何属性完全函式依赖于非候选键的任何一组属性。

BCNF举例

由于R∈BCNF,按定义排除了任何属性对键的传递依赖与部分依赖,所以R∈3NF。但是若R∈3NF,则R未必属于BCNF。
例如:关係模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。每一个教师只教一门课。每门课有 若干个教师,某一学生选定某门课,就对应一个固定的教师。由语义可得到如下函式依赖:
(S,J)->T;(S,T)->J;T->J。
(S,J),(S,T)都是候选键。
STJ是3NF,因为没有任何非主属性对键传递依赖或部分依赖。但STJ不是BCNF关係,因为T是决定因素而T不是超键。

分解为BCNF方法

需要消除不包含关係。
1. 假设R(U)不是BCNF, X是R的属性子集,A是R的单个属性,X->A是导致违反BCNF的函式依赖,则将R分解为R-A以及XA。
2.若R-A以及XA仍然不是BCNF,则在R-A以及XA递归地执行上述分解。
例SCT:(S#,CNAME,TNAME),FD:TNAME→CNAME。
可分解为SC(S#,TNAME)和CT(CNAME,TNAME),它们都是BCNF。

转载请注明出处海之美文 » bcnf

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:ailianmeng11@163.com