课后习题答案

1. 理解并给出下列术语的定义:函数依赖,部分函数依赖,完全函数依赖,传递依赖,候选码,超码,主码,外码,全码,1NF,2NF,3NF,BCNF,多值依赖,4NF。

  • 函数依赖:属性之间的一种联系,若X→YX \to YXY,则关系r中任意两个元组,若它们在X上的属性值相同,那么在Y上的属性值一定也相同;反映现实世界的语义,且是关系模式在任何时刻的一切关系均需满足的约束条件。
  • 部分函数依赖:若X→YX \to YXY,但存在X的真子集X′⊂XX' \subset XXX,使得X′→YX' \to YXY,则称Y对X部分函数依赖。
  • 完全函数依赖:若X→YX \to YXY,且对于X的任何一个真子集X′X'X,都有X′↛YX' \nrightarrow YXY,则称Y对X完全函数依赖。
  • 传递依赖:若X→YX \to YXYY⊈XY \nsubseteq XYXY↛XY \nrightarrow XYX),Y→ZY \to ZYZZ⊈YZ \nsubseteq YZY),则称Z对X传递函数依赖。
  • 候选码:设K为关系模式R(U,F)R(U,F)R(U,F)中的属性或属性组,若K→FUK \xrightarrow{F} UKF U,且不存在K的真子集K′K'K使得K′→FUK' \xrightarrow{F} UKF U,则K为R的候选码。
  • 超码:设K为关系模式R(U,F)R(U,F)R(U,F)中的属性或属性组,若K→FUK \xrightarrow{F} UKF U,则K为R的超码(候选码是最小的超码)。
  • 主码:从关系模式的多个候选码中选定一个作为主码。
  • 外码:设关系模式R中属性或属性组X不是R的码,但X是另一个关系模式的码,则X是R的外码。
  • 全码:关系模式的候选码包含所有属性,称为全码。
  • 1NF:关系模式R的所有属性都是不可再分的基本数据项,则R∈1NFR \in 1NFR1NF
  • 2NF:若R∈1NFR \in 1NFR1NF,且每一个非主属性完全函数依赖于R的候选码,则R∈2NFR \in 2NFR2NF
  • 3NF:若R∈2NFR \in 2NFR2NF,且每一个非主属性既不部分依赖于候选码,也不传递依赖于候选码,则R∈3NFR \in 3NFR3NF
  • BCNF:若关系模式R∈1NFR \in 1NFR1NF,且对于R的每一个非平凡函数依赖X→YX \to YXYY⊈XY \nsubseteq XYX),X都包含候选码,则R∈BCNFR \in BCNFRBCNF
  • 多值依赖:设R(U)是属性集U上的关系模式,X、Y、Z是U的子集,且Z=U−X−YZ=U-X-YZ=UXY。若对R的任一关系r,给定的一对(x,z)(x,z)(x,z)值,有一组Y的值与之对应,且这组Y值仅取决于x值而与z值无关,则称X→→YX \to \to YX→→Y为多值依赖。
  • 4NF:若关系模式R∈BCNFR \in BCNFRBCNF,且对于R的每一个非平凡多值依赖X→→YX \to \to YX→→YY⊈XY \nsubseteq XYXX∪Y≠UX \cup Y \neq UXY=U),X都包含候选码,则R∈4NFR \in 4NFR4NF

2. 建立一个包含系、学生、班级、学会等信息的关系数据库(语义:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生;一个系的学生住在同一宿舍区;每个学生可参加若干学会,每个学会有若干学生,学生参加某学会有一个入会年份)。

