第四版课后作业答案 下载本文

7.试述数据模型的概念(13页)、数据模型的作用、数据模型的三个要素。(14、15页)

答:数据模型(Data Model)也是一种模型,它是现实世界数据特征的抽象。 作用:在数据库中用数据模型来抽象、表示和处理现实世界中的数据和信息。通俗地讲数据模型就是现实世界的模拟,现有的数据库系统均是基于某种数据模型的。

三个要素:数据模型由数据结构、数据操作和完整性约束三部分组成。

12.学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教员,每个班有若干学生,每个学生选修若干课程,每门课可由若干学生选修。请用E-R图画出此学校的概念模型。(20页例题)

13.某工厂生产若干产品,每种产品由不同的零件组成,有的零件可用在不同的产品上。这些零件由不同的原材料制成,不同零件所用的材料可以相同。这些零件按所属的不同产品分别放在仓库中,原材料按照类别放在若干仓库中。请用E-R图画山此工厂产品,零件,材料,仓库的概念模型。

18.试述关系模型的概念,定义并解释以下术语:(P31页) (1)关系 (2)属性 (3)域 (4)元组 (5)主码 (6)分量 (7)关系模式

22.什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么数据库系统具有数据与程序的独立性? (35、36页)

当数据库的存储结构改变了(例如选用了另一种存储结构),由数据库管理员对模式/内模式映象作相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了程序与数据的物理独立性,简称数据的物理独立性。

当需要改变模式时(例如增加新的关系、新的属性、改变属性的数据类型、改变数据间的联系等),由数据库管理员对各个外模式/模式的映象作相应改变,而使外模式保持不变,从而不必修改或重写应用程序改。而应用程序是依据数据的外模式编写的,保证了数据与程序的逻辑独立性。简称数据的逻辑独立性。

特定的应用程序是在外模式描述的数据结构上编制的,它依赖于特定的外模式,与数据库的模式和存储结构独立。不同的应用程序有时可以共用同一个外模式。数据库的二级映象保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改。

2章

3、定解下列术语,说明它们联系与区别:(P46---50页)

(1)域,笛卡尔积,关系,元组,属性 (2)主码,候选码,外部码

(3)关系模式,关系,关系数据库

5

1)求供应工程J1零件的供应商号码SNO:

πSno(σjno=‘J1’(SPJ))

2)求供应工程J1零件P1的供应商号码SNO:

πSno(σjno=‘J1’∧Pno=‘P1‘(SPJ))

3)求供应工程J1零件为红色的供应商号码SNO:

πSno(σjno=‘j1‘ (σCOLOR=’红‘ (P)∞SPJ))

4)求没有使用天津供应商生产的红色零件的工程号JNO:

πJno(SPJ)- πJNO(σcity=‘天津’∧Color=‘红‘ (S∞SPJ∞P) 5)求至少用了供应商S1所供应的全部零件的工程号JNO:

πJno,Pno(SPJ)÷ πPno(σSno=‘S1‘ (SPJ))

(见P62页 例6)

3章

1. 3.用SQL语句建立第二章习题5中的四个表。

S(SNO,SNAME,STATUS,CITY); P(PNO,PNAME,COLOR,WEIGHT); J(JNO,JNAME,CITY);

SPJ(SNO,PNO,JNO,QTY);

供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成:

CREATE TABLE S

(Sno C(2) UNIQUE, Sname C(6) , Status N(2), City C(4))

零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成: CREATE TABLE P

(Pno C(2) UNIQUE, Pname C(6), COLOR C(2), WEIGHT I(2))

工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、所在城市(CITY)组

成:

CREATE TABLE J (Jno C(2) UNlQUE, JNAME C(8), CITY C(4))

供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成:

CREATE TABLE SPJ (Sno C(2), Pno C(2), JNO C(2), QTY N(2))

4.针对上题中建立的四个表试用SQL语言完成第二章习题5中的查询: 求供应工程J1零件的供应商号码SNO:

SELECT DIST SNO FROM SPJ

WHERE JNO=’J1’

求供应工程J1零件P1的供应商号码SNO:

SELECT DIST SNO FROM SPJ

WHERE JNO='J1' AND PNO='P1'

求供应工程J1零件为红色的供应商号码SNO:

