数据库原理第四章课后题答案(第四版)

简介: 数据库原理第四章课后题答案(第四版)

一、选择题

1. B    2. B    3. D    4. B    5. C

6. D    7. B    8. D    9. D    10. D

11. A   12.C   13.D    14.C    15.B

二、填空题

1. 超键(或超码)

2. 正确  完备

3. 属性集X的闭包X +    函数依赖集F的闭包F +

4. 平凡的函数依赖  自反性

5. {ADC}    φ

6. 2NF  3NF  BCNF

7. 无损连接  保持函数依赖

8. AB  BC  BD

9. Bφ  BB  BC  BBC

10. BC  AD  DC

11. AB  1NF

12. AD  2NF

13. BCNF

14. 包含

15. 函数依赖

16. BCNF

三、简答题

1.解释下列术语的含义:函数依赖、平凡函数依赖、非平凡函数依赖、部分函数依赖、完全函数依赖、传递函数依赖、范式、无损连接分解、保持函数依赖分解。

函数依赖(Functional Dependency,FD)是关系模式中属性之间的一种逻辑依赖关系。

当属性集Y是属性集X的子集(即YX)时,则必然存在着函数依赖XY,这种类型的函数依赖称为平凡的函数依赖。如果Y不是X的子集,则称XY为非平凡的函数依赖。

设有关系模式RU),U是属性全集,XYU的子集,如果XY,并且对于X的任何一个真子集X′,都有X'\Y,则称YX完全函数依赖(Full Functional Dependency),记作XY。如果对X的某个真子集X',有X'→Y,则称YX部分函数依赖(Partial Functional Dependency),记作XY

设有关系模式RU),U是属性全集,XYZU的子集,若XY,但Y\X,而YZYXZY),则称ZX传递函数依赖(Transitive Functional Dependency),记作:XZ

关系模式规范化过程中为不同程度的规范化要求设立的不同标准称为范式

2.给出2NF、3NF和BCNF的形式化定义,并说明它们之间的区别和联系。

如果关系模式R∈1NF,且每个非主属性都完全函数依赖于R的主码,则称R属于第二范式(Second Normal Form),简称2NF,记作R∈2NF。

如果关系模式R∈2NF,且每个非主属性都不传递函数依赖于R的主码,则称R属于第三范式(Third Normal Form),简称3NF,记作R∈3NF。

如果关系模式R∈1NF,且所有的函数依赖XYYX),决定因素X都包含了R的一个候选码,则称R属于BC范式(Boyce-Codd Normal Form),记作R∈BCNF。

区别和联系:

(1)BCNF3NF2NF

(2)BCNF、3NF与2NF均是针对函数依赖而定义划分的。2NF、3NF和BCNF是在函数依赖的条件下对模式分解所能达到的分离程度的测度。一个模式中的关系模式如果都属于BCNF,那么在函数依赖范畴内,它已实现了彻底的分离,已消除了插入和删除异常。

3.什么叫关系模式分解?为什么要有关系模式分解?模式分解要遵守什么准则?

设有关系模式RU),R1,R2,…,Rk都是R的子集(此处把关系模式看成是属性的集合),R=R1∪R2∪…∪Rk,关系模式的集合用ρ表示,ρ={R1,R2,…,Rk}。用ρ代替R的过程称为关系模式的分解。

关系模式分解是为了消除关系模式中不合理的数据冗余和操作异常问题。

衡量关系模式的一个分解是否可取,主要有两个标准:即分解是否具有无损连接,分解是否保持了函数依赖。

4.试证明全码的关系必是3NF,也必是BCNF。

设有关系RUF),因为R含全码,所以U中的属性均为主属性,即R不含任何非主属性。根据3NF的定义,R中没有非主属性对码有传递函数依赖存在。根据定义可下结论:R3NF。证毕。

5.设有关系模式RABCD),函数依赖F={ACCABACDACBDA}

(1)求出R的所有候选码。

(2)求出F的最小函数依赖集Fmin。

(3)根据函数依赖关系,确定关系模式R属于第几范式。

(4)将R分解为3NF,并保持无损连接性和函数依赖性。

(1)候选码是BD

(2){ACCABADA}

(3)第1范式

(4)P={ACBADABD}

6.设有关系模式RABCD),函数依赖F={ACCABACDAC}

(1)求(AD) +,B +。

(2)求出R的所有候选码。

(3)求出F的最小函数依赖集Fmin。

(4)根据函数依赖关系,确定关系模式R属于第几范式。

(5)将R分解为3NF,并保持无损连接性和函数依赖性。

(6)将R分解为BCNF,并保持无损连接性。

(1)(AD) +=ACD,B +=ABC

(2)BD

(3){ACCABADA}

(4)第1范式

(5)P={R1(AC),R2(BA),R3(DA),R4(BD)}

(6)P={R1(AC),R2(ABD) }

7.关系模式RABCDE),函数依赖F={ADEDDBBCDCDA}。

(1)求R的候选码。