关系模式
  • 学生:S(SNO,SN,SB,DN,CNO,SA)S(\text{SNO}, \text{SN}, \text{SB}, \text{DN}, \text{CNO}, \text{SA})S(SNO,SN,SB,DN,CNO,SA)
  • 班级:C(CNO,CS,DN,CNUM,CDATE)C(\text{CNO}, \text{CS}, \text{DN}, \text{CNUM}, \text{CDATE})C(CNO,CS,DN,CNUM,CDATE)
  • 系:D(DNO,DN,DA,DNUM)D(\text{DNO}, \text{DN}, \text{DA}, \text{DNUM})D(DNO,DN,DA,DNUM)
  • 学会:P(PN,DATE1,PA,PNUM)P(\text{PN}, \text{DATE1}, \text{PA}, \text{PNUM})P(PN,DATE1,PA,PNUM)
  • 学生-学会:SP(SNO,PN,DATE2)SP(\text{SNO}, \text{PN}, \text{DATE2})SP(SNO,PN,DATE2)
最小依赖集
  • S:SNO→SN\text{SNO} \to \text{SN}SNOSNSNO→SB\text{SNO} \to \text{SB}SNOSBSNO→CNO\text{SNO} \to \text{CNO}SNOCNOCNO→DN\text{CNO} \to \text{DN}CNODNDN→SA\text{DN} \to \text{SA}DNSA
  • C:CNO→CS\text{CNO} \to \text{CS}CNOCSCNO→CNUM\text{CNO} \to \text{CNUM}CNOCNUMCNO→CDATE\text{CNO} \to \text{CDATE}CNOCDATECS→DN\text{CS} \to \text{DN}CSDN(CS,CDATE)→CNO(\text{CS}, \text{CDATE}) \to \text{CNO}(CS,CDATE)CNO
  • D:DNO→DN\text{DNO} \to \text{DN}DNODNDN→DNO\text{DN} \to \text{DNO}DNDNODNO→DA\text{DNO} \to \text{DA}DNODADNO→DNUM\text{DNO} \to \text{DNUM}DNODNUM
  • P:PN→DATE1\text{PN} \to \text{DATE1}PNDATE1PN→PA\text{PN} \to \text{PA}PNPAPN→PNUM\text{PN} \to \text{PNUM}PNPNUM
  • SP:(SNO,PN)→DATE2(\text{SNO}, \text{PN}) \to \text{DATE2}(SNO,PN)DATE2
传递函数依赖
  • S:SNO→DN\text{SNO} \to \text{DN}SNODNCNO→SA\text{CNO} \to \text{SA}CNOSASNO→SA\text{SNO} \to \text{SA}SNOSA
  • C:CNO→DN\text{CNO} \to \text{DN}CNODN
多属性函数依赖性质

(SNO,PN)→DATE2(\text{SNO}, \text{PN}) \to \text{DATE2}(SNO,PN)DATE2(CS,CDATE)→CNO(\text{CS}, \text{CDATE}) \to \text{CNO}(CS,CDATE)CNO均为完全函数依赖,无部分函数依赖。

候选码、外码、全码
关系模式 候选码 外码 全码
S SNO CNO、DN
C CNO、(CS, CDATE) DN
D DNO、DN
P PN
SP (SNO, PN) SNO、PN

3. 试由Armstrong公理系统推导出下面三条推理规则:

① 合并规则:若X→ZX \to ZXZX→YX \to YXY,则有X→YZX \to YZXYZ

证明:已知X→ZX \to ZXZ,由增广律得XY→YZXY \to YZXYYZ;又X→YX \to YXY,得XX→XY→YZXX \to XY \to YZXXXYYZ;根据传递律得X→YZX \to YZXYZ

② 伪传递规则:由X→YX \to YXYWY→ZWY \to ZWYZ,有XW→ZXW \to ZXWZ

证明:已知X→YX \to YXY,据增广律得XW→WYXW \to WYXWWY;因WY→ZWY \to ZWYZ,故XW→WY→ZXW \to WY \to ZXWWYZ;根据传递律得XW→ZXW \to ZXWZ

③ 分解规则:X→YX \to YXYZ⊆YZ \subseteq YZY,有X→ZX \to ZXZ

证明:已知Z⊆YZ \subseteq YZY,根据自反律得Y→ZY \to ZYZ;又X→YX \to YXY,根据传递律得X→ZX \to ZXZ

