数据库第二章课后习题解答.docx

上传人:b****8 文档编号:10928631 上传时间:2023-02-23 格式:DOCX 页数:19 大小:864.92KB
下载 相关 举报
数据库第二章课后习题解答.docx_第1页
第1页 / 共19页
数据库第二章课后习题解答.docx_第2页
第2页 / 共19页
数据库第二章课后习题解答.docx_第3页
第3页 / 共19页
数据库第二章课后习题解答.docx_第4页
第4页 / 共19页
数据库第二章课后习题解答.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

数据库第二章课后习题解答.docx

《数据库第二章课后习题解答.docx》由会员分享,可在线阅读,更多相关《数据库第二章课后习题解答.docx(19页珍藏版)》请在冰豆网上搜索。

数据库第二章课后习题解答.docx

数据库第二章课后习题解答

 

数据库第二章课后习题解答(共14页)

第3部分习题及其解答

第一章的两道题

3-2习题2

分别把习题、习题的ER图转换成关系模型数据结构。

【参考答案】

1.习题的ER图可转换成如下的关系模型数据结构。

①程序员(编号,姓名,性别,年龄,单位,职称),其中编号是关键字;

②程序(程序名称,版权,专利号,价格),其中程序名称是关键字;

③设计(编号,程序名称,开始时间,结束时间),其中(编号,程序名称)是关键字。

2.习题的ER图可转换成如下的关系模型数据结构。

①工厂(工厂名称,厂址,联系电话),其中工厂名称是关键字;

②产品(产品号,产品名,规格,单价),其中产品号是关键字;

③工人(工人编号,姓名,性别,职称,工厂名称,雇用期,月薪),其中工人编号是关键字,工厂名称是外关键字,雇用期和月薪是联系属性;

④生产(工厂名称,产品号,月产量),其中(工厂名称,产品号)是关键字,生产关系是表示联系的。

判断下列情况,分别指出它们具体遵循那一类完整性约束规则

1.用户写一条语句明确指定月份数据在1~12之间有效。

2.关系数据库中不允许主键值为空的元组存在。

3.从A关系的外键出发去找B关系中的记录,必须能找到。

【解答】

1.用户用语句指定月份数据在1~12之间有效,遵循用户定义的完整性约束规则。

2.关系数据库中不允许主键值为空的元组存在,遵循实体完整性约束规则;

3.从A关系的外键出发去找B关系的记录,必须能找到,遵循引用完整性约束规则。

判断下列情况,分别指出他们是用DML还是用DDL来完成下列操作

1.创建“学生”表结构。

2.对“学生”表中的学号属性,其数据类型由“整型”修改为“字符型”。

3.把“学生”表中学号“021”修改为“025”。

【解答】

1.创建“学生”表结构,即定义一个关系模式,用DDL完成。

2.修改“学生”表中学号属性的数据类型,即修改关系模式的定义,用DDL完成。

3.修改“学生”表中学号属性的数据值,即对表中的数据进行操作,用DML完成。

给出两个学生选修课程关系A和B,属性为姓名、课程名、成绩。

分别写出后列各关系代数运算的结果关系。

1.A和B的并、交、差、乘积、自然联接。

2.>''(A);2=''∧<''(B);,(A);(B)。

3.1,3(2=''(B));(>''(A

B));(=''∨=''(A-B))。

4.

5.A

B;A

B;A

B。

【解答】

1.结果关系见表(a)~表(e)。

2.结果关系见表(f)~表(i)。

3.结果关系见表(j)~表(l)。

