习题四
4.1 理解并给出下列术语的定义:函数依赖 部分函数依赖 完全函数依赖 传递函数依赖 候选码 主码 外码 全码 主属性 非主属性1NF 2NF 3NF BCNF 4NF 函数依赖集闭包 属性集闭包 函数依赖集等价 最小函数依赖集 无损连接 函数依赖保持
设R(U)是属性集U上的关系模式。若对于R(U)的任意一个可能的关系r,X,Y是属性集U的任意子集,当且仅当对r中任意一个给定的X的属性值,r中都只存在惟一的Y属性值与之对应。也就是说,如果X相等,就有Y也相等,则称Y函数依赖于X或X函数确定Y,记作X→Y。
在R(U)中,如果X?Y,并且对于X的一个真子集X',有X'?Y成立,则称Y对Xp部分函数依赖(Partial Functional Dependency),记作X???Y。
在R(U)中,如果X?Y,并且对于X的任何一个真子集X',都有X'??Y成立,则
f称Y对X完全函数依赖(Full Functional Dependency),记作X???Y。
在R(U)中,如果X?Y,Y??X,Y?Z,则称Z对X传递函数依赖(Transitive
tFunctional Dependency),记做X???Z
f设K为R中的属性或属性组,若K???U,则K为R的候选码。若候选码多于
一个,则选定其中的一个为主码。包含在任何一个候选码中的属性,叫做主属性。不包含在任何候选码中的属性称为非主属性。最简单的情况,码只包含单个属性;最复杂的情况是所有属性集组合成码,称为全码。关系模式R中属性或属性组X并非R的主码,但X是另一个关系模式的主码,则称X是R的外码。
设R是一个关系模式,如果R中的每一个属性A的属性名和属性值都是不可再分的,则称R属于第一范式,记作:R∈1NF。
若R?1NF,且每一个非主属性都完全函数依赖于码,则R?2NF。
关系模式R(U,F)中若不存在这样的码X,属性组Y及非主属性组Z(Z?Y),使得
?
X?Y,Y??X,Y?Z成立,则称R(U,F)?3NF。
关系模式R(U,F)?1NF,若每一个决定因素都含有码,则R?BCNF。
关系模式R(U,F)∈1NF,若对R的每个非平凡多值依赖X→→Y(Y?X),X都包含码,
?则称R(U)满足第四范式,记为R∈4NF。
称所有被一个已知函数依赖集F逻辑蕴涵的那些函数依赖的集合为F的闭包(Closure),+
记为F。
设有关系模式R(U),F是U上的一个函数依赖集,X?U,定义
XF+={A|X?A能由F根据Armstrong 公理导出},
并称XF+为属性集X关于函数依赖集F的闭包。
如果函数依赖集F满足下列条件,则称F是一个极小函数依赖集或最小覆盖。 ① F中每一个函数依赖的右部都是单个属性。
21
② 对F中任一函数依赖X→A,F-{X→A}都不与F等价。
{F-{X→A}}∪{Z-A}都不与F等价,③ 对于F中的任一函数依赖X→A,其中Z为X的任一
子集。
如果函数依赖集F与某个最小依赖集的最小依赖集。
F是R上的一个函数依赖集,R分解为关系模式的集合?={R1(U1), 设R是一个关系模式,
R2(U2), …, Rn(Un)}。如果对于R的满足F的每一个关系r,都有
Fm等价,则称
Fm是F的最小覆盖或
Fm是F
r??R1(r)若F+=(
?R2(r)....?Rn(r),则称?是一个无损连接的分解(lossingless jion
decomposition)
kFii?1)+,则R(U,F)的分解?={R(U,F),....,R(U,F)}}保持函
111kKk数依赖。
4.2 设有关系模式R(A,B,C,D,E,P,G,H),R的函数依赖集F={AB→CE,A→C ,
GP→B ,EP→A ,CDE→P ,HB→P ,D→HG ,ABC→PG},求D+ 【参考答案】 D+={DHG}
4.3 证明函数依赖集F={A→BC,A→D,CD→E}和函数依赖集G={A→BCE,A→ABD,
CD→E}的等价性 【参考答案】
∵ A→BC,A→D,CD→E ,∴A→BCE,A→ABD,有F?G? ∵ A→BCE,A→ABD ,∴ A→BC,A→D,CD→E ,有G?F?
所以F和G等价。
4.4 设关系模式R(ABCD),F是R上成立的函数依赖集,F={A→B,C→B},则相对于F,
试写出关系模式R的候选码,并说明理由 【参考答案】
关系模式R的候选码为ACD
在关系F中B只出现在右边,所以B一定不是候选码 在关系F中D没有出现D必然出现在候选码中 在关系F中AC出现在左边 A→B,C→C,A→A
所以A能推出ABC,因此候选码是ACD
4.5 设有关系模式R(A,B,C,D,E),R的函数依赖集F={AB→D,B→CD,DE→B,C
→D,D→A}
⑴ 计算(AB)+,(AC)+,(DE)+
22
⑵ 求R的所有候选码 ⑶ 求F的最小覆盖 【参考答案】
+
⑴(AB)={ABCD}
+
(AC)={ACD} (DE)+={ABCDE}
⑵ R属性:E, LR属性:ABCD (AE) +={AE} (BE) +={ABCDE} (CE) +={ABCDE} (DE) +={ABCDE}
R的候选码为:BE, CE, DE
⑶ 右部属性单一化:F1={ AB→D,B→C,B→D,DE→B,C→D,D→A } 去掉多余的函数依赖:F2={B→C, DE→B,C→D,D→A} 去掉冗余的属性:没有冗余属性
所以F的最小覆盖Fmin=F2={B→C, DE→B,C→D,D→A}
4.6 设有关系模式R(A,B,C,D),R的函数依赖集F={A→C,C→A,B→AC,D→AC,
BD→A},求F的最小覆盖 【参考答案】
第一步:将F的所有函数依赖的右部都分解成单一属性: F1={ A→C,C→A,B→A ,B→C,D→A,D→C,BD→A } 第二步:去掉冗余的函数依赖:
1考察A→C,令G={C→A,B→A ,B→C,D→A,D→C,BD→A}○,A+G={A}
因为C? AG,所以A→C不冗余;
2考察C→A,令G={A→C, B→A ,B→C,D→A,D→C,BD→A}○,C+G={C} 因为A ?CG,所以C→A不冗余;
+3考察B→A,令G={A→C,C→A,B→C,D→A,D→C,BD→A}○,BG={ABC}
因为A? B+G,所以B→A冗余,从F1中删除B→A,F2={A→C,C→A,B→C,D→A,D→C,BD→A};
+
4考察B→C,令G={A→C,C→A,D→A,D→C,BD→A}○,BG={B}
++
因为C? B+G,所以B→C不冗余;
5考察D→A,令G={A→C,C→A,B→C, D→C,BD→A}○,D+G={ACD}
因为A? D+G,所以D→A冗余,从F2中删除D→A,F3={A→C,C→A,B→C, D→C,BD→A};
6考察D→C,令G={A→C,C→A,B→C,BD→A}○,D+G={D}
因为C? D+G,所以D→C不冗余;
7考察BD→A,令G={A→C,C→A,B→C, D→C}○,(BD)+G={ABCD}
因为A? (BD)+G,所以BD→A冗余,从F3中删除BD→A,F4={A→C,C→A,B→C,
D→C};
23
第三步:去掉冗余的属性:
由于左边都是单属性,所以: Fm=F4={A→C,C→A,B→C, D→C}; 但是结果不唯一。
4.7 设关系模式R(ABC),F是R上成立的FD集,F={C→A,B→A},分解ρ={AB,BC},
判断ρ是否具有函数依赖保持性? 【参考答案】
F1 =?(F)= (B→A)
U1F2 =?U2(F)=?
G = F1∪F2 = { B→A } F={ C→A,B→A }
显然,G必定包含于F+。而F不包含于G+。 因此,有G+≠F+,即
∴ρ不具有函数依赖保持性。 4.8 设关系模式R(ABC),F是R上成立的FD集,F={C→A,B→C},ρ={AB,AC},判
断ρ是否具有“无损连接性”和“函数依赖保持”性 【参考答案】
考察“无损连接性”:
①首先构造初始表,结构如表1
表1 初始表
Aj A B C Ri AB AC a1 a1 a2 b23 b13 a3 ②修改表
逐一考察F中的函数依赖: a) C→A,表的结构不变; b) B→C,表的结构不变;
此时,对F中的每个函数依赖,表的结构都不再变化。又因为表中没有出现a1,a2,a3 的行,所以该分解不具有无损连接性。 考察“函数依赖保持”
F1 =?(F)= (B→A)
U1F2 =?U2(F)=( C→A)
G = F1∪F2 = { B→A ,C→A } F={ C→A,B→C }
显然,G必定包含于F+。而F不包含于G+。
++
因此,有G≠F,即 ∴ρ不具有函数依赖保持性。
4.9 设关系模式R(ABCD),在R上有5个相应的FD集及分解:
⑴ F={B→C,D→A},ρ={AD,BC}
24
⑵ F={AB→C,C→A,C→D},ρ={ACD,BC} ⑶ F={A→BC,C→AD},ρ={ABC,AD} ⑷ F={A→B,B→C,C→D},ρ={AB,ACD} ⑸ F={A→B,B→C,C→D},ρ={AB,AD,CD} 试对上述5中情况分别回答下列问题:
⑴ 确定R的候选码和主码。 ⑵ 是否为无损分解? ⑶ 是否函数依赖保持?
⑷ 确定ρ中每一模式的范式级别。
【参考答案】
1分解⑴ F={B→C,D→A}○,ρ={AD,BC}
A) (BD)+={ABCD} BD是候选码,也是主码
B) 首先构造初始表,结构如表2
表2 初始表
Aj A B C Ri AD BC a1 b21 b12 a2 b13 a3 D a4 b24 修改表 逐一考察F中的函数依赖:
a) B→C,表的结构不变; b) D→A,表的结构不变;
a2,a3 ,此时,对F中的每个函数依赖,表的结构都不再变化。又因为表中没有出现a1,
a4的行,所以该分解不具有无损连接性。
C) F1 =?(F)= (B→C)
U1F2 =?U2(F)=( D→A)
G = F1∪F2 = { B→C ,D→A } F={ B→C, D→A}
显然,G必定包含于F+。而F包含于G+。
因此,有G+=F+,即 ∴ρ具有函数依赖保持性。 D) 模式ad(A,D) ?BCNF,模式bc(B,C) ?BCNF 2分解⑵ F={AB→C,C→A,C→D}○,ρ={ACD,BC}
A) L属性B,LR属性AC ,R属性D
(B)+ = {B}
(AB)+ = {ABCD} 所以AB是候选码 (BC)+ = {ABCD} 所以BC是候选码 选择AB做为主码 B) 构造初始表 Aj A B C D Ri ACD BC a1 b21 b12 a2 a3 a3 a4 b24 25