⚡ 求候选码与函数分解

如何求一个关系模式的候选码-----候选码怎么求

模式分解_李老八的博客-CSDN博客_模式分解

求候选码

属性闭包

**闭包就是由一个属性直接或间接推导出的所有属性的集合。**记作: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博客_无损连接性和依赖保持性

(64条消息) 无损连接分解_陈九礼的博客-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。