1.分解
【定义7.19】关M模式R(U,F)的一个分解p是指/» = {0叫,耳)工2叫,勇,*匕叫凡)},其
中:U = UU(,并且没有Uqq, 10,庄n, F,是F 在U,上的投影,F产{X—Y|XTYUF+AXYWU,}。
对一个给定的模式进行分解,使得分解后的模式是否与原来的模式等价有二种情况:
(1)分解具有无损连接性。
(2)分解要保持函数依赖。
(3)分解既要无损连接性,又要保持函数依赖。
2.无损连接
【定义 7.20】 p = {R1(U1,F1),R2(U2,F2),-,Rt(Ui,Ft))是关系模式R(U,F)的一个分解,若
对R(U,F)的任何一个关系r均有r = %(i)成立,则称分解户具有无损连接性,简称无损分解。
k
其中,mp(r) = lxi7tI. (r) D
j=l
【定理7.1】关系模式R(U,F)的一个分解p = {Ri(U"J,R2U,F2)},具有无损连接的充
分必要的条件是:Ujnu2 ^U!-U2er或UZU2 TU2-U3FL证明略。
3.保持函数依赖
【定义7.21】设关系模式R(U,F)的一个分解p = {R|(U|,与),RztUzE),…,Rk(Uk,FQ},如
果『=[[|耳卜 则称分解P保持函数依赖。
4.判别一个分解的无损连接性算法
5.将关系模式转换成3NF且保持函数依赖的算法
【算法7.2】转换成3NF且保持函数依赖的分解算法.
步骤1:对R(U,F)的函数依赖集F进行极小化处理(处理后的结果仍记为F)。
步骤2:找出不在F中出现的属性,将这样的属性构成一个关系模式。把这些属性从U中
去掉,剩余的属性仍记为U。
步骤3:若有X-AGF,且XA=U,则p={R},算法终止。
步骤4:否则,对F按具有相同左部的原朋分组(假定分为左组),每一组函数依赖Fi所
涉及的全部属性形成一个属性集U”若UWU,(勇)就去掉U,。由于经过了步骤2,故合并属
性集 Ui: U = l)UiO 于是 p = {R|(U|,E),R2(U2,5»rRJU》FQ}构成 R(U,F)的一个保持函
j=l
数依赖的分解.并且,每个R,(U,疣)均属于3NF且保持函数依赖。
6.将关系模式转换成3NF且无损连接又保持函数依赖的算法
【算法7.3】将一个关系模式转换成3NF,使它既具有无损连接又保持函数依赖的分解。
输入:关系模式R和R的最小函数依赖集F。
输出:R(U,F)的一个分解p = {Ri(U],耳),RzUE),…,玖(U^FQ},也为3NF,且p具有
无损连接又保持函数依赖的分解。
操作步骤如下:
(1)根据算法7.2求出保持依赖的分解
(2)判断分解p是否具有无损连接性,若有,转(4);
(3)令p=pu{X},其中X是R的码;
(4)输出p。
7.将关系模式转换成BCNF且无损连接的算法