⚡ 求候选码与函数分解
求候选码
属性闭包
**闭包就是由一个属性直接或间接推导出的所有属性的集合。**记作:X+F = U
例如:
f= {a->b,b->c,a->d,e->f };
由a可直接得到b和d,间接得到c,则a的闭包就是 {a,b,c,d }
候选码求解方法
⭐ 教材P286页
对于给定的关系R(A1,A2,…An)/R (U,F)和函数依赖集F(F是R的函数依赖集),可将其属性分为4类:
1️⃣ L类--仅出现在函数依赖左部的属性。
2️⃣ R 类--仅出现在函数依赖右部的属性。
3️⃣ N 类/NLR类--在函数依赖左右两边均未出现的属性。
4️⃣ LR类--在函数依赖左右两边均出现的属性。
根据候选码的特性,可以得出如下结论:
1️⃣ 定理1:若X(X⊆R)是L类属性,则X必为R的任一候选码的成员。
若X+F = U,则X必为R的唯一候选码。
2️⃣ 定理2:若X(X⊆R)是R类属性,则X不是R的任一候选码的成员。
3️⃣ 定理3:若X(X⊆R)是N类属性,则X必为R的任一候选码的成员。
4️⃣ 定理4:若(X⊆R)是L类和N类属性组成的属性集,若X+F = U,则X必为R的唯一候选码。
5️⃣ 推论:若X(X⊆R)是L类和N类组成的属性集,且X+包含了R的全部属性;则X是R的唯一候选码。
函数分解
(64条消息) 通过示例理解数据库相关概念(五、无损连接,无损分解,依赖保持性等)_菜到不敢run的博客-CSDN博客_无损连接性和依赖保持性
相关真题
2015年35/36题
给定关系模式R(A1,A2,A3,A4),R上的函数依赖集F= {A1A3→A2,A2→A3},R(35)。
A.有一个候选关键字A1A3
B.有一个候选关键字A1A2A3
C.有二个候选关键字A1A3A4和A1A2A4
D.有三个候选关键字A1A2,A1A3和A1A4
若将R分解为p={(A1,A2,A4),(A1,A3)}.那么该分解是(36)的。
A.无损联接
B.无损联接且保持函数依赖
C.保持函数依赖
D.有损联接且不保持函数依赖
【答案】C D
因为A1A3→A2,A2→A2,没有出现A4,所以候选关键字中肯定包含A4,
因为A1只出现在左边,肯定包含A1
因为候选码肯定包含A1A4,那么根据选项,只能选C。 验证如下:
求A1A4A3的闭包:
A1A4A3 → (A1A4A3 + A1A3 →A2) → { A1,A4,A3, A2 } = R(U)
⭐ 故 A1A4A3 为候选码
求A1A4A2的闭包:
A1A4A2 → (A1A4A2 + A2 →A3) → { A1,A4,A2, A3 } = R(U)
⭐ 故 A1A4A2 为候选码
设U1={A1,A2,A4},U2={A1,A3},那么可得出:(U1∩U2)→(U1-U2)=A1→A2,(U1∩U2)→(U1-U2)=A1→A3,
而A1→A2,A1→A3∉F+所以分解ρ是有损连接的。
又因为F1=F2=∅,F+≠(F1∪F2)+,所以分解不保持函数依赖。
2015年58/59题
给定关系模式R<U,F>,其中U={ABCDE},F ={ AB→DE,AC→E,AD→B,B→C,C→D},则R的所有候选码为(58),关系R属于(59)。
(58)A. AB、AC B. AB、AD C. AC、AD D. AB、AC、AD
(59)A. 1NF B. 2NF C. 3NF D. BCNF
【答案】D C
1)根据闭包求候选码
L: ABCD -> A , 肯定包含A
R: BCDE -> E, 肯定不包含E
AB-> AB + DE + C = ABDEC,
AC->AC + E + D-> ACED -> ACED + B = ABCDE
AD-> AD + B -> ADB -> ADB + DE + C = ABCDE
可知AB、AC、AD全部为候选码
2)根据候选码的求解结果,关系R的非主属性为E。
三个候选码中,任何一个候选码中的属性去掉后,即(A)+=A,(B)+=BCD,(C)+=CD,(D)+=D,都不能决定E,
故不存在非主属性E对码的部分依赖,关系R属于2NF。
除了三个候选码决定E之外,没有哪个属性集决定E,即E直接依赖于码,关系R属于3NF。
存在函数据依赖B→C,左边不是码,故关系R不属于BCNF。
因此,关系R属于3NF。