CH6部分习题解答Word格式文档下载.docx
《CH6部分习题解答Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《CH6部分习题解答Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
(3)要从属性间实际存在的语义来确定他们之间的函数依赖,即函数依赖反映了(描述了)现实世界的一种语义。
(4)函数依赖不是指关系模式R在某个时刻的关系(值)满足的约束条件,而是指R任何时刻的一切关系均要满足的约束条件。
完全函数依赖、部分函数依赖:
在R(U)中,如果X-Y,并且对于X的任何一个真子集
X1,都有X'
JY,则称丫对X完全函数依赖,记作:
若X-丫但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作:
传递依赖:
在R(U)中,如果X-Y,(YIX),丫鳥X,Y-乙Z丫,则称Z对X传递函数依赖。
候选码、主码:
设K为R〈U,F)中的属性或属性组合,若则K为R
的候选码(Candidatekey)。
若候选码多于一个,则选定其中的一个为主码(Primarykey)o解析
1)这里我们用函数依赖来严格定义码的概念。
在第二章中我们只是描述性地
定义码(可以复习221):
若关系中的某一属性组的值能惟一地标识一个元组,则
称该属性组为候选码(Candidatekey)。
2)因为码有了严格定义,在学习了《概论》5.3数据依赖的公理系统后就可以从R<
U,F〉的函数依赖集F出发,用算法来求候选码。
夕卜码:
关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码(Foreignkey),也称外码。
全码:
整个属性组是码,称为全码(All-key)。
[NF:
如果一个关系模式R的所有属性都是不可分的基本数据项,则R€INF。
第一范式是对关系模式的最起码的要求。
不满足第一范式的数据库模式不能称为关系数据库。
2NF:
若关系模式R€INF,并且每一个非主属性都完全函数依赖于R的码,则
R€2NF
3NF:
关系模式R<
U,F〉中若不存在这样的码X,属性组丫及非主属性Z(ZAY)使得X—Y,(YJX),Y-Z成立,则称R<
U,F〉€3NF
BCNF关系模式R<
U,F〉€INF。
若X—Y且Y>
X时X必含有码,贝UR<
UfF)
€BCNF
读者要真正理解这些范式的内涵。
各种范式之间的联系:
5NF_4NLBCNF3NL2NL1NF(《概论》上图6.2)。
能够理解为什么有这种包含关系。
多值依赖:
设R(U)是属性集U上的一个关系模式。
X,Y,Z是U的子集,并且Z二U-X-Y。
关系模式R(U)中多值依赖X——丫成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组丫的值,这组值仅仅决定于x值而与z值无关。
4NF关系模式R<
U,F)€INF,如果对于R的每个非平凡多值依赖X——
Y(YX),X都含有码,则称R<
U,F)€4NF
对于多值依赖的定义有多种。
可以对比不同的定义来理解多值依赖,选择自己容易理解的一种定义来掌握多值依赖概念。
2.建立一个关于系、学生、班级、学会等诸信息的关系数据库。
描述学生的属性有:
学号、姓名、出生年月、系名、班号、宿舍区。
描述班级的属性有:
班号、专业名、系名、人数、入校年份。
描述系的属性有:
系名、系号、系办公室地点、人数。
描述学会的属性有:
学会名、成立年份、地点、人数。
有关语义如下:
r系有若干专业,每个专业每年只招一个班,每个班有若干学生。
一个系的学生住在同一宿舍区。
每个学生可参加若干学会,每个学会有若干学生。
学生参加某学会有f入会年份。
请给岀关系模式,写岀每个关系模式的极小函数依赖集,指岀是否存在传递函数依赖,对于函数依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。
指出各关系的候选码、夕卜部码,有没有全码存在?
关系模式:
学生S(S#,SN,SB,DN,C#,SA)班级C(C#,CS,DN,CNUM,CDATE)系D(D#,DN,DA,DNUM)学会P(PN,DATEI,PA,PNUM)学生-学会SP(S#,PN,DATE2)其中,S#—学号,SN—姓名,SB—出生年月,SA—宿舍区
C#-班号,CS--专业名,CNUM-班级人数,CDATE-入校年份
D#-系号,DN—系名,DA—系办公室地点,DNUM-系人数
PN—学会名,DATEI一成立年月,PA—地点,PNUM-学会人数,
DATE2-入会年份
每个关系模式的极小函数依赖集:
S:
S#—SN,S4SBS#—C#DNDNASA
C:
C#—CS,C4CNUMC4CDATECSADN(CS,CDATE—C#
/*因为每个专业每年只招一个班*/
D:
D#—DN,DN—D#,D#—DAfD#—DNUM
/*按照实际情况,系名和系号是一一对应的V
P:
PN—DATEI,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中的函数依赖,是完全函数依赖
关系
磁码
外部码
全码
S
S#
C#
DN
无
C
CDATE)
DN
D
D#
和DN
P
PN
SP(S#
PN)S#
PN
读者应该根据题目中给岀的有关语义写岀关系模式中的数据依赖,有些依赖
可以按照实际情况写岀,也许题目中并没有明显指岀。
例如,按照实际情况,系名和系号是——对应的,因此有D4DNDNAP#
3*试由Armostrong公理系统推导出下面三条推理规则:
(1)合并规则:
若心乙心Y,则有心YZ
(2)伪传递规则:
由X—Y,144YZ有XWZ
(3)分解规则:
X—Y,Z丫,有X—Z
证明
(1)已知X—乙由增广律知XY—丫乙又因为X—Y,可得XXAXY—YZ,最后根据传递
律得X—丫乙(因为XX等于X)
(2)已知X—Y,据增广律得XV—WY因为W、一乙所以XV—WY—乙通过传递律可知XV—乙
(3)已知ZY,根据自反律知Y—乙又因为X—Y,所以由传递律可得X—乙
5.试举岀3个多值依赖的实例。
(I)关系模式MSC(MS,C)中,M表示专业,S表示学生,C表示该专业的必
修课。
假设每个专业有多个学生,有一组必修课。
设同专业内所有学生选修的必修课相同,实例关系如下。
按照语义对于M的每一个值M,S有一个完整的集合与之对应而不问C取何值,所以M——S。
由于C与S的完全对称性,必然有M——C成立。
M
s
c
Ml
£
1
Cl
PSI
C2
S2
2
(2)关系模式ISA(I,S,A)中,I表示学生兴趣小组,S表示学生,A表示某兴趣小组的活动项目。
假设每个兴趣小组有多个学生,有若干活动项目。
每个学生必须参加所在兴趣小组的所有活动项目,每个活动项目要求该兴趣小组的所有学生参加。
按照语义有I——S,I——A成立。
(3)关系模式RDP(RD,P)中,R表示医院的病房,D表示责任医务人员,P表示病人。
假设每个病房住有多个病人,有多个责任医务人员负责医治和护理该
病房的所有病人。
按照语义有F——D,R——P成立。
12.
:
\J/\J/答(1(2g
下面的结论哪些是正确的,哪些是错误的?
对于错误的结论请给出理由或给岀一个反例说明之。
任何一个二目关系都是属于3NF的。
V
任何一个二目关系都是属于BCNF勺。
任何一个二目关系都是属于4NF的。
R(X,Y)如果X——Y即X、Y之间存在平凡的多值依赖,R属于4NE
*(4)当且仅当函数依赖A—B在R上成立,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接。
X
当A—B在R上成立,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接。
反之则不然。
正确的应该是:
当且仅当多值依赖Al-B在R上成立,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接。
(5)若R.A—R.B,R.B—R.C,贝UR.A—R.CV
(6)若R.A—R.B,R.A—R.C,则R.A—R.(B,C)V
(7)若R.B—R.A,R.C—RA贝UR.(B,C)—R.AV
(8)若R.(B,C)—R.A,贝UR.B—R.A,R.C—R.AX
反例:
关系模式SC(S#C#,G),(S#,C#)—G,但是S#•G,C#JG
补充习题
13.设关系模式R(A,B,C,D),F是R上成立的FD集,F={ABYD,A—D}o①试说明R不是2NF模式的理由。
2试把R分解成2NF模式集。
®
从已知FD集F,可知R的候选键是AB
另外,A4D是一个局部依赖,因此R不是2NF模式。
②此时R应分解成p二{AD,ABC},p是2NF模式集。
(注:
p二{AD,ABC表示分解结果由两个尚未命名的关系模式组成;
其电第一个关系模式的属性集为(A,D),AD是其简单记法,该关系模式有待命名;
第二个关系模式的属性集为(ABC),该关系模式也有待命名。
这种记法后面还要用到。
)
14.设关系模式R(A,B,C),F是R上成立的FD集,F={C—B,B—A}。
1试说明R不是3NF模式的理由。
2分解成3NF模式集。
答:
从已知FD集F,可知R的候选键是Co
从C—B和B-A,可知C—A是一个传递依赖,因此R不是3NF模式。
②此时R应分解成p二{CBBA},p是3NF模式集。
15.设有一个记录各个球队队员每场比赛进球数的关系模式
R(队员编号,比赛场次,进球数,球队名,队长名)
如果规定每个队员只能属于一个球队,每个球队只有一个队长。
1试写出关系模式R的基本FD和关键码。
2说明R不是2NF模式的理由,并把R分解成2NF模式集。
3进而把R分解成3NF模式集,并说明理由。
解:
(1)根据每个队员只能属于一个球队,可写出FD:
队员编号一球队名;
根据每个球队只有
—个队长,可写出FD球队名一队长名;
"
每个队员每场比赛只有一个进球数"
,这条规则也是成立的,因此还可写FD(队员编号,比赛场次)一进球数。
从上述三个FD可知道,R的码为(队员编号,比赛场次)。
(2)从(I)可知,R中存在下面两个FD
(队员编号,比赛场次)一(球队名,队长名)
队员编号一(球队名,队长名)
显然,其中第一个FD是一个局部依赖,因此R不是2NF模式。
对R应该进行分解,由第二个FD的属性可构成一个模式,即
R1(队员编号,球队名,队长名);
另一个模式由R的属性集去掉第二个FD右边的属性组成,即
R2(队员编号,比赛场次,进球数)。
请参考《讲稿》中的逐次分解法。
R1和R2都是2NF模式,因此p二{Rl,R2}
(3)R2(队员编号,比赛场次,进球数)中,FD是(队员编号,比赛场次)一进
球数,码为(队员编号,比赛场次),可见R2已是3NF模式。
R1(队员编号,球队名,队长名)中,FD有两个:
队员编号一球队名球队名-队长名
码为队员编号,可见存在传递依赖,因此R1不是3NF模式。
对R1应分解成两个模式:
R11(队员编号,球队名),R12(球队名,队长名)°
这两个模式都是3NF模式。
因此,R分解成3NF模式集时,p={Rll,R12R2}。
16.设有关系模式
R(职工名,项目名,工资,部门名,部门经理)如果规定每个职工可参加多个项目,各领一份工资;
每个项目只属于一个部门管理;
每个部门只有一个经理0
2说明R不是2NF模式的理由,并扌巴R分解成2NF模式集。
3进而把R分解成3NF模式集,并说明理由。
解:
(1)R的基本FD有三个:
(职工名,项目名)-工资
项目名-部门名部门名-部门经理
码为(职工名,项目名)0
(2)根据(I),R中存在下列两个FD:
(职工名,项目名)-(部门名,部门经理)项目名-(部门名,部门经理)
其中前rFD是一个局部依赖,因此R不是2NF模式。
R应分解成两个模式:
R1(项目名,部门名,部门经理)
R2(职工名,项目名,工资)
R1和R2都是2NF模式。
⑶R2已是3NF模式。
在R1中,由于存在两个FD:
即存在一个传递依赖,因此R1不是3NF模式。
对R1应分解成两个模式:
R11(项目名,部门名),R12(部门名,部门经理)°
这两个模式都是3NF模式。
因此,R分解成3NF模式集时,p={Rll,R12,R2}
17.为什么要进行关系模式的分解?
分解的依据是什么?
由于数据之间存在看联系和约束,在关系模式的中可能会存在数据冗余和操作异常现象,因此需把关系模式进行分解,以消除冗余和异常现象。
分解的依据是数据依赖和模式的标准(范式)。
18.对给定的关系模式R(U,F),U二{A,B,C},F={A-B},如下的两个分解:
(1)p仁{AB,BC}
(2)p2二{AB,AC}
判断这两个分解否无损。
解⑴根据定理判断本题
由于仅仅将原关系模式分解为两个关系模式,故可用定理判断。
)
因ABnBC=B
AB-BC二A
BC-AB二C
故B-2F+
B—CF
故p1为有损连接。
(2)根据定理判断本题
因ABnAC=A
AB-AC=B
AC-AB=C
故A—B€F+
B—CfF+
故p2为无损连接。
19.对给定的关系模式
R(U,F),U={A,B,CD,E,P},F={A—B,C—P,E—A,CE—D},
如下的分解:
p={R1(A,B,E),R2(C,D,E,P)}
(1)求R的候选关键字,并判p分解是否无损连接;
(2)Rl、R2属于几范式。
解
(1)候选关键字为CE
因(CE)严二U
故有CiU,并且在CE中不存在一个真子集能决定R的全体属性U,故CE为R的候选关键字。
根据定理判断本题分解p是否无损。
因ABEnCDEP=E
ABE-CDEP=AB
CDEP-ABE二CDP
因E—A,A—B(已知)
故有E-B(传递衛
因E—A,E—B
故有E-AB(合并律)
因E—AB€F+
故故p为无损连接。
(2)R1、R2属于几范式?
1R1€2NF
因E—A,A—B
故E—B,存在传递依赖
故R1.3NF
2R2€1NF
因CE—D,C—P
故CE能惟一地确定R2中的每一个元组,故为候选关键字。
因CE是候选关键字,而C—P,所以P部分函数依赖于CE
故R272NE
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—BB—C仍可以导岀A—C)BC—A(去掉,因为它被去掉后由C—A仍可以导出BC—A)
于是,F罰二{B—C,C—A,A—B}.
解2:
(2)去掉多余依赖。
这次我们采用另夕卜一种顺序.
B—C
C—B(留)
C—A(去)
A—B(去)
A-C(留)
BC—A(留)
于是得到,gB—C,C—B,A—C,BC—A}.
H不是最小集,因为:
H-{BC—A}U{B—A}仍等价于H;
H-{BC—A}U{C—A}仍鞫介于H.
故可得:
Pl={B—C,C—B,A—C,B—A}
P2={B—C,C—B,A—C,C—A}
H和Pl是等价的,因为B屮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'
4力风这与3NF定义相矛盾。
证毕。
通过这个证明过程知道,一个3NF的关系模式必然是2NF的,因为它的每一非主属性都不部分依赖于码。
22.证明:
BCNF必然是3NF.
也就是要证明:
在BCNF青况下,不存在这样的码X,属性组Y,以及非主属性A(AIY),使得X-Y,Y...X,Y-A成立。
事实上若存在这样的码X,属性组Y,以及非主属性A(AIY),使得X-Y,Y-X,Y-A成立的话,由BCNF定义可知,丫为码或者丫包含码,则必有Y-X,与上述假设矛盾。
于是,BCNF必是3NF.
23.关系R(A,B,C,D,E)满足下列函数依赖:
F二{A—C,C—D,B—C,DiC,CiA}
给出关系R的候选关键字;
判p={R1(AZD),R2(A,B),R3(B,C),R4(C,D,E),R5(A,E)}是否无损连接分解;
将R分解为BCNF并具有无损连接性。
从函数依赖集F中看,候选关键字至少包含BE因为BE不依赖于谁,而(BE)+二ABCDE所以,BE是R的候选关键字。
A
B
E
R1(A.D)
al
bl2
bl3
a4
bl5
R2(A・B)
a2
b23
b24
b25
R3(B.O
b31
a3
b34
b35
R4(C・D.E)
b41
b42
a5
R5(A,E)
b52
b53
b54
(2)构造一个二维表”如下图所示。
R1(A,D)
R2(A,B)
R3(B,C)
R4fCDG
alalb31b41al
h4?
bl3bl3a3a3
a4b24a4a4b54
bl5b25b35a5a5
①根据A-C,对上表进行处理,由于属性列2上第1,2,5:
亍相同,但属性列C上对应的1,2,5行上无ai元素,所以,只能将bl3,b23,b53改为行号最小值bl3o又根据C-D将属性列D上b34改为a4,修改后的表如处图所示:
②根据B-C,对上表进行处理,由于属性列B上第2,3行相同,但属性列C上对应的3行为a3元素,所以,只能将第2行bl3改为a3o又根据DiC,CiA不能修改此表,所以修改后的表如下图所示:
R4(C.D・E)
aS
R5(AF)
h52
bU
h54
3根据A-C,对上表进行处理,由于属性列A上第1,2,5行相同,但属性
列C上对应的1,2,5行上有a3元素,所以,只能将第1,5行bl3改为a3o又根据C-D将属性列D上b24,b54改为a4,修改后的表如下图所示:
R1(Am
a1
hl?
hIS