4. 给定关系模式R(U,F)R(U, F)R(U,F),其中U={A,B,C,D,E}U=\{A, B, C, D, E\}U={A,B,C,D,E},函数依赖B→DB \to DBDDE→CDE \to CDECEC→BEC \to BECB,列出R中所有的码,并给出主属性、非主属性。

  • 候选码:AEBAEBAEBAECAECAECAEDAEDAED
  • 主属性:A、B、C、D、E
  • 非主属性:无

5. 试举出三个多值依赖的实例。

  1. 关系模式MSC(M,S,C)MSC(M, S, C)MSC(M,S,C)(M:专业,S:学生,C:必修课):M→→SM \to \to SM→→SM→→CM \to \to CM→→C
  2. 关系模式ISA(I,S,A)ISA(I, S, A)ISA(I,S,A)(I:兴趣小组,S:学生,A:活动项目):I→→SI \to \to SI→→SI→→AI \to \to AI→→A
  3. 关系模式RDP(R,D,P)RDP(R, D, P)RDP(R,D,P)(R:病房,D:责任医务人员,P:病人):R→→DR \to \to DR→→DR→→PR \to \to PR→→P

6. 考虑关系模式R(U,F)R(U, F)R(U,F)U={A,B,C,D,E}U=\{A, B, C, D, E\}U={A,B,C,D,E},回答以下问题:

① 若A是R的候选码,R具有函数依赖BC→DEBC \to DEBCDE,那么在什么条件下R属于BCNF?

条件:属性BCBCBC包含码。

② 如果存在函数依赖F={A→B,BC→D,DE→A}F=\{A \to B, BC \to D, DE \to A\}F={AB,BCD,DEA},列出R的所有码。

候选码:ACEACEACEBCEBCEBCEDCEDCEDCE

③ 如果存在函数依赖F={A→B,BC→D,DE→A}F=\{A \to B, BC \to D, DE \to A\}F={AB,BCD,DEA},R属于3NF还是BCNF?
  • R属于3NF;
  • R不属于BCNF。

7. 下面的结论哪些是正确的?哪些是错误的?对于错误的结论,请给出理由或给出一个反例说明之。

  1. 任何一个二目关系都是属于3NF的。(√)
  2. 任何一个二目关系都是属于BCNF的。(√)
  3. 任何一个二目关系都是属于4NF的。(√)
  4. 当且仅当函数依赖A→BA \to BAB在R上成立,关系R(A,B,C)R(A,B,C)R(A,B,C)等于其投影R1(A,B)R1(A,B)R1(A,B)R2(A,C)R2(A,C)R2(A,C)的连接。(×)
    理由:当且仅当多值依赖A→→BA \to \to BA→→B在R上成立,关系R(A,B,C)R(A,B,C)R(A,B,C)等于其投影R1(A,B)R1(A,B)R1(A,B)R2(A,C)R2(A,C)R2(A,C)的连接。
  5. R.A→R.BR.A \to R.BR.AR.BR.B→R.CR.B \to R.CR.BR.C,则R.A→R.CR.A \to R.CR.AR.C。(√)
  6. R.A→R.BR.A \to R.BR.AR.BR.A→R.CR.A \to R.CR.AR.C,则R.A→R.(B,C)R.A \to R.(B,C)R.AR.(B,C)。(√)
  7. R.B→R.AR.B \to R.AR.BR.AR.C→R.AR.C \to R.AR.CR.A,则R.(B,C)→R.AR.(B,C) \to R.AR.(B,C)R.A。(√)
  8. R.(B,C)→R.AR.(B,C) \to R.AR.(B,C)R.A,则R.B→R.AR.B \to R.AR.BR.AR.C→R.AR.C \to R.AR.CR.A。(×)
    反例:关系模式SC(SNO,CNO,G)SC(\text{SNO}, \text{CNO}, G)SC(SNO,CNO,G)(SNO,CNO)→G(SNO, CNO) \to G(SNO,CNO)G,但SNO↛GSNO \nrightarrow GSNOGCNO↛GCNO \nrightarrow GCNOG

8. 证明:

① 如果R是BCNF关系模式,则R是3NF关系模式,反之则不然。
  • 证明(R∈BCNF→R∈3NF):反证法。设R∈BCNFR \in BCNFRBCNFR∉3NFR \notin 3NFR/3NF,则存在候选码X、属性组Y、非主属性Z(Z⊈YZ \nsubseteq YZY),满足X→YX \to YXYY↛XY \nrightarrow XYXY→ZY \to ZYZ。因Y↛XY \nrightarrow XYX,Y不包含候选码,与R∈BCNFR \in BCNFRBCNF矛盾,故R∈3NFR \in 3NFR3NF
  • 反例(R∈3NF⇏R∈BCNF):关系模式STJ(S,T,J)STJ(S,T,J)STJ(S,T,J),函数依赖(S,J)→T(S,J) \to T(S,J)T(S,T)→J(S,T) \to J(S,T)JT→JT \to JTJ,候选码为(S,J)(S,J)(S,J)(S,T)(S,T)(S,T),STJ是3NF但不是BCNF。
② 如果R是3NF关系模式,则R一定是2NF关系模式。

证明:反证法。设R∈3NFR \in 3NFR3NFR∉2NFR \notin 2NFR/2NF,则存在非主属性Z不完全函数依赖于码X,即存在X的真子集Y,Y→ZY \to ZYZ。因Y是X的真子集,Y↛XY \nrightarrow XYX,且Z是非主属性、Z⊈YZ \nsubseteq YZY,与R∈3NFR \in 3NFR3NF矛盾,故R∈2NFR \in 2NFR2NF

9. 为什么直接根据定义6.18去鉴别一个分解的无损连接性是不可能的?

理由:对于关系模式R(U,F)R(U,F)R(U,F),可能的关系实例r原则上有无数多个,无法验证对任意一个r,有r=mρ(r)r=m_\rho(r)r=mρ(r)成立。

补充习题及答案

1. 考虑关系模式R(U,F)R(U, F)R(U,F)U={A,B,C,D}U=\{A, B, C, D\}U={A,B,C,D},求满足下列函数依赖时R所有的候选码,并给出R属于哪种范式(1NF、2NF、3NF或BCNF)。

(1) F={ABC,BD,BEF}F=\{ABC, BD, BEF\}F={ABC,BD,BEF}
  • 候选码:AB
  • 范式:1NF
(2) F={A→B,A→C,D→A}F=\{A \to B, A \to C, D \to A\}F={AB,AC,DA}
  • 候选码:D
  • 范式:2NF
(3) F={BCD→A,A→C}F=\{BCD \to A, A \to C\}F={BCDA,AC}
  • 候选码:BCD、ABD
  • 范式:3NF
(4) F={B→C,B→D,CD→A}F=\{B \to C, B \to D, CD \to A\}F={BC,BD,CDA}
  • 候选码:B
  • 范式:2NF
(5) F={ABD→C}F=\{ABD \to C\}F={ABDC}
  • 候选码:ABD
  • 范式:BCNF

2. 考虑属性集ABCDEFABCDEFABCDEF和函数依赖集{AB→C,B→D,BC→E,AC→D,E→F,CD→A}\{AB \to C, B \to D, BC \to E, AC \to D, E \to F, CD \to A\}{ABC,BD,BCE,ACD,EF,CDA},对于属性集ABCABCABCABCDABCDABCDBCDEBCDEBCDECDEFCDEFCDEFCDFCDFCDF

① 写出在属性集上的函数依赖集,说明是否为最小覆盖;② 指出属于哪种范式。
  • ABCABCABC
  1. 函数依赖集:AB→CAB \to CABC;是最小覆盖;
  2. 范式:BCNF。
  • ABCDABCDABCD
  1. 函数依赖集:AB→CAB \to CABCB→DB \to DBDAC→DAC \to DACDCD→ACD \to ACDA;是最小覆盖;
  2. 范式:1NF。
  • BCDEBCDEBCDE
  1. 函数依赖集:B→DB \to DBDBC→EBC \to EBCE;是最小覆盖;
  2. 范式:1NF。
  • CDEFCDEFCDEF
  1. 函数依赖集:E→FE \to FEF;是最小覆盖;
  2. 范式:1NF。
  • CDFCDFCDF
  1. 函数依赖集:无;是最小覆盖;
  2. 范式:BCNF。