SELECT SNO FROM SPJ,P

WHERE JNO='J1' AND SPJ.PNO=P.PNO AND COLOR='红'

求没有使用天津供应商生产的红色零件的工程号JNO:

SELECT DIST JNO FROM SPJ

WHERE JNO NOT IN

(SELE JNO FROM SPJ,P,S

WHERE S.CITY='天津' AND COLOR='红' AND S.SNO=SPJ.SNO P.PNO=SPJ.PNO)。

求至少用了供应商S1所供应的全部零件的工程号JNO。

由于VFP不允许子查询嵌套太深,将查询分为两步

A、查询S1供应商供应的零件号

SELECT DIST PNO FROM SPJ

AND (1)(2)(3)(4) (5)WHERE SNO='S1'结果是(P1,P2)

B、查询哪一个工程既使用P1零件又使用P2零件。

SELECT JNO FROM SPJ

WHERE PNO='P1' AND JNO IN

(SELECT JNO FROM SPJ

WHERE PNO='P2')

5.针对习题3中的四个表试用SQL语言完成以下各项操作: (1)找出所有供应商的姓名和所在城市。 SELECT SNAME,CITY

FROM S

(2)找出所有零件的名称、颜色、重量。 SELECT PNAME,COLOR,WEIGHT FROM P

(3)找出使用供应商S1所供应零件的工程号码。 SELECT DIST JNO

FROM SPJ WHERE SNO='S1'

(4)找出工程项目J2使用的各种零件的名称及其数量。

SELECT PNAME,QTY FROM SPJ,P

WHERE P.PNO=SPJ.PNO AND SPJ.JNO='J2'

(5)找出上海厂商供应的所有零件号码。

SELECT PNO FROM SPJ,S

WHERE S.SNO=SPJ.SNO AND CITY='上海'

(6)出使用上海产的零件的工程名称。

SELECT JNAME FROM SPJ,S,J

WHERE S.SNO=SPJ.SNO AND S.CITY='上海' AND J.JNO=SPJ.JNO (7)找出没有使用天津产的零件的工程号码。

注意: SELECT DIS JNO FROM SPJ WHERE JNO NOT IN

(SELECT DIST JNO FROM SPJ,S WHERE

S.SNO=SPJ.SNO AND S.CITY='天津')

适用于JNO是唯一或不唯一的情况.

注意: SELECT DIST JNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND S.CITY<>'天津'适用于JNO是唯一的情况

(8)把全部红色零件的颜色改成蓝色。

UPDATE P

SET COLOR='蓝' WHERE COLOR='红'

(9)由S5供给J4的零件P6改为由S3供应。 UPDATE SPJ SET SNO='S3'

WHERE SNO='S5' AND JNO='J4' AND PNO='P6'

(10)从供应商关系中删除供应商号是S2的记录,并从供应情况关系中删除相应的记录。

A、DELETE FROM S WHERE SNO=’S2’ B、DELETE FROM SPJ WHERE SNO=‘S2’ (11)请将(S2,J6,P4,200)插入供应情况关系。 INSERT INTO SPJ

VALUES(‘S2’,‘J6’,‘P4’,200)

6.什么是基本表?什么是视图?两者的区别和联系是什么?(87页)

基本表是本身独立存在的表,在SQL中一个关系就对应一个表。一个(或多个)基本表对应一个存储文件,一个表可以带若干索引,索引也存放在存储文件中。 视图是从一个或几个基本表导出的表。它本身不独立存储在数据库中,即数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。视图在概念上与基本表等同,用户可以在视图上再定义视图。

11.请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。

CREATE VIEW VSP AS

SELECT SNO,PNO,QTY FROM SPJ,J

WHERE SPJ.JNO=J.JNO AND J.JNAME='三 建' 针对该视图VSP完成下列查询:

(1)找出三建工程项目使用的各种零件代码及其数量。

SELECT DIST PNO,QTY FROM VSP (2)找出供应商S1的供应情况。

SELECT DIST * FROM VSP WHERE SNO='S1'

第5章 关系数据理论习题参考答案

规范化定义小结:

定义1:设R(U)是属性集U上的关系模式。X,Y是属性集U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作X?Y。(即只要X上的属性值相等,Y上的值一定相等。)

术语和记号:(P173页)

