3NF、BCNF和4NF基本概念和分解

一、第三范式(3NF)——相对于BCNF,允许存在主属性对候选码的传递依赖和部分依赖

定义:如果关系模式R∈2NF,且每个非主属性都不传递函数依赖于R的主关系键,则称R属于第三范式,简称3NF。

1、把一个关系模式分解成3NF,使它具有保持函数依赖性

算法如下:

其中提到了最小函数依赖集,那么最小函数依赖集怎么求呢?方法如下:

举个例子:在R(U,F)中,U=ABCDEG,F={BD,DGC,BDE,AGB,ADGBC}

1.1首先求最小依赖集

(1)右部属性单一化,F={BD,DGC,BDE,AGB,ADGB,ADGC}

(2)去掉左边多余属性,只针对非单属性

DGC,若去掉D,则G+=G不包含C,D保留(不冗余),若去掉G,(D+=D不包含C,G保留

BDE,(D+=D,(B+=BDE包含E,则可以BE代替此函数依赖

AGB,G+=G,(A+=A

ADGB,(DG+=DGC,(AG+=AGB包含B,则可以由AGB代替

ADGC,(DG+=DGC包含C,则可以由DGC代替

所以最小依赖集F={BD,DGC,BE,AGB}

(3)去掉多余的依赖

去掉BD,(B+=BE,不包含D,则不冗余,不去掉

去掉DGC,(DG+=DG,不包含C

去掉BE,(B+=BD,不包含E

去掉AGB,AG+=AG,不包含B

所以最小依赖集F={BD,DGC,BE,AGB}

1.2R中所有属性都在最小依赖集中出现,转下一步

1.3按照具有相同左部的原则分为:

R1=BDE,R2=DGC,R3=AGB

所以最终分解为ρ={R1(BDE),R2(DGC),R3(AGB)}

2、把一个关系模式分解成为3NF,使它具有保持函数依赖且无损

算法:step1,求F的规范覆盖Fc

  step2,初始化,置ρ={ }

  step3,逐个考察Fc中的每一个FD:XY,如果ρ中的每一个关系模式都不包含XY,则将XY加入ρ

   step4,考察R的候选码,如果ρ中所有关系模式都不包含R的候选码,则将R的某个候选码加入ρ

2.1其中用到了规范覆盖,那么规范覆盖怎么求呢?如下:

步骤1,合并函数依赖,将Fc中如α1→β1α1β2转换成α1→β1β2,得到新函数依赖集F1

步骤2,去除无关属性,找出F1αβ中含有无关属性的函数依赖α→β,去除无关属性后,代替原依赖集

其中步骤2中的无关属性定义:

有了无关属性的定义后,步骤2比较好解决了。

举个例子:r(R)=r(A,B,C)和F={ABC,BC,AB,ABC}计算Fc

合并:ABC与AB合并为ABC,F1={ABC,BC,ABC}

去除无关属性(单属性不存在无关属性):

对于ABC,多属性在左边,去除AB中的A,r={AB}-{A}=B,(B+=BC包含C,所以A无关,变为BC,已存在,F1={BC,ABC}

对于ABC,多属性在右边,去除BC中的B,F2={BC,AC},计算(A+=AC,不包含B,不无关

                                             去除BC中的C,F2={BC,AB},计算(A+=AC,包含C,则BC中的C是无关属性

变为F={BC,AB}

最终规范覆盖Fc={BC,AB}

继续以此题为例,求出候选码,为A,所以依次考察Fc中的BC,初始ρ={},将BC加入ρ中,ρ={R1(BC)}。再考虑AB,ρ中的关系模式不包含AB,则将AB加入ρ中,ρ={R1(BC),R2(AB)}因为候选码A已经在R2中,所以分解结束,最终分解为ρ={R1(BC),R2(AB)}。如果这里最终只有ρ={BC},那么要把候选码A加入进去,则ρ={R1(BC),R2(A)}。这里附上候选码的计算方法:

二、BC范式——排除了任何属性(主、非主属性)对候选码的部分依赖和传递依赖,主属性之间的传递依赖

定义:如果关系模式R∈1NF,且所有的函数依赖XY,决定因素X都包含了R的一个候选键,则称R属于BC范式。

算法:将一个关系模式分解成BCNF

(1)令ρ={R}

(2)如果ρ中所有模式都是BCNF,则转(4)

(3)如果ρ中有一个关系模式S不是BCNF,则S中必能找到一个函数依赖XA且X不是S的候选键,且A不属于X,设S1=XA,S2=S-A,用分解{S1,S2}代替S,转(2)

(4)分解结束,输出ρ

举个例子:将R(A,B,C,D)规范到BCNF,候选键为AC和BC,F={AB,BA,ACD,BCD}

ρ={R(A,B,C,D)},分解为S1(AB),S2(ACD)

三、第4范式(4NF)

定义:

其中涉及到多值依赖的定义,

最终4NF的分解算法如下:

猜你喜欢

转载自blog.csdn.net/yuyang_z/article/details/79115991
今日推荐