表(l)(''''(A-B))结果关系

姓名

罗杰明

4.结果关系见表(m)~表(n)。

5.结果关系见表(o)~表(q)。

表(q)AB结果关系

姓名

课程名

成绩

李红

数学

89

黄边晴

C++语言

86

叶晴

数学

73

假设教学数据库中已建立三个关系:

学生关系student(sno,sname,sex,birth,height,class,address)

课程关系course(cno,cname,credit)

选修关系elective(sno,cno,grade)

用关系代数表达式表达下列查询:

1.检索学习课程号为C06的学生学号与成绩。

2.检索学习课程号为C06的学生学号与姓名。

3.检索学习课程名为ENGLISH的学生学号与姓名。

4.检索选修课程号为C02或C06的学生学号。

5.检索至少选修课程号为C02和C06的学生学号。

6.检索没有选修C06课程的学生姓名及其所在班级。

7.检索学习全部课程的学生姓名。

8.检索学习课程中包含了S08学生所学课程的学生学号。

【解答】

1.检索学习课程号为C06的学生学号与成绩。

sno,grade(cno='C06'(elective))或1,3(2='C06'(elective))

2.检索学习课程号为C06的学生学号与姓名。

sno,sname(cno='C06'(student

elective))

3.检索学习课程名为ENGLISH的学生学号与姓名。

sno,sname(cname='ENGLISH'(student

elective

course))

4.检索选修课程号为C02或C06的学生学号。

sno(cno='C02'∨cno='C06'(elective))

5.检索至少选修课程号为C02和C06的学生学号。

sno(1=4∧2='C02'∧5='C06'(electiveelective))

6.检索没有选修C06课程的学生姓名及其所在班级。

sname,class(student)-sname,class(cno='C06'(student

elective))

7.检索学习全部课程的学生姓名。

sname(student

(sno,cno(elective)cno(course)))

8.检索学习课程中包含了S08学生所学课程的学生学号。

sno,cno(elective)(cno(sno='S08'(elective)))

已知关系模式R(A,B,C,D,E)和函数依赖集F={AB→C,B→D,C→E,EC→B,AC→B,D→BE},试问AC→BE能否从F导出

【解答】

方法一:

运用推理规则推导。

对已知的AC→B和B→D,根据Å3传递律,AC→D成立;

对已证的AC→D和已知的D→BE,根据Å3传递律,AC→BE成立;即AC→BE能从F中导出。

方法二:

按算法(求属性集合X关于函数依赖集F的闭包X+),求(AC)+。

(1)置初始值A=ф,A*=AC;

(2)因A≠A*,置A=AC;

(3)第一次扫描F,找到C→E和AC→B,其左部AC,故置A*=ACEB。

搜索完,转(4);

(4)因A≠A*,置A=ACEB;

(5)第二次扫描F,找到AB→C,B→D和EC→B,其左部ACEB,故置A*=ACEBD。

搜索完,转(6);

(6)因A≠A*,置A=ACEBD;

(7)第三次扫描F,找到D→BE,其左部ACEBD,故置A*=ACEBD。

搜索完,转(8);

(8)因A=A*,转(9);

(9)输出A*,即(AC)+=ACEBD。

因为BE(AC)+,所以AC→BE能够从F中导出。

方法三:

运行算法的VB程序,输入相应数据后,得出(AC)+=ACEBD,如图所示。

因为BE(AC)+,所以AC→BE能够从F中导出。

图运行算法的VB程序,求(AC)+。

2.求属性集BG关于F的闭包(BG)+,其算法步骤如下:

(1)置初始值A=ф,A*=BG;

(2)因A≠A*,置A=BG;

(3)第一次扫描F,找到B→CE,其左部BG,故置A*=BGCE。

搜索完,转(4);

(4)因A≠A*,置A=BGCE;

(5)第二次扫描F,找到GC→A,其左部BGCE,故置A*=BGCEA。

搜索完,转(6);

(6)因A≠A*,置A=BGCEA;

(7)第三次扫描F,找到AC→PE,A→P,GA→B和AE→GB,其左部BGCEA,故置A*=BGCEAP。

搜索完,转(8);

(8)因A≠A*,置A=BGCEAP;

(9)第四次扫描F,找到PG→A,PAB→G和ABCP→H,其左部BGCEAP,故置A*=BGCEAPH。

搜索完,转(10);

(10)因A≠A*,置A=BGCEAPH;

(11)第五次扫描F,找不到其左部BGCEAPH的函数依赖,转(12);

(12)因A=A*,转(13);

(13)输出A*,即(BG)+=BGCEAPH。

运行算法的VB程序,输入相应数据后,可验证(BG)+=BGCEAPH,如图所示。

图运行算法的VB程序,求(BG)+。

已知关系模式R(A,B,C,D,E)和函数依赖集F={A→D,E→D,D→B,BC→D,DC→A},问分解ρ={R1(A,B),R2(A,E),R3(E,C),R4(D,B,C),R5(A,C)}是否为R的无损联接分解。

【解答】

1.根据“测试一个分解ρ是否为无损连接分解”的算法,首先建立习题的初始Rρ表,如表

(1)所示。

(1)习题的初始Rρ表

A

B

C

D

E

AB

AE

EC

DBC

AC

a

a

b

b

a

a

b

b

a

b

b

b

a

a

a

b

b

b

a

b

b

a

a

b

b

 

2.反复检查F的每一个函数依赖,修改Rρ表中的元素,一直到表格不能修改为止。

①对A→D,第1,2,5行的A同为a1,把这三行的D均改为b14;

②对E→D,第2,3行的E同为a5,把这两行的D均改为b14;

③对D→B,第1,2,3,5行的D同为b14,把这四行的B均改为a2;

④对BC→D,第3,4,5行的BC同为(a2,a3),把这三行的D均改为a4;

⑤对DC→A,第3,4,5行的DC同为(a4,a3),把这三行的A均改为a1;

⑥重复扫描F,对A→D,五行的A同为a1,把这五行的D均改为a4;

⑦表格不能再修改了,算法终止,结果Rρ表如表

(2)所示。

第3行全为a,即ρ是R的无损联接分解。

若本题用算法的VB程序解题,结果见图。

(2)习题的结果Rρ表

A

B

C

D

E

AB

AE

EC

DBC

AC

a

a

a

a

a

a

a

a

a

a

b

b

a

a

a

a

a

a

a

a

b

a

a

b

b

 

图习题用算法的VB程序解题

试分析下列分解是否具有无损联接和保持函数依赖的特点。

1.设R1(ABC),F1={A→B},ρ1={AB,AC}。

2.设R2(ABC),F2={A→C,B→C},ρ2={AB,AC}。

3.设R3(ABC),F3={A→B},ρ3={AB,BC}。

4.设R4(ABC),F4={A→B,B→C},ρ4={AC,BC}。

5.设R5(ABC),F5={AB→C,C→A},ρ5={AC,BC}。

【解答】

1.因为AB∩AC=A,AB-AC=B,A→B成立,所以分解ρ1具有无损连接性。

运行算法的VB程序如图(a)所示,验证结果正确。

因为{AB}(F1)∪{AC}(F1)=A→B=F1;所以分解ρ1是保持函数依赖集F1的。

图(a)分解ρ1具有无损连接性

2.因为AB∩AC=A,AC-AB=C,A→C成立,所以分解ρ2具有无损连接性。

运行算法的VB程序如图(b)所示,验证结果正确。

因为{AB}(F2)∪{AC}(F2)=A→C≠F2;所以分解ρ2不具有保持函数依赖特性。

图(b)分解ρ2具有无损连接性

3.因为(AB∩BC)↛(AB-BC),而且(AB∩BC)↛(BC-AB),所以分解ρ3不具有无损连接特性。

运行算法的VB程序如图(c)所示,验证结果正确。

因为{AB}(F3)∪{BC}(F3)=A→B=F3;所以分解ρ3是保持函数依赖集F3的。

图(c)分解ρ3不具有无损连接特性

4.因为(AC∩BC)↛(AC-BC),而且(AC∩BC)↛(BC-AC),所以分解ρ4不具有无损连接特性。

运行算法的VB程序如图(d)所示,验证结果正确。

因为{AC}(F4)∪{BC}(F4)=B→C≠F4;所以分解ρ4不具有保持函数依赖特性。

图(d)分解ρ4不具有无损连接特性

5.因为AC∩BC=C,AC-BC=A,C→A成立,所以分解ρ5具有无损连接性。

运行算法的VB程序如图(e)所示,验证结果正确。

因为{AC}(F5)∪{BC}(F5)=C→A≠F5;所以分解ρ5不具有保持函数依赖特性。

图(e)分解ρ5具有无损连接性

已知关系模式R(A,B,C,D)和函数依赖集F={A→B,B→C,A→D,D→C},ρ={AB,AC,AD}是R的一个分解。

1.求出F在ρ的每个模式上的投影。

2.ρ相对于F是无损连接分解吗

3.ρ保持依赖吗

【解答】

1.(AB)(F)={A→B};(AC)(F)={A→C};(AD)(F)={A→D};

2.ρ相对于F是无损连接分解,见图。

图分解ρ={AB,AC,AD}相对于F是无损连接分解

3.因为(AB)(F)∪(AC)(F)∪(AD)(F)={A→B,A→C,A→D},与F比较,丢失了B→C和D→C,所以分解ρ不保持依赖。

已知关系模式R(A,B,C,D)和函数依赖集F={A→C,D→C,BD→A},ρ={AB,ACD,BCD}是R的一个分解。

试证明ρ相对于F不是无损联接分解。

【解答】

ρ相对于F不是无损连接分解,见图。

图分解ρ={AB,ACD,BCD}相对于F不是无损连接分解

已知关系模式R(A,B,C,D)和函数依赖集F={A→B,B→C,D→B},

1.把R分解成{ACD,BD},试求F在这两个模式上的投影。

2.R1(ACD)和R2(BD)是BCNF吗如果不是,请作进一步分解。

【解答】

1.(ACD)(F)={A→C,D→C};(BD)(F)={D→B}。

分解{ACD,BD}丢失了函数依赖集F中的A→B和B→C,所以该分解不具有保持函数依赖特性。

2.对R1(ACD)和R2(BD)做如下分析。

※在R1(ACD)中,有A→C,D→C,(AD)+=ACD;(AD)是键,C是非主属性。

R1为1NF,但R1中的非主属性C部分依赖于候选键,所以R1不是2NF,也不是3NF和BCNF。

可把R1为进一步分解为{AC,AD}或{DC,AD},见图(a)和(b)。

图(a)把R1为分解为{AC,AD},是无损连接分解

在分解{AC,AD}中,{AC}有A→C,A是键,C是非主属性,{AC}为BCNF;{AD}的键是(AD),{AD}也为BCNF。

分解{AC,AD}是无损连接分解,但丢失了函数依赖D→C。

图(b)把R1为分解为{DC,AD},也是无损连接分解

在分解{DC,AD}中,{DC}有D→C,D是键,C是非主属性,{DC}为BCNF;{AD}的键是(AD),{AD}也为BCNF。

分解{DC,AD}是无损连接分解,但丢失了函数依赖A→C。

※在R2(BD)中,有D→B,D+=DB;D为键且B不在D中,所以R2是BCNF。

已知关系模式R(A,B,C,D)和函数依赖集F1={A→B,B→C};F2={B→C,C→D}。

R的一个分解ρ={AB,BC,CD}。

1.若F1是R上的函数依赖集,ρ相对于F1是无损连接分解吗

2.若F2是R上的函数依赖集,ρ相对于F2是无损连接分解吗

在分析过程中,如果认为ρ不是无损连接分解,试举出反例说明。

【解答】

1.如图(a)所示,ρ相对于F1不是无损连接分解。

图(a)ρ相对于F1不是无损连接分解

假设关系模式R的一个实例r如表(a)所示。

r的分解见表(b),(c),(d)。

{AB}

{BC}

{CD}的结果关系见表(e)。

显然易见,ρ相对于F1不是无损连接分解。

表ρ不是无损连接分解的实例说明

 

2.如图(b)所示,ρ相对于F2是无损连接分解。

图(b)ρ相对于F2是无损连接分解

有关系模式R(学号Sno,课程号Cno,成绩Grade,任课教师Tname,教师电话Ttel),假设:

每个学生选修一门课只取得一个成绩;每门课只有一个教师任教;不存在教师同名的情况;每个教师只有一个家庭电话。

1.写出关系模式R的函数依赖集和候选关键字。

2.把R分解成2NF模式集并说明理由。

3.把R分解成3NF模式集并说明理由。

4.把R分解成BCNF模式集并说明理由。

【解答】

1.关系模式R中主要的函数依赖有:

(Sno,Cno)→Grade每个学生选修一门课后,对应取得一个成绩;

Cno→Tname每门课只有一个教师任教;

Tname→Ttel每个教师只有一个家庭电话;

(Sno,Cno)→(Sno,Cno,Grade,Tname,Ttel)键(Sno,Cno)惟一决定表中的一行。

在R中,Sno,Cno是主属性,其余的属性Grade,Tname,Ttel为非主属性。

R符合关系定义,R1NF。

但R中存在非主属性对候选键的部分依赖Cno→Tname,所以R2NF。

2.要消除非主属性对候选键的部分依赖,可把关系R无损连接地分解成两个2NF的关系模式:

ρ={R1,R2},R1={Sno,Cno,Grade},R2={Cno,Tname,Ttel}

这里,R1的非主属性Grade对键(Sno,Cno)是完全函数依赖,R2的非主属性Tname,Ttel对键Cno也是完全函数依赖;因此,R12NF,R22NF,并且ρ={R1,R2}是无损连接分解。

3.对R1,R2做进一步的判断。

由于R1中不存在非主属性对候选关键字的传递依赖,所以关系模式R13NF。

在R2中,键是Cno,非主属性是Tname,Ttel,函数依赖为Cno→Tname,Tname→Ttel。

由于R2中存在非主属性Ttel对候选键Cno的传递依赖,所以R23NF。

要消除非主属性对候选键的传递依赖,可把关系R2无损连接地分解成两个3NF的关系模式:

ρ={R3,R4},R3={Cno,Tname},R4={Tname,Ttel}

这里,R3的非主属性Tname对键Cno不存在传递函数依赖,R4的非主属性Ttel对键Tname也不存在传递函数依赖;因此,R33NF,R43NF,并且ρ={R3,R4}是无损连接分解。

4.经过上述的分解,得到:

R1={Sno,Cno,Grade};

R3={Cno,Tname};

R4={Tname,Ttel}。

在R1中,函数依赖为(Sno,Cno)→Grade,决定因素(Sno,Cno)是R1的键;

在R3中,函数依赖为Cno→Tname,决定因素Cno是R3的键;

在R4中,函数依赖为Tname→Ttel,决定因素Tname是R4的键;

这三个关系模式都满足BCNF的定义,所以,R1BCNF,R3BCNF,R4BCNF。

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

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

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

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