(2)根据函数依赖关系,确定关系模式R属于第几范式。

(3)将R分解为3NF,并保持无损连接性。

(1)CE

(2)第1范式

(3)P={R1(AC)R2(BC)R3(CD)R4(DEC)R5(CEA)R6(BE)}

8.判断以下关系模式的分解是否具有无损连接性。

(1)关系模式RUVWXYZ),函数依赖F={UVWZYUWYX},分解ρ={WZVYWXYUV}。

(2)关系模式RBOISQD),函数依赖F={SDIBISQBO},分解ρ={SDIBISQBO}。

(3)关系模式RABCD),函数依赖F={ACDCBDA},分解ρ={ABACDBCD}。

(4)关系模式RABCDE),函数依赖F={ACCDBCDECCEA},分解ρ={ADABBCCDEAE}。

(1)否

(2)是

(3)否

(4)否

9.设有关系模式SCSCG),函数依赖集为F={SCG}。请确定SC的范式等级,并证明。

候选码SC,

非主属性G都完全依赖于主码,属于第二范式;

非主属性G不传递函数依赖于主码,属于第三范式;

函数依赖决定因素包括候选码,属于BC范式;

对于函数依赖SCG,SC包含了关系的候选码,属于第四范式。

10.设有关系模式RABCDEF),函数依赖集F={ABCBCABCDEFEC}。试问:关系模式R是否为BCNF,并证明结论。

此题目题干存在问题,建议删除。

11.设有关系模式RABCDE),函数依赖集F={ADEDDB,(BC)→D,(DC)→A}。

(1)求出R的候选码。

(2)判断ρ={ABAECEBCDAC}是否为无损连接分解?

(1)CE

(2)是。

12.设有关系模式RABCDE),函数依赖集F={ACBDCDDECCEA}。

判断ρ={ADABBECDEAE}是否为无损连接分解?

不是无损连接分解。

13.设有函数依赖集F={ABCEACGPBEPACDEPHBPDHGABCPG},求属性集D关于F的闭包D +。

D +={DGH}

14.已知关系模式R的全部属性集U={ABCDEG}及其函数依赖集:F={ABCCABCDACDBDEGBECCGBDCEAG},求属性集BD的闭包(BD)+。

BD)+={ABCDEG}

15.设有函数依赖集F={DGCACDEAB},求闭包D +、C +、A +、(CD)+、(AD)+、(AC)+、(ACD)+。

D +={DG}

C +={ABC}

CD)+={ABCDEG}

AD)+={ABDG}

AC)+={ABC}

ACD)+={ABCDEG}

16.设有函数依赖集F={ABCEACGPBEPACDEPHBPDHGABCPG},求与F等价的最小函数依赖集。

Fmin={ABEACGPBEPACDEPHBPDHDGABPABG}

17.设有关系模式RUF),其中:U={EFGH},F={EGGEFEGHEGFHE},求F的最小函数依赖集。

Fmin={ EGGEFEHE }

18.求以下给定关系模式的所有候选码。

(1)关系模式RABCDEP),其函数依赖集F={ABCPEACED}。

(2)关系模式RCTSNG),其函数依赖集F={CTCSGSN}。

(3)关系模式RCSZ),其函数依赖集F={(CS)→ZZC}。

(4)关系模式RSDIBOQ),其函数依赖集F={SDIBBOOQQI}。

(5)关系模式RSDIBOQ),其函数依赖集F={IBBOIQSD}。

(6)关系模式RABCDEF),其函数依赖集F={ABEACFADBBCCD}。

(1)CE

(2)CS

(3)CS,ZS

(4)SISBSOSQ

(5)SI

(6)ABACAD

19.设有关系R,如图4-36所示。

试问R属于第几范式?如何规范化为3NF?写出规范化的步骤。

职工号

职工名

年龄

性别

单位号

单位名

E1

ZHAO

20

F

D3

CCC

E2

QIAN

25

M

D1

AAA

E3

SEN

38

M

D3

CCC

E4

LI

25

F

D3

CCC

图4-36  关系R

关系R主码为职工号,每个非主属性都完全函数依赖于主码,因此R属于第二范式。因为单位名依赖于单位号,单位号依赖于职工号,即非主属性传递函数依赖于R的主码,所以R不属于第三范式。

规范化步骤:

(1)求出关系模式R的最小函数依赖集。

Fmin={职工号→职工名,职工号→年龄,职工号→性别,职工号→单位号,单位号→单位名}

(2)根据算法4.6的第(2)步,可看出F中没有满足条件的函数依赖。

(3)根据算法4.6的第(3)步,将R分解为:R1={职工号,职工名,年龄,性别,单位号},R2={单位号,单位名}。

(4)ρ={ R1={职工号,职工名,年龄,性别,单位号},R2={单位号,单位名}}。

20.要建立关于系、学生、班级、研究会等信息的一个关系数据库。规定:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生,一个系的学生住在同一个宿舍区。每个学生可参加若干研究会,每个研究会有若干学生。

描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区。

