分解为BCNF的例子:
例如:有U = {学号, 课程号, 课程名, 学习期限, 成绩, 奖学金},
F= {课程号→学习期限,( 学号, 课程号)→成绩,成绩→ 奖学金,课程名 →课程号,课程号→课程名}。现将函数依赖模式( U, F) 做转化为BCNF的分解。步骤如下:
( 1) 求出F的等价的最小函数依赖集合F’=F,令ρ= {( U, F) };
( 2) 因检查到:成绩→ 奖学金∈F,但这里成绩不属于KEY(U, F),所以(U, F)不属于 BCNF,应做如下分解:
U={成绩,奖学金}(= X∪{A})
F= {成绩→ 奖学金}
U= {学号, 课程号, 课程名, 学习期限, 成绩} ( = U - {A})
F= {课程号→ 学习期限,(学号, 课程号) → 成绩,课程号→课程名,课程名→ 课程号}
令ρ= {( U, F) , (U, F) }
(3) ρ中(U, F)已属于BCNF,但在(U, F)中检查到:课程号→学习期限∈F,但这里课程号不属于KEY(U, F),所以(U, F)仍不属于BCNF,于是将(U, F)再做如下分解:
U= {课程号, 学习期限} ( = X∪{A})
F= {课程号→ 学习期限}
U= {学号, 课程号, 课程名, 成绩} ( = U - {A})
F= {(学号, 课程号) → 成绩, 课程号→ 课程名, 课程名→ 课程号}令ρ= {( U, F) , (U, F) , (U, F) }
(4) ρ中(U, F) , (U, F)都已属于BCNF,但在(U, F) 中仍检查到:课程号→ 课程名∈ F,但课程号不属于KEY(U, F),所以知(U, F)仍不属于BCN F,于是再做如下的分解:
U= {课程号, 课程名} ( = X ∪ {A})
F= {课程号→ 课程名, 课程名→ 课程号}
U= {课程号, 学号, 成绩} ( = U - {A})
F= {( 学号, 课程号) → 成绩}
令ρ= {( U, F) , (U, F) , (U, F) , (U, F) }
ρ中的所有函数依赖模式全属于BCN F,算法终止。
但算法3. 4 给出的转化为BCN F的分解, 可保证无损连接, 而有时不能保证无损依赖。例如: U = {学生, 课程, 教师}, 规定一个教师教一门课, 但一门课可由多个教师教, 则有F=
{教师→ 课程, (学生, 课程) → 教师}。显然(学生, 课程) 是(U, F) 的关键字, 但在F中有教师→ 课程, 所以(U, F) 不属于BCN F 。按以上算法(U, F) 分解为
U= {教师, 课程} ( = X ∪ {A})
F= {教师→课程}
U= {学生, 教师} ( = R - {A})
F= { }
显然这样分解后( 学生, 课程)→教师的函数依赖丢失了。
1、已知:关系模式R(U,F)U=ABCD F={A→C,C→A, B→AC,D→AC}求:(1)(AD)F+。
(2)R的候选码。
(3)求F的最小函数依赖集,并将模式R无损失连接且保持函数依赖分解为3NF
2、设有一个反映学生及其所选课程信息的关系模式:
R(学生号,学生名,学生系别,系办公地点,课程号,课程名,授课教师,成绩) 如果规定:
学生号、课程号惟一;每门课程只有一位授课教师;每个系的办公地点固定。学生名
和课程名有可能重复。每个学生可以选修多门课程,每门课程可以有多个学生选修;学生选修课程最终会有选修成绩。
问题(1)根据上述规定,写出模式R的基本FD和关键码。
问题(2)R最高达到第几范式,并说明理由。
问题(3)将R规范到3NF。
1、解:(1)(AD)F+=ADC,候选码:BD
(2)最小函数依赖集:
先分解为F={A→C,C→A,B→A, B→C, D→A ,D→C};
再去除冗余函数依赖,检查D→C,G=F{ D→C }={ A→C,C→A,B→A, B→C, D→A },DG+={A,D,C},因C∈{A,D,C},多余,去掉;
检查D→A,G=F{ D→A }={ A→C,C→A,B→A, B→C },DG+={D},A {D}。保留;同理:A→C,C→A,B→A保留,B→C多余,去掉。因此,Fm={A→C,C→A,B→A,D→A}。
(3)将模式R分解为3NF,P{AC, BA, DA, BD}。
或者,Fm={A→C,C→A, B→C,D→C},P{AC,BC,DC,BD}
2、解:R的基本函数依赖FD 有:学号→学生名,学号→学生系别,学生系别→系办
公地点,课程号→课程名,课程号→授课教师,(学号,课程号)→成绩
问题(2)R最高达到第几范式,并说明理由。
解:R最高达到第一范式,因为该关系模式中码是(学号,课程号),其中,学号→学生名,(学号,课程号)→学生名,可知存在非主属性学生名部分依赖于码(学号,课程号)。
解:将关系R的函数依赖集FD进行极小化处理,得到的极小函数依赖集,即本题的基本函数依赖。
将这些函数依赖按具有相同左部的原则分组,可分为如下四组:
Z1:学号→学生名,学号→学生系别,涉及的属性集为(学号,学生名,学生系别)
Z2:学生系别→系办公地点, 涉及的属性集为(学生系别,系办公地点)
Z3:课程号→课程名,课程号→授课教师,涉及的属性集为(课程号,课程名,授课教师)
Z4:(学号,课程号)→成绩,涉及的属性集为(学号,课程号,成绩) 因此,根据算法,以上各个属性集构成的关系模式即满足第3范式。将R分解的关系模式如下所示:
学生(学号,学生名,学生系别) 系(学生系别,系办公地点)
课程(课程号,课程名,授课教师) 选修(学号,课程号,成绩)
因篇幅问题不能全部显示,请点此查看更多更全内容