3. 对于属性集ABCDEFABCDEFABCDEF和函数依赖集{A→BC,CD→E,B→D,BE→F,EF→A}\{A \to BC, CD \to E, B \to D, BE \to F, EF \to A\}{ABC,CDE,BD,BEF,EFA},说明下列分解是否为无损连接分解,以及是否保持函数依赖:

① 分解U1=ABCDU_1=ABCDU1=ABCDU2=EFAU_2=EFAU2=EFA
  • 无损连接性:是无损连接分解;
  • 保持函数依赖:否。
② 分解U1=ABCU_1=ABCU1=ABCU2=BDEU_2=BDEU2=BDEU3=BEFU_3=BEFU3=BEF
  • 无损连接性:不是无损连接分解;
  • 保持函数依赖:否。

4. 关系R有属性ABCDABCDABCD(含指定记录),指出下列函数依赖或多值依赖在R上是否成立:

(1) A→BA \to BAB

不成立

(2) A→BCA \to BCABC

不成立

(3) A→→BCA \to \to BCA→→BC

不确定

(4) B→CB \to CBC

不确定

(5) BC→→ABC \to \to ABC→→A

不成立

(6) C→→DC \to \to DC→→D

不成立

5. 关系模式RRR(员工编号,日期,零件数,部门名称,部门经理),假设:每个员工每天只有一个日生产零件数,每个员工只在一个部门工作,每个部门只有一个经理。回答:

① 写出模式R的基本函数依赖和码。
  • 函数依赖:(员工编号, 日期)→零件数,员工编号→部门名称,部门名称→部门经理;
  • 码:(员工编号, 日期)。
② R是否为2NF,如果不是,把R分解成2NF。
  • R不是2NF;
  • 分解结果:R1R1R1(员工编号, 日期, 零件数)、R2R2R2(员工编号, 部门名称, 部门经理)。
③ 进一步将R分解成3NF。

分解结果:R1R1R1(员工编号, 日期, 零件数)、R2R2R2(员工编号, 部门名称)、R3R3R3(部门名称, 部门经理)。

6. 对于关系模式R(会议,主持人,时间,会议室,会员,职务),函数依赖F={F=\{F={会议→主持人,(时间, 会议室)→会议,(时间, 主持人)→会议室,(时间, 会员)→会议室,(会议, 会员)→职务}\}}。回答:

① 写出R的所有码。

码:(时间, 会员)。

② 说明给出的函数依赖集F是否为极小函数依赖集。

是极小函数依赖集。

③ 将R分解成具有无损连接和保持函数依赖的3NF,判断是否有违反BCNF的关系。
  • 分解结果:U1U_1U1(会议, 主持人)、U2U_2U2(时间, 会议室, 会议)、U3U_3U3(时间, 主持人, 会议室)、U4U_4U4(时间, 会员, 会议室)、U5U_5U5(会议, 会员, 职务);
  • 分解后无违反BCNF的关系。

7. 对于下列各个关系模式和依赖,回答是否为4NF,若不是则将关系分解为满足4NF的关系:

R(A,B,C)R(A, B, C)R(A,B,C),存在依赖A→→BA \to \to BA→→BA→CA \to CAC
  • 是否为4NF:否;
  • 分解结果:R(A,B)R(A, B)R(A,B)R(A,C)R(A, C)R(A,C)
R(A,B,C,D)R(A, B, C, D)R(A,B,C,D),存在依赖A→→CA \to \to CA→→CC→→BDC \to \to BDC→→BD
  • 是否为4NF:否;
  • 分解结果:R(A,C)R(A, C)R(A,C)R(B,C,D)R(B, C, D)R(B,C,D)