描述班级的属性有:班号、专业名、系名、人数、入校年份。

描述系的属性有:系号、系名、系办公室地点、人数。

描述研究会的属性有:研究会名、成立年份、地点、人数。

学生参加某研究会,有一个入会年份。

试给出上述数据库的关系模式;写出每个关系的最小依赖集(基本的函数依赖集,不是导出的函数依赖);指出是否存在传递函数依赖;对于函数依赖左部是多属性的情况,讨论其函数依赖是完全函数依赖还是部分函数依赖,指出各关系的候选码。

(1)关系模式为:

系({系号,系名,系办公室地点,宿舍区,人数},{系号→系名,系号→系办公室地点,系名→系办公室地点,系号→宿舍区})

班级({班号,专业名,系号,人数,入校年份}{班号→专业名,班号→系号,班号→入校年份,(专业名,入校年份)→班号}),其中,人数为冗余属性,可以通过计算指定班级号的人数获得。

学生({学号,姓名,出生年月,系号,班号}{学号→姓名,学号→出生年月,学号→系号,学号→班号,学号→宿舍区,班号→系号}

入会({学号,研究会名,入会年份}{(学号,研究会名)→入会年份}

研究会({研究会名,成立年份,地点,人数}{研究会名→成立年份,研究会名→地点}),其中,人数为冗余属性,可以通过入会关系计算查询。

(2)传递函数依赖有:系号→系办公室地点;学号→宿舍区;

3以上关系模式中没有部分函数依赖。

系关系中候选码为:系号;外码为:无

班级关系中候选键为:班号、(专业名,入校年份);外码为:系号

学生关系中候选键为:学号;外码为:班号

入会关系中候选键为:(学号,研究会名);外码为:学号或研究会名

研究会关系中候选键为:研究会名;外码为:无

21.设有函数依赖集F={AB→CE,A→C,GP→B,EP→A,CDE→P,HB→P,D→HG,ABC→PG},求与F等价的最小函数依赖集。

同16题答案。

22.设有关系模式R(B,O,I,S,Q,D),其上函数依赖集为:F={S→D,I→B,IS→Q,B→O},如果用SD、IB、ISQ和BO代替R,这样的分解具有无损连接吗?

该分解是无损连接。

23.设关系R(课程名,教师名,教师地址),它是第几范式?是否存在删除异常?如何将它分解为高一级的范式。

关系R是第一范式。该关系的主码为(课程名,教师名),因为教师地址函数依赖于教师名,因此不满足每个非主属性都完全函数依赖于R的主码,因此不属于第二范式。

该关系存在删除异常,当某课程被删除时,相应的教师名和教师地址也被删除,但现实中该教师仍在存在。

关系R可分解为R1={课程名,教师名},R2={教师名,教师地址}。

目录
相关文章
|
3月前
|
算法 关系型数据库 MySQL
【MySQL 解析】数据库的乐观锁和悲观锁实现原理
【1月更文挑战第11天】【MySQL 解析】数据库的乐观锁和悲观锁实现原理
|
3月前
|
NoSQL 中间件 API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(下)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
82 2
|
3月前
|
NoSQL Java API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(上)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
74 0
|
5天前
|
存储 SQL 数据库
数据库库表结构设计:原理、实例与最佳实践
数据库库表结构设计:原理、实例与最佳实践
18 0
|
4月前
|
druid 网络协议 Java
再有人问你数据库连接池的原理,这篇文章甩给他!
在 Spring Boot 项目中,数据库连接池已经成为标配,然而,我曾经遇到过不少连接池异常导致业务错误的事故。很多经验丰富的工程师也可能不小心在这方面出现问题。 在这篇文章中,我们将探讨数据库连接池,深入解析其实现机制,以便更好地理解和规避潜在的风险。
|
1月前
|
缓存 Java 数据库连接
mybatis 数据库缓存的原理
MyBatis 是一个流行的 Java 持久层框架,它封装了 JDBC,使数据库交互变得更简单、直观。MyBatis 支持两级缓存:一级缓存(Local Cache)和二级缓存(Global Cache),通过这两级缓存可以有效地减少数据库的访问次数,提高应用性能。
282 1
|
2月前
|
存储 关系型数据库 数据库
数据库索引的原理,为什么要用 B+树,为什么不用二叉树?
数据库索引的原理,为什么要用 B+树,为什么不用二叉树?
|
2月前
|
NoSQL Java API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
300 0
|
3月前
|
存储 传感器 数据挖掘
请解释一下时序数据库的工作原理,并提供一个使用时序数据库的实际应用场景。
请解释一下时序数据库的工作原理,并提供一个使用时序数据库的实际应用场景。
184 0
|
3月前
|
存储 数据采集 搜索推荐
请解释一下搜索引擎数据库的工作原理,并提供一个使用搜索引擎数据库的实际应用场景。
请解释一下搜索引擎数据库的工作原理,并提供一个使用搜索引擎数据库的实际应用场景。
23 0

热门文章

最新文章