BCNF范式

BCNF:如果关系模式R(U,F)的所有属性(包括主属性和非主属性)都不传递依赖于R的任何候选关键字,那么称关系R是属于BCNF的。或是关系模式R,如果每个决定因素都包含关键字(而不是被关键字所包含),则RCNF的关系模式。    
  例:配件管理关系模式   WPE(WNO,PNO,ENO,QNT)分别表仓库号,配件号,职工号,数量。有以下条件    
  a.一个仓库有多个职工。    
  b.一个职工仅在一个仓库工作。    
  c.每个仓库里一种型号的配件由专人负责,但一个人可以管理几种配件。    
  d.同一种型号的配件可以分放在几个仓库中。    
  分析:由以上得   PNO   不能确定QNT,由组合属性(WNO,PNO)来决定,存在函数依赖(WNO,PNO)   ->   ENO。由于每个仓库里的一种配件由专人负责,而一个人可以管理几种配件,所以有组合属性(WNO,PNO)才能确定负责人,有(WNO,PNO)->   ENO。因为   一个职工仅在一个仓库工作,有ENO   ->   WNO。由于每个仓库里的一种配件由专人负责,而一个职工仅在一个仓库工作,有   (ENO,PNO)->   QNT。    
  找一下候选关键字,因为(WNO,PNO)   ->   QNT,(WNO,PNO)->   ENO   ,因此   (WNO,PNO)可以决定整个元组,是一个候选关键字。根据ENO->WNO,(ENO,PNO)->QNT,故(ENO,PNO)也能决定整个元组,为另一个候选关键字。属性ENO,WNO,PNO   均为主属性,只有一个非主属性QNT。它对任何一个候选关键字都是完全函数依赖的,并且是直接依赖,所以该关系模式是3NF。    
  分析一下主属性。因为ENO->WNO,主属性ENO是WNO的决定因素,但是它本身不是关键字,只是组合关键字的一部分。这就造成主属性WNO对另外一个候选关键字(ENO,PNO)的部   分依赖,因为(ENO,PNO)->   ENO但反过来不成立,而P->WNO,故(ENO,PNO)->   WNO   也是传递依赖。    
  虽然没有非主属性对候选关键辽的传递依赖,但存在主属性对候选关键字的传递依赖,同样也会带来麻烦。如一个新职工分配到仓库工作,但暂时处于实习阶段,没有独立负责对某些配件的管理任务。由于缺少关键字的一部分PNO而无法插入到该关系中去。又如某个人改成不管配件了去负责安全,则在删除配件的同时该职工也会被删除。    
  解决办法:分成管理EP(ENO,PNO,QNT),关键字是(ENO,PNO)工作EW(ENO,WNO)其关键字是ENO    
  缺点:分解后函数依赖的保持性较差。如此例中,由于分解,函数依赖(WNO,PNO)->   ENO   丢失了,   因而对原来的语义有所破坏。没有体现出每个仓库里一种部件由专人负责。有可能出现   一部件由两个人或两个以上的人来同时管理。因此,分解之后的关系模式降低了部分完整性约束。  

posted on 2007-06-25 21:36  子原  阅读(3888)  评论(1编辑  收藏  举报

导航