8. 对给定的关系模式R(U,F)R(U, F)R(U,F)U={A,B,C,D}U=\{A, B, C, D\}U={A,B,C,D}F={A→B,B→C,C→D,D→A}F=\{A \to B, B \to C, C \to D, D \to A\}F={AB,BC,CD,DA},给出函数依赖范畴下关系模式R所满足的最高范式。

最高范式:BCNF。

9. 对给定的关系模式R(U,F)R(U, F)R(U,F)U={C,T,H,R,S,G}U=\{C, T, H, R, S, G\}U={C,T,H,R,S,G}F={CS→G,C→T,TH→R,HR→C,HS→R}F=\{CS \to G, C \to T, TH \to R, HR \to C, HS \to R\}F={CSG,CT,THR,HRC,HSR},给出函数依赖范畴下关系模式R所满足的最高范式。

最高范式:2NF。

10. 对于给定的关系模式R(U,F)R(U, F)R(U,F)U={X,Y,Z}U=\{X, Y, Z\}U={X,Y,Z}F={X→→Y,Y→→Z}F=\{X \to \to Y, Y \to \to Z\}F={X→→Y,Y→→Z},试证明:X→→Z−YX \to \to Z-YX→→ZY

证明:将Y∪ZY \cup ZYZ分解为Y−ZY-ZYZZ−YZ-YZYY∩ZY \cap ZYZ;取R中任意两个元组t、s满足t[X]=s[X]t[X]=s[X]t[X]=s[X],由X→→YX \to \to YX→→Y交换t、s在Y上的值得到元组t∗t^*ts∗s^*s;再由Y→→ZY \to \to ZY→→Z交换t、s∗s^*s在Z上的值,可得交换t、s在Z−YZ-YZY上的值后得到的元组仍属于R,故X→→Z−YX \to \to Z-YX→→ZY

11. 关系模式R(员工编号,日期,零件数,部门名称,部门经理),回答:

① 写出该模式R的函数依赖、码、主属性、非主属性。
  • 函数依赖:(员工编号, 日期)→零件数,员工编号→部门名称,员工编号→部门经理,部门名称→部门经理;
  • 码:(员工编号, 日期);
  • 主属性:员工编号,日期;
  • 非主属性:零件数,部门名称,部门经理。
② 请给出R满足的最高范式。

最高范式:1NF。

③ 给出关系模式R设计中存在的问题(必须给出实例说明)。
  • 插入异常:新员工入职未工作时,无法插入员工信息;
  • 删除异常:某部门所有员工离职时,部门信息也被删除;
  • 数据冗余:每个员工记录都重复存储部门名称、部门经理;
  • 修改复杂:修改部门经理时,需修改该部门所有员工的记录。
④ 将R分解为2个或2个以上的关系模式,使得分解后的每个关系模式均满足3NF范式。

分解结果:R1R_1R1(员工编号, 日期, 零件数)、R2R_2R2(员工编号, 部门名称)、R3R_3R3(部门名称, 部门经理)。

12. 证明题:关于多值依赖的另一种定义(给定R(X,Y,Z)R(X,Y,Z)R(X,Y,Z)Yxz={r.Y∣r.X=x∧r.Z=z∧r∈R}Y_{xz}=\{r.Y | r.X=x \land r.Z=z \land r \in R\}Yxz={r.Yr.X=xr.Z=zrR},当且仅当Yxz=Yxz′Y_{xz}=Y_{xz'}Yxz=Yxz对每一组(x,z,z′)(x,z,z')(x,z,z)成立,则X→→YX \to \to YX→→Y)与《概论》定义6.9等价。

证明:

  • 若新定义成立:取r中任意元组s、t满足s[X]=t[X]s[X]=t[X]s[X]=t[X],则对任意z值,Y的取值仅依赖x,交换s、t在Y上的值后元组仍属于r,符合定义6.9。
  • 若定义6.9成立:交换s、t在Y上的值后元组仍属于r,说明任意z值对应相同的Y值,即Yxz=Yxz′Y_{xz}=Y_{xz'}Yxz=Yxz对每一组(x,z,z′)(x,z,z')(x,z,z)成立,符合新定义。
  • 综上,两个定义等价。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