CH6部分习题解答.docx

上传人:b****5 文档编号:7333525 上传时间:2023-01-23 格式:DOCX 页数:18 大小:30.78KB
下载 相关 举报
CH6部分习题解答.docx_第1页
第1页 / 共18页
CH6部分习题解答.docx_第2页
第2页 / 共18页
CH6部分习题解答.docx_第3页
第3页 / 共18页
CH6部分习题解答.docx_第4页
第4页 / 共18页
CH6部分习题解答.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

CH6部分习题解答.docx

《CH6部分习题解答.docx》由会员分享,可在线阅读,更多相关《CH6部分习题解答.docx(18页珍藏版)》请在冰豆网上搜索。

CH6部分习题解答.docx

CH6部分习题解答

第六章关系数据理论

第六章讲解关系数据理论。

这是关系数据库的又一个重点。

学习本章的目的有两个。

一个是理论方面的,本章用更加形式化的关系数据理论来描述和研究关系模型。

另一个是实践方面的,关系数据理论是我们进行数据库设计的有力工具。

因此,人们也把关系数据理论中的规范化理论称为数据库设计理论,有的书把它放在数据库设计部分介绍以强调它对数据库设计的指导作用。

一、基本知识点

本章讲解关系数据理论,内容理论性较强,分为基本要求部分(《概论》6.1~6.3)和高级部分《概论》6.4)。

前者是计算机大学本科学生应该掌握的内容;后者是研究生应该学习掌握的内容。

①需要了解的:

什么是一个“不好”的数据库模式;什么是模式的插入异常和删除异常;规范化理论的重要意义。

②需要牢固掌握的:

关系的形式化定义;数据依赖的基本概念(函数依赖、平凡函数依赖、非平凡的函数依赖、部分函数依赖、完全函数依赖、传递函数依赖的概念,码、候选码、外码的概念和定义,多值依赖的概念);范式的概念;从lNF到4NF的定义;规范化的含义和作用。

③需要举一反三的:

四个范式的理解与应用,各个级别范式中存在的问题(插入异常、删除异常、数据冗余)和解决方法;能够根据应用语义,完整地写出关系模式的数据依赖集合,并能根据数据依赖分析某一个关系模式属于第几范式。

④难点:

各个级别范式的关系及其证明。

二、习题解答和解析

1.理解并给出下列术语的定义:

函数依赖、部分函数依赖、完全函数依赖、传递依赖、候选码、主码、外码、全码(All-key)、lNF、2NF、3NF、BCNF、多值依赖、4NF。

解析

解答本题不能仅仅把《概论》上的定义写下来。

关键是真正理解和运用这些概念。

函数依赖:

设R(U)是一个关系模式,U是R的属性集合,X和Y是U的子集。

对于R(U)的任意一个可能的关系r,如果r中不存在两个元组,它们在X上的属性值相同,而在Y上的属性值不同,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。

解析

(1)函数依赖是最基本的一种数据依赖,也是最重要的一种数据依赖。

(2)函数依赖是属性之间的一种联系,体现在属性值是否相等。

由上面的定义可以知道,如果X→Y,则r中任意两个元组,若它们在X上的属性值相同,那么在Y上的属性值一定也相同。

(3)要从属性间实际存在的语义来确定他们之间的函数依赖,即函数依赖反映了(描述了)现实世界的一种语义。

(4)函数依赖不是指关系模式R在某个时刻的关系(值)满足的约束条件,而是指R任何时刻的一切关系均要满足的约束条件。

完全函数依赖、部分函数依赖:

在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

M1

S1

C2

M1

S2

C1

M1

S2

C2

……

……

……

(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(职工名,项目名,工资,部门名,部门经理)

如果规定每个职工可参加多个项目,各领一份工资;每个项目只属于一个部门管理;每个部门只有一个经理。

①试写出关系模式R的基本FD和关键码。

②说明R不是2NF模式的理由,并把R分解成2NF模式集。

③进而把R分解成3NF模式集,并说明理由。

解:

(l)R的基本FD有三个:

(职工名,项目名)→工资

项目名→部门名

部门名→部门经理

码为(职工名,项目名)。

(2)根据(l),R中存在下列两个FD:

(职工名,项目名)→(部门名,部门经理)

项目名→(部门名,部门经理)

其中前一个FD是一个局部依赖,因此R不是2NF模式。

R应分解成两个模式:

R1(项目名,部门名,部门经理)

    R2(职工名,项目名,工资)

R1和R2都是2NF模式。

(3)R2已是3NF模式。

在R1中,由于存在两个FD:

项目名→部门名

部门名→部门经理

即存在一个传递依赖,因此R1不是3NF模式。

对R1应分解成两个模式:

R11(项目名,部门名),R12(部门名,部门经理)。

这两个模式都是3NF模式。

因此,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

F+

故ρ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

3NF

②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:

(1)右端皆为单个属性.

(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

Y),使得X→Y,Y

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

a1

b31

b41

a1

b12

a2

a2

b42

b52

b13

b23

a3

a3

b53

a4

b24

b34

a4

b54

b15

b25

b35

a5

a5

①根据A→C,对上表进行处理,由于属性列A上第1,2,5行相同,但属性列C上对应的1,2,5行上无ai元素,所以,只能将b13,b23,b53改为行号最小值b13。

又根据C→D将属性列D上b34改为a4,修改后的表如处图所示:

A

B

C

D

E

R1(A,D)

R2(A,B)

R3(B,C)

R4(C,D,E)

R5(A,E)

a1

a1

b31

b41

a1

b12

a2

a2

b42

b52

b13

b13

a3

a3

b13

a4

b24

a4

a4

b54

b15

b25

b35

a5

a5

②根据B→C,对上表进行处理,由于属性列B上第2,3行相同,但属性列C上对应的3行为a3元素,所以,只能将第2行b13改为a3。

又根据DE→C,CE→A不能修改此表,所以修改后的表如下图所示:

A

B

C

D

E

R1(A,D)

R2(A,B)

R3(B,C)

R4(C,D,E)

R5(A,E)

a1

a1

b31

b41

a1

b12

a2

a2

b42

b52

b13

a3

a3

a3

b13

a4

b24

a4

a4

b54

b15

b25

b35

a5

a5

③根据A→C,对上表进行处理,由于属性列A上第1,2,5行相同,但属性列C上对应的1,2,5行上有a3元素,所以,只能将第1,5行b13改为a3。

又根据C→D将属性列D上b24,b54改为a4,修改后的表如下图所示:

A

B

C

D

E

R1(A,D)

R2(A,B

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1