由于{IS}是{ISQ}的子集,所以R分解为{SD,IB,ISQ,BO}
算法6.5:(分解法)转换为BCNF的 无损连接分解*
例:R(U,F),U={X,Y,Z},F={Y→Z,XZ→Y}, 在保持无 损连接的情况下分解为BCNF。 解答:R的侯选码为XY和XZ;R为3NF。
由于存在着Y→Z,而Y不是码,根据算法6.5将R 分解为R1{(Y,Z),(Y→Z)}
分析两种分解的依赖保持性?
分解1:只有AB,显然,分解1不具有依赖保持性 分解2:保留了所有函数依赖,具有依赖保持性
简单练习: 判定无损连接性和函数依赖性
设S-C-M(S学号,C班级,M班主任)
F={S学号C班级,C班级M班主任,S学号M班主任}
1 {S C (学号,班级),C M (班级,班主任)} 2 {S C (学号,班级),S M (学号,班主任)} 3 {S M (学号,班主任),C M (班级,班主任)}
求得F ' F {S D, I B, IS Q, B O}, 故可得R的保持函数依赖的 3NF分解 {SD, IB, ISQ, BO}, 另外,F '中L, N类属性为I , S , 且( IS ) ISDBOQ 包含所有属性 , 故IS为唯一的候选码。在 的基础上增加IS即为R的无损连接 且保持函数依赖的 3NF分解。
分别求解F 和( Fi ) , 若两者相等,则表示分 解
i 1 k
前后的函数依赖集是等 价的,即具有保持函数 依赖性
例子
R(A,B,C), F={AB, C B}
分解1={(A,B) {AB},
分解2={(A,B) {AB}),
(A,C) }
(B,C) {C B}}