数据库系统概论CH6部分习题解答Word格式.docx
《数据库系统概论CH6部分习题解答Word格式.docx》由会员分享,可在线阅读,更多相关《数据库系统概论CH6部分习题解答Word格式.docx(21页珍藏版)》请在冰豆网上搜索。
完全函数依赖、部分函数依赖:
在R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’
Y,则称Y对X完全函数依赖,记作:
若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作:
传递依赖:
在R(U)中,如果X→Y,(Y
X),Y
X,Y→Z,Z
Y,则称Z对X传递函数依赖。
候选码、主码:
设K为R〈U,F〉中的属性或属性组合,若
则K为R的候选码(Candidatekey)。
若候选码多于一个,则选定其中的一个为主码(Primarykey)。
1)这里我们用函数依赖来严格定义码的概念。
在第二章中我们只是描述性地定义码(可以复习2.2.1):
若关系中的某一属性组的值能惟一地标识一个元组,则称该属性组为候选码(Candidatekey)。
2)因为码有了严格定义,在学习了《概论》5.3数据依赖的公理系统后就可以从R〈U,F〉的函数依赖集F出发,用算法来求候选码。
答
外码:
关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码(Foreignkey),也称外码。
全码:
整个属性组是码,称为全码(All-key)。
lNF:
如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈lNF。
第一范式是对关系模式的最起码的要求。
不满足第一范式的数据库模式不能称为关系数据库。
2NF:
若关系模式R∈lNF,并且每一个非主属性都完全函数依赖于R的码,则R∈2NF。
3NF:
关系模式R〈U,F〉中若不存在这样的码X,属性组Y及非主属性Z(Z
Y)使得X→Y,(Y
X),Y→Z成立,则称R〈U,F〉∈3NF。
BCNF:
关系模式R〈U,F〉∈lNF。
若X→Y且Y
X时X必含有码,则R〈U,F〉∈BCNF。
读者要真正理解这些范式的内涵。
各种范式之间的联系:
5NF
4NF
BCNF
3NF
2NF
1NF(《概论》上图6.2)。
能够理解为什么有这种包含关系。
多值依赖:
设R(U)是属性集U上的一个关系模式。
X,Y,Z是U的子集,并且Z=U-X-Y。
关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。
4NF:
关系模式R〈U,F〉∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y
X),X都含有码,则称R〈U,F〉∈4NF。
解析
对于多值依赖的定义有多种。
可以对比不同的定义来理解多值依赖,选择自己容易理解的一种定义来掌握多值依赖概念。
2.建立一个关于系、学生、班级、学会等诸信息的关系数据库。
描述学生的属性有:
学号、姓名、出生年月、系名、班号、宿舍区。
描述班级的属性有:
班号、专业名、系名、人数、入校年份。
描述系的属性有:
系名、系号、系办公室地点、人数。
描述学会的属性有:
学会名、成立年份、地点、人数。
有关语义如下:
一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。
一个系的学生住在同一宿舍区。
每个学生可参加若干学会,每个学会有若干学生。
学生参加某学会有一个入会年份。
请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。
指出各关系的候选码、外部码,有没有全码存在?
关系模式:
学生S(S#,SN,SB,DN,C#,SA)
班级C(C#,CS,DN,CNUM,CDATE)
系D(D#,DN,DA,DNUM)
学会P(PN,DATEl,PA,PNUM)
学生-学会SP(S#,PN,DATE2)
其中,S#--学号,SN--姓名,SB--出生年月,SA--宿舍区
C#--班号,CS--专业名,CNUM--班级人数,CDATE--入校年份
D#--系号,DN--系名,DA--系办公室地点,DNUM--系人数
PN--学会名,DATEl--成立年月,PA--地点,PNUM--学会人数,DATE2--入会年份
每个关系模式的极小函数依赖集:
S:
S#→SN,S#→SB,S#→C#,C#→DN,DN→SA
C:
C#→CS,C#→CNUM,C#→CDATE,CS→DN,(CS,CDATE)→C#
/*因为每个专业每年只招一个班*/
D:
D#→DN,DN→D#,D#→DA,D#→DNUM
/*按照实际情况,系名和系号是一一对应的*/
P:
PN→DATE1,PN→PA,PN→PNUM
SP:
(S#,PN)→DATE2
S中存在传递函数依赖:
S#→DN,S#→SA,C#→SA
/*因为S#→C#,C#→DN,DN→SA*/
C中存在传递函数依赖:
C#→DN
/*因为C#→CS,CS→DN*/
(S#,PN)→DATE2和(CS,CDATE)→C#均为SP中的函数依赖,是完全函数依赖。
关系候选码外部码全码
SS#C#,DN无
CC#,(CS,CDATE)DN无
DD#和DN 无无
PPN 无无
SP(S#,PN)S#,PN无
读者应该根据题目中给出的有关语义写出关系模式中的数据依赖,有些依赖可以按照实际情况写出,也许题目中并没有明显指出。
例如,按照实际情况,系名和系号是一一对应的,因此有D#→DN,DN→D#。
3*.试由Armostrong公理系统推导出下面三条推理规则:
(1)合并规则:
若X→Z,X→Y,则有X→YZ
(2)伪传递规则:
由X→Y,WX→Z有XW→Z
(3)分解规则:
X→Y,Z
Y,有X→Z
证明
(1)已知X→Z,由增广律知XY→YZ,又因为X→Y,可得XX→XY→YZ,最后根据传递律得X→YZ。
(因为XX等于X)
(2)已知X→Y,据增广律得XW→WY,因为WY→Z,所以XW→WY→Z,通过传递律可知XW→Z。
(3)已知Z
Y,根据自反律知Y→Z,又因为X→Y,所以由传递律可得X→Z。
5.试举出3个多值依赖的实例。
(l)关系模式MSC(M,S,C)中,M表示专业,S表示学生,C表示该专业的必修课。
假设每个专业有多个学生,有一组必修课。
设同专业内所有学生选修的必修课相同,实例关系如下。
按照语义对于M的每一个值Mi,S有一个完整的集合与之对应而不问C取何值,所以M→→S。
由于C与S的完全对称性,必然有M→→C成立。
M
S
C
M1
S1
C1
S1
C2
S2
……
(2)关系模式ISA(I,S,A)中,I表示学生兴趣小组,S表示学生,A表示某兴趣小组的活动项目。
假设每个兴趣小组有多个学生,有若干活动项目。
每个学生必须参加所在兴趣小组的所有活动项目,每个活动项目要求该兴趣小组的所有学生参加。
按照语义有I→→S,I→→A成立。
(3)关系模式RDP(R,D,P)中,R表示医院的病房,D表示责任医务人员,P表示病人。
假设每个病房住有多个病人,有多个责任医务人员负责医治和护理该病房的所有病人。
按照语义有R→→D,R→→P成立。
12.下面的结论哪些是正确的,哪些是错误的?
对于错误的结论请给出理由或给出一个反例说明之。
(1)任何一个二目关系都是属于3NF的。
√
(2)任何一个二目关系都是属于BCNF的。
(3)任何一个二目关系都是属于4NF的。
R(X,Y)如果X→→Y即X、Y之间存在平凡的多值依赖,R属于4NF。
*(4)当且仅当函数依赖A→B在R上成立,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接。
×
当A→B在R上成立,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接。
反之则不然。
正确的应该是:
当且仅当多值依赖A→→B在R上成立,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接。
(5)若R.A→R.B,R.B→R.C,则R.A→R.C √
(6)若R.A→R.B,R.A→R.C,则R.A→R.(B,C)√
(7)若R.B→R.A,R.C→R.A,则R.(B,C)→R.A √
(8)若R.(B,C)→R.A,则R.B→R.A,R.C→R.A ×
反例:
关系模式SC(S#,C#,G),(S#,C#)→G,但是S#
G,C#
G。
补充习题
13.设关系模式R(A,B,C,D),F是R上成立的FD集,F={AB→CD,A→D}。
①试说明R不是2NF模式的理由。
②试把R分解成2NF模式集。
答:
①从已知FD集F,可知R的候选键是AB。
另外,AB→D是一个局部依赖,因此R不是2NF模式。
②此时R应分解成ρ={AD,ABC},ρ是2NF模式集。
(注:
ρ={AD,ABC}表示分解结果由两个尚未命名的关系模式组成;
其中,第一个关系模式的属性集为(A,D),AD是其简单记法,该关系模式有待命名;
第二个关系模式的属性集为(A,B,C),该关系模式也有待命名。
这种记法后面还要用到。
)
14.设关系模式R(A,B,C),F是R上成立的FD集,F={C→B,B→A}。
①试说明R不是3NF模式的理由。
②试把R分解成3NF模式集。
①从已知FD集F,可知R的候选键是C。
从C→B和B→A,可知C→A是一个传递依赖,因此R不是3NF模式。
②此时R应分解成ρ={CB,BA},ρ是3NF模式集。
15.设有一个记录各个球队队员每场比赛进球数的关系模式
R(队员编号,比赛场次,进球数,球队名,队长名)
如果规定每个队员只能属于一个球队,每个球队只有一个队长。
①试写出关系模式R的基本FD和关键码。
②说明R不是2NF模式的理由,并把R分解成2NF模式集。
③进而把R分解成3NF模式集,并说明理由。
解:
(1)根据每个队员只能属于一个球队,可写出FD:
队员编号→球队名;
根据每个球队只有一个队长,可写出FD:
球队名→队长名;
“每个队员每场比赛只有一个进球数”,这条规则也是成立的,因此还可写FD:
(队员编号,比赛场次)→进球数。
从上述三个FD可知道,R的码为(队员编号,比赛场次)。
(2)从(l)可知,R中存在下面两个FD:
(队员编号,比赛场次)→(球队名,队长名)
队员编号→(球队名,队长名)
显然,其中第一个FD是一个局部依赖,因此R不是2NF模式。
对R应该进行分解,由第二个FD的属性可构成一个模式,即
R1(队员编号,球队名,队长名);
另一个模式由R的属性集去掉第二个FD右边的属性组成,即
R2(队员编号,比赛场次,进球数)。
(注:
请参考《讲稿》中的逐次分解法。
R1和R2都是2NF模式,因此ρ={R1,R2}
(3)R2(队员编号,比赛场次,进球数)中,FD是(队员编号,比赛场次)→进球数,码为(队员编号,比赛场次),可见R2已是3NF模式。
R1(队员编号,球队名,队长名)中,FD有两个:
队员编号→球队名
球队名→队长名
码为队员编号,可见存在传递依赖,因此R1不是3NF模式。
对R1应分解成两个模式:
R11(队员编号,球队名),R12(球队名,队长名)。
这两个模式都是3NF模式。
因此,R分解成3NF模式集时,ρ={R11,R12,R2}。
16.设有关系模式
R(职工名,项目名,工资,部门名,部门经理)
如果规定每个职工可参加多个项目,各领一份工资;
每个项目只属于一个部门管理;
每个部门只有一个经理。
(l)R的基本FD有三个:
(职工名,项目名)→工资
项目名→部门名
部门名→部门经理
码为(职工名,项目名)。
(2)根据(l),R中存在下列两个FD:
(职工名,项目名)→(部门名,部门经理)
项目名→(部门名,部门经理)
其中前一个FD是一个局部依赖,因此R不是2NF模式。
R应分解成两个模式:
R1(项目名,部门名,部门经理)
R2(职工名,项目名,工资)
R1和R2都是2NF模式。
(3)R2已是3NF模式。
在R1中,由于存在两个FD:
即存在一个传递依赖,因此R1不是3NF模式。
R11(项目名,部门名),R12(部门名,部门经理)。
因此,R分解成3NF模式集时,ρ={R11,R12,R2}。
17.为什么要进行关系模式的分解?
分解的依据是什么?
答:
由于数据之间存在着联系和约束,在关系模式的中可能会存在数据冗余和操作异常现象,因此需把关系模式进行分解,以消除冗余和异常现象。
分解的依据是数据依赖和模式的标准(范式)。
18.对给定的关系模式R(U,F),U={A,B,C},F={A→B},如下的两个分解:
(1)ρ1={AB,BC}
(2)ρ2={AB,AC}
判断这两个分解否无损。
解
(1)根据定理判断本题
由于仅仅将原关系模式分解为两个关系模式,故可用定理判断。
因AB∩BC=B
AB-BC=A
BC-AB=C
故B→A
F+
B→C
F+
故ρ1为有损连接。
(2)根据定理判断本题
因AB∩AC=A
AB-AC=B
AC-AB=C
故A→B∈F+
B→C
故ρ2为无损连接。
19.对给定的关系模式R(U,F),U={A,B,C,D,E,P},F={A→B,C→P,E→A,CE→D},如下的分解:
ρ={R1(A,B,E),R2(C,D,E,P)}
(1)求R的候选关键字,并判ρ分解是否无损连接;
(2)R1、R2属于几范式。
解
(1)候选关键字为CE
因(CE)F+=U
故有CE→U,并且在CE中不存在一个真子集能决定R的全体属性U,故CE为R的候选关键字。
根据定理判断本题分解ρ是否无损。
因ABE∩CDEP=E
ABE-CDEP=AB
CDEP-ABE=CDP
因E→A,A→B(已知)
故有E→B(传递律)
因E→A,E→B
故有E→AB(合并律)
因E→AB∈F+
故故ρ为无损连接。
(2)R1、R2属于几范式?
①R1∈2NF
因E→A,A→B
故E→B,存在传递依赖
故R1
②R2∈1NF
因CE→D,C→P
故CE能惟一地确定R2中的每一个元组,故为候选关键字。
因CE是候选关键字,而C→P,所以P部分函数依赖于CE
故R2
2NF。
20.已知关系模式R(A,B,C)
F={B→C,C→B,C→A,A→B,A→C,BC→A}
求F的最小集Fmin=?
解1:
(1)右端皆为单个属性.
(2)去掉多余依赖。
(应优先考虑去掉左端比较复杂的函数依赖.)
B→C(留)
C→B(去掉,因为它被去掉后只要还留下C→A,A→B,仍可以导出C→B)
C→A(留)
A→B(留)
A→C(去掉,因为它被去掉后由A→B、B→C仍可以导出A→C)
BC→A(去掉,因为它被去掉后由C→A仍可以导出BC→A)
于是,Fmin={B→C,C→A,A→B}.
解2:
这次我们采用另外一种顺序.
B→C
C→B(留)
C→A(去)
A→B(去)
A→C(留)
BC→A(留)
于是得到,H={B→C,C→B,A→C,BC→A}.
H不是最小集,因为:
H-{BC→A}∪{B→A}仍等价于H;
H-{BC→A}∪{C→A}仍等价于H.
故可得:
P1={B→C,C→B,A→C,B→A}
P2={B→C,C→B,A→C,C→A}
H和P1是等价的,因为BH+
A,故B→A在H+中,而H中其余几个函数依赖显然也都在H+中;
同理可证H的每一个函数依赖也都在P1+中;
因此,H和P1等价。
同理,H和P2是等价的。
P2已经是最小集。
P1仍需继续化简,怎样化简,请读者自己考虑。
这个例子说明了,在求一个函数依赖集的最小集时,由于对函数依赖的处置顺序不同,所得到的结果也不同;
最小集的形式也不是唯一的!
21.证明:
若R∈3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。
证明过程可以用反证法来完成,让我来试证。
)
证明:
(1)每一非主属性都不传递依赖于码是3NF定义所要求的,因而也是显然的。
(2)每一非主属性都不部分依赖于码。
事实上,若存在一非主属性A部分依赖于码X,则必有X的一个真子集X’
X,且X’
A,于是有X→X’,X’
X,X’→A,A
X’.这与3NF定义相矛盾。
证毕。
通过这个证明过程知道,一个3NF的关系模式必然是2NF的,因为它的每一非主属性都不部分依赖于码。
22.证明:
BCNF必然是3NF.
也就是要证明:
在BCNF情况下,不存在这样的码X,属性组Y,以及非主属性A(A
Y),使得X→Y,Y
X,Y→A成立。
事实上,若存在这样的码X,属性组Y,以及非主属性A(A
X,Y→A成立的话,由BCNF定义可知,Y为码或者Y包含码,则必有Y→X,与上述假设矛盾。
于是,BCNF必是3NF.
23.关系R(A,B,C,D,E)满足下列函数依赖:
F={A→C,C→D,B→C,DE→C,CE→A}
(1)给出关系R的候选关键字;
(2)判ρ={R1(A,D),R2(A,B),R3(B,C),R4(C,D,E),R5(A,E)}是否无损连接分解;
(3)将R分解为BCNF,并具有无损连接性。
解
(1)从函数依赖集F中看,候选关键字至少包含BE,因为BE不依赖于谁,而(BE)+=ABCDE,所以,BE是R的候选关键字。
(2)构造一个二维表,如下图所示。
A
B
C
D
E
R1(A,D)
R2(A,B)
R3(B,C)
R4(C,D,E)
R5(A,E)
a1
b31
b41
b12
a2
b42
b52
b13
b23
a3
b53
a4
b24
b34
b54
b15
b25
b35
a5
①根据A→C,对上表进行处理,由于属性列A上第1,2,5行相同,但属性列C上对应的1,2,5行上无ai元素,所以,只能将b13,b23,b53改为行号最小值b13。
又根据C→D将属性列D上b34改为a4,修改后的表如处图所示:
②根据B→C,对上表进行处理,由于属性列B上第2,3行相同,但属性列C上对应的3行为a3元素,所以,只能将第2行b13改为a3。
又根据DE→C,CE→A不能修改此表,所以修改后的表如下图所示:
③根据A→C,对上表进行处理,由于属性列A上第1,2,5行相同,但属性列C上对应的1,2,5行上有a3元素,所以,只能将第1,5行b13改为a3。
又根据C→D将属性列D上b24,b54改为a4,修改后的表如下图所示:
R4(C,D,E