? X?Y,但Y不是X的子集,则称X?Y是非平凡的函数依赖。若不特别声明,总是讨论非平凡的函数依赖。

? X?Y,但Y是X的子集,则称X?Y是平凡的函数依赖。 ? 若X?Y,则X叫做决定因素(Determinant)。 ? 若X?Y,Y?X,则记作X??Y。 ? 若Y不函数依赖于X,则记作X ? Y。

定义2:在R(U)中,如果 X?Y,并且对于X的任何一个真子集X’,都有X’ ? Y,则称Y对X完全函数依赖,记作:

F

X?Y

若X?Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作: P X ?Y

定义3:若关系模式R的每一个分量是不可再分的数据项,则关系模式R属于第一范式(1NF)。

定义4:若关系模式R∈1NF,且每一个非主属性完全函数依赖于码,则关系模式R∈2NF 。(即1NF消除了非主属性对码的部分函数依赖则成为2NF)。

定义5:关系模式R 中若不存在这样的码X、属性组Y及非主属性Z(Z不是Y的子集)使得X?Y,Y ? X,Y ? Z成立,则称R∈3NF。

定义6:关系模式R∈1NF 。若X?Y且Y不是X的子集时,X必含有码,则R∈BCNF。

定义7:关系模式R∈1NF,如果对于R的每个非平凡多值依赖X??Y(Y不是X的子集,Z=U-X-Y不为空),X都含有码,则称R∈4NF。

习题如下:

2.建立一个关于系、学生、班级、学会等诸信息的关系数据库。 学生:学号、姓名、出生年月、系名、班号、宿舍区。 班级:班号、专业名、系名、人数、入校年份。 系:系名、系号、系办公地点、人数。

学会:学会名、成立年份、办公地点、人数。

语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一宿舍区。每个学生可参加若干学会,每个学会有若干

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

请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。指出各关系模式的候选码、外部码,有没有全码存在?

解:(1)关系模式如下:

学生:S(Sno,Sname,Sbirth,Dept,Class,Rno) 班级:C(Class,Pname,Dept,Cnum,Cyear) 系:D(Dept,Dno,Office,Dnum)

学会:M(Mname,Myear,Maddr,Mnum) (2)每个关系模式的最小函数依赖集如下: A、学生S (Sno,Sname,Sbirth,Dept,Class,Rno) 的最小函数依赖集如下:Sno?Sname,Sno?Sbirth,Sno?Dept,Sno?Class,Class?Dept,DEPT?Rno

传递依赖如下:

由于Sno?Dept,而Dept?Sno ,Dept?Rno(宿舍区)

所以Sno与Rno之间存在着传递函数依赖。 由于Class?Dept,Dept ? Class,Dept?Rno 所以Class与Rno之间存在着传递函数依赖。 由于Sno?Class,Class?Sno,Class?Dept

所以Sno与Dept之间存在着传递函数依赖。

B、班级C(Class,Pname,Dept,Cnum,Cyear)的最小函数依赖集如下: Class?Pname,Class?Cnum,Class?Cyear,Pname?Dept.

由于Class?Pname,Pname?Class,Pname?Dept 所以C1ass与Dept之间存在着传递函数依赖。

C、系D(Dept,Dno,Office,Dnum)的最小函数依赖集如下: Dept?Dno,Dno?Dept,Dno?Office,Dno?Dnum

根据上述函数依赖可知,Dept与Office,Dept与Dnum之间不存在传递依赖。

D、学会M(Mname,Myear,Maddr,Mnum)的最小函数依赖集如下: Mname?Myear,Mname?Maddr,Mname?Mnum 该模式不存在传递依赖。

(3)各关系模式的候选码、外部码,全码如下:

A、学生S候选码:Sno;外部码:Dept、Class;无全码 B、班级C候选码:Class;外部码:Dept;无全码 C、系D候选码:Dept或Dno;无外部码;无全码 D、学会M候选码:Mname;无外部码;无全码

12.下面的结论哪些是正确的? 哪些是错误的? 对于错误的请给一个反例说明之。

(1) 任何一个二目关系是属于3NF。

答:正确。因为关系模式中只有两个属性,所以无传递。

(2) 任何一个二目关系是属于BCNF.

