首页 理论教育 数据库高级应用技术(第2版)中关系模式分解算法

数据库高级应用技术(第2版)中关系模式分解算法

时间:2023-11-03 理论教育 版权反馈
【摘要】:关系模式分解的目的是解决数据冗余的问题,但要考虑多方面的问题。如原关系模式中信息是否丢失,函数依赖关系是否保持等,要研究这方面的问题就要涉及关系模式分解算法的具体准则。二元分解是将原关系模式分解成两个子关系模式。如将关系模式R分解成关系模式集ρ,ρ中包含两个关模式R1、R2,即ρ={R1,R2},则ρ是R的二元分解。

数据库高级应用技术(第2版)中关系模式分解算法

关系模式分解的目的是解决数据冗余的问题,但要考虑多方面的问题。如原关系模式中信息是否丢失,函数依赖关系是否保持等,要研究这方面的问题就要涉及关系模式分解算法的具体准则

关系模式的分解算法中有以下几方面的准则:

(1)若要求分解具有无损连接性,则模式分解一定可以达到第四范式(4NF)。

(2)若要求分解保持函数依赖性,则模式分解可以达到第三范式(3NF),但不一定能达到巴斯-科德范式(BCNF)。

(3)若要求分解既具有无损连接性,又保持函数依赖性,则模式分解可以达到第三范式(3NF),但不一定能达到巴斯-科德范式(BCNF)。

1.二元分解的无损连接性判断

二元分解是关系模式分解中最简单的一种分解方式。二元分解是将原关系模式分解成两个子关系模式。如将关系模式R分解成关系模式集ρ,ρ中包含两个关模式R1、R2,即ρ={R1,R2},则ρ是R的二元分解。

当关系模式分解是最简单的二元分解(ρ={R1,R2})时,ρ是无损连接分解的判断准则是当且仅当下面两个条件中至少有一个成立:

条件(1):R1和R2两模式属性的交集可以决定R1与R2两模式属性的差集,即(R1

R2)→(R1-R2)。(www.xing528.com)

条件(2):R1和R2两模式属性的交集可以决定R2与R1两模式属性的差集,即(R1∩R2)→(R2-R1)。

如关系模式ER(E_id,T_dep,R_pos,R_sal),且存在如下函数依赖关系F={E_id→T_dep,E_id→R_pos,E_id→R_sal}。若关系模式ER分解为两个子关系模式T(E_id,T_dept)和R(E_id,R_pos,R_sal),则关系模式T与R的交集T∩R={E_id},T与R的差集T-R={T_dept},R与T的差集R-T={R_ pos,R_sal}。从原关系模式ER的函数依赖关系F中可以看到有函数依赖子集{E_id→T_dep},所以(T∩R)→(T-R)成立;同时也可以看到存在函数依赖子集{E_id→R_pos,E_id→R_sal},所以(T∩R)→(R-T)也成立。因此分解出来的子关系模式T、R同时满足了条件(1)与条件(2),而无损性分解的条件是只要满足其中一个条件即可,因而子关系模式T、R是原关系模式R的无损分解。

2.转换为第三范式(3NF)保持函数依赖性的无损连接分解

保持函数依赖性的无损连接分解是指一个关系模式分解为若干个关系模式后,原关系模式的函数依赖性仍然保持,并且原关系模式的数据信息没有发生丢失,仍然完整地体现在分解出来的子关系模式中,子关系模式作自然连接后能恢复原关系模式中的数据记录。要维护模式分解后既保持函数依赖,同时又是无损连接分解,需按以下三大步骤操作:

(1)对关系模式R中的函数依赖集F进行“极小化”处理,处理后的函数依赖集记为F。

(2)对F中的每一个函数依赖X→Y构成一个关系模式RiX,Y),Ri为第三范式(3NF),

ρ={R1,R2,…,Rn}。

(3)如果每个Ri不包含R的候选键,那么把候选键作为一个模式放入ρ中,ρ即所求。

如关系模式R(A,B,C,D,E),R的最小依赖集Fmin={A→B,C→D},则把关系模式R分解为R1(A,B)、R2(C,D)、R3(A,C,E)三个子关系模式,则R1、R2、R3为关系模式R的一个保持函数依赖性的无损连接分解。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