答:正确。按BCNF的定义,若X?Y,且Y不是X的子集时,每个决定因素都包含码,对于二目关系决定因素必然包含码。详细证明如下:(任何二元关系模式必定是BCNF)。

证明:设R为一个二目关系R(A1,A2),则属性A1和A2之间可能存在以下几种依赖关系:

A、A1?A2,但A2?A1,则关系R的码为A1,决定因素都包含码,所以,R是BCNF。

B、A1?A2,A2?A1,则关系R的码为A2,所以决定因素都包含码,R是BCNF。

包含码。R是BCNF。C、R的码为(A1,A2)(即A1 ?A2,A2 ?A1),决定因素都

(3)任何一个二目关系是属于4NF.

答:正确。因为只有两个属性,所以无非平凡的多值依赖。 第 5 章 关系数据理论习题参考答案(补充) 1. 已知学生关系模式

S(Sno,Sname,SD,Sdname,Course,Grade)

其中:Sno学号、Sname姓名、SD系名、Sdname系主任名、Course课程、Grade成绩。

(1)写出关系模式S的基本函数依赖和主码。 答: 关系模式S的基本函数依赖如下:

Sno→Sname,SD→Sdname,Sno→SD,(Sno,Course) →Grade 关系模式S的码为:(Sno,Course)。

(2)原关系模式S为几范式?为什么?分解成高一级范式,并说明为什么?

答: 原关系模式S是属于1NF的,码为(Sno,Course),非主属性中的成绩完全依赖于码,而其它非主属性对码的函数依赖为部分函数依赖,所以不属于2NF。

消除非主属性对码的函数依赖为部分函数依赖,将关系模式分解成2NF如下:

S1(Sno,Sname,SD,Sdname)、S2(Sno,Course,Grade) (3)将关系模式分解成3NF,并说明为什么? 答: 将上述关系模式分解成3NF如下:

关系模式S1中存在Sno→SD,SD→Sdname,即非主属性Sdname传递依赖于Sno,所以S1不是3NF。进一步分解如下:

S11(Sno,Sname,SD) S12(SD,Sdname)

分解后的关系模式S11、S12满足3NF。

对关系模式S2不存在非主属性对码的传递依赖,故属于3NF。所以,原模式S(Sno,Sname,SD,Sdname,Course,Grade)按如下分解满足3NF。

S11(Sno,Sname,SD) S12(SD,Sdname) S2(Sno,Course,Grade)

2、设有如图所示的学生关系S 学号 100001 200001 200002 300001 300004 300005 学生名 王 婧 张 露 黎明远 王 烨 张 露 潘 建 年龄 18 19 20 21 20 19 性别 女 女 男 男 女 男 系号 1 2 2 3 3 3 系名 通信工程 电子工程 电子工程 计算机 计算机 计算机 试问S是否属于3NF? 为什么?若不是,它属于几范式? 并将其规范化为3NF. 解:S不属于3NF,它属于2NF。 S的候选关键字为“学号”。

依赖关系:学号→系号, 系号→系名,系号 → 学号

所以: 学号→系名,即存在非主属性系名对候选关键字“学号”的传递依赖,S不是3NF.

在S中所有非主属性均依赖于码学号,所以S是2NF。将S分解成: S1(学号,学生名,年龄,性别,系号)、S2(系号,系名),分解后的Sl与S2如图所示:

关系模式S1如下: 学号 100001 200001 200002 300001 300004 学生名 王 婧 张 露 黎明远 王 烨 张 霹 年龄 18 19 20 21 20 性别 女 女 男 男 女 系号 1 2 2 3 3 300005 潘 建 19 男 3 关系模式S2如下: 系号 1 2 3 系名 通信工程 电子工程 计算机 关系模式S1、S2上无传递依赖,它们是3NF。 3.设有如下关系R 课程名 C1 C2 C3 C4 (1) 教师名 马千里 于得水 余快 于得水 教师地址 D1 D1 D2 D1 它为第几范式? 为什么? 解:它是2NF。

因为R的候选关键字为“课程名”。

依赖关系: 课程名→教师名,教师名 → 课程名,教师名→教师地址,所以 课程名→教师地址。即存在非主属性“教师地址”对候选关键字课程名的传递函数,因此R不是3NF。但:因为不存在非主属性对候选关键字的部分函数依赖,所以R是2NF。

(2)是否存在删除操作异常?若存在,则说明是在什么情况下发生的? 解: 存在。当删除某门课程时会删除不该删除的教师的有关信息。 (3)将它分解为高一级范式,分解后的关系是如何解决分解前可能存在的删除操作异常问题?

解: 分解为高一级范式如图所示。 R1如下: R2如下:

课程名 教师名 C1 C2 C3 C4 马千里 于得水 余快 于得水 教师名 教师地址 马千里 D1 于得水 D1 余快 D2 分解后,若删除课程数据时,仅对关系R1操作,教师地址信息在关系R2中仍然保留,不会丢失教师方面的信息。

4.设有如图所示的关系R。

职工号 E1 E2 E3 E4 职工名 ZHAO QIAN SEN L1 年龄 20 25 38 25 性别 F M M F 单位号 单位名 D3 D1 D3 D3 CCC AAA CCC CCC 试问R属于3NF? 为什么?若不是,它属于第几范式? 并如何规范化为3NF? 解:R不属于3NF,它是2NF。

R的候选关键字为职工号和职工名,而:

职工号→单位号,单位号 → 职工号,单位号→单位名.所以,职工号→单位名,即存在非主属性“单位名”对候选关键字职工号的传递函数依赖,所以R不是3NF,规范化后的关系子模式为如下图。

R1如下:

R2如下:

单位名 职工号 职工名 年龄 性别 单位号 位号

D3 CCC E1 ZHAO 20 F D3

D1 AAA E2 QIAN 25 M D1 E3 SEN 38 M D3 E4 L1 25 F D3

5、如下图给出的关系SC为第几范式?是否存在插入、删除异常?若存在,则说明是在什么情况下发生?发生的原因是什么?将它分解为高一级范式,分解后的关系能否解决操作异常问题。

表SC如下: SNO 80152 80153 80154 80154 80155 CNO C1 C2 C1 C3 C4 CTITLE OS DB OS AI CL INAME 王平 高升 王平 杨杨 高升 ILOCA D1 D2 D1 D3 D2 GRADE 70 85 86 72 92 其中:SNO为学号,CNO为课程号,CTITLE为课程名,INAME为教师名,ILOCA为教师地址,GRADE为成绩。

解:SC为1NF。

它存在插入、删除异常操作。当增设一门新课程时,因还没有学生选修,则缺少关键字的一部分SNO而不能执行插入操作;当所有学生退选某门课程而进行删除操作时,会将不法删除的课程信息删除。

SC关系中存在插入和删除操作异常的原因在于,该关系的候选关键字为(SNO,CN0),其中仅有非属性GRADE完全函数依赖于(SNO,CNO),其他非主属性CTITLE、INAME、ILOCA都只函数依赖于CNO,即它们与(SNO,CNO)为部分函数依赖关系。分解后的关系模式如下:

SG 如下: SNO 0152 80153 80154 80154 80155 CNO C1 C2 C1 C3 C4 GRADE 70 85 86 72 95

CI如下: CNO CTITLE INAME ILOCA 分解后的两个关系子模式都为2NF(实际上,SG是3NF,它无传递C1 OS 王平 D1 依赖)。解决了先前的插入、删除

C2 DB 高升 D2 异常操作。当增设一门新课程时,

可将数据插入到CI表中;当所有学

C3 AI 杨杨 D3 生退选某门课程时,只需删除SG表中的有关记录,而该课程的有关信C4 CL 高升 D2 息仍保留在CI表中。

分解2NF后的CI关系中仍存在插入、删除操作异常。若有一个新教师报到,需将其有关数据插入操作;当取消某门课程而删除CI表中的一条记录时,会将不该删除的教师的有关信息删除。CI表中出现操作异常的原因是该关系中存在非主属性对候选关键字的传递函数依赖:

CNO→INAME,INAME →CNO,INAME→ILOCA,所以CNO→ILOCA(函数传递依赖,CI不是3NF)

将CI进一步分解为如下所示的Course和Inst两个关系,可以解决上述操作异常。

COURSE INST

CNO C1 C2 C3 C4

CTITLE OS DB AI CL INAME 王平 高升 杨杨 高升 INAME 王子 高升 杨杨 ILOCA D1 D2 D3