数据库原理与应用教程(第二版)(陈志泊主编)参考答案 下载本文

PDate SMoney );

DATETIME, SMALLMONEY

(2) 掌握书的库存情况,列出当前库存的所有书名、数量、余额(余额=进价*数量,即库存占用的资金)

SELECT BName, BCount, BPrice* BCount AS TOTALCOUNT FROM BookStore

(3) 统计总销售额。

SELECT SUM(SCount * SMoney) AS TOTALMONEY FROM BookSell

(4) 列出每天的销售报表,包括书名、数量和合计金额(每一种书的销售总额)

SELECT BNo, BName , SDate , BCount , SCount * SMoney AS TOTALMONEY FROM BookStore, BookSell

WHERE BookStore. BNo= BookSell. Bno GROUP BY BNo, BName , SDate , BCount

(5) 分析畅销书,即列出当期(从当前起,向前30天)销售数量大于100的书名、数量。

SELECT BName , SCount FROM BookStore, BookSell

WHERE BookStore. BNo= BookSell. BNo AND SCount>100 AND SDate+30<(SELECT MAX(SDate) FROM BookSell)

或:SDate-‘2009-5-1’<30 或: ‘2009-5-30’- SDate <30 或:SDate BETWEEN ‘2009-5-1’ AND ‘2009-5-30’ 说明:日期的表示方法

2009-5-30 20090530 2009/5/30

四、简答题 S(学生信息表) 学号 S# 学生姓名 SN 年龄 AGE 所在系 DEPT SC(选课信息表) 课程号 学号 S# C# 成绩 GR C(课程信息表) 课程号 课程名称 C# CN

(1) 创建S表,S#为主键,SN不能为空。

CREATE TABLE S ( S# CHAR(8) PRIMARY KEY, SN CHAR(8) NOT NULL, AGE INT,

DEPT VARCHAR(20) );

(2) 创建计算机系学生的视图,该视图的属性列由学号、姓名、课程名和任课教师号组成。

CREATE VIEW computer_student(S#, SN, C#,T#) AS

SELECT S.S#, SN,SC.C#,T# FROM S,SC,T

WHERE S.S#= SC.S# AND SC.C#= T.C# AND DEPT=’计算机’

(3) 检索计算机系年龄在20岁以上的学生学号。

SELECT S# FROM S WHERE AGE>20 AND DEPT=’计算机’

(4) 检索姓王的教师所讲课程的课程号和课程名称。

SELECT C.C#,CN FROM C, T

WHERE C.C#= T.C# AND TN LIKE ‘王%’

(5) 检索张三同学所学课程的成绩,列出SN, C#,GR

SELECT SN,C#,GR FROM S,SC

WHERE S.S#= SC.S# AND SN= ’张三’

(6) 检索选修总收入超过1000元的教师所讲课程的学生姓名、课程号和成绩。

SELECT SN,T.C#,GR FROM T,SC,S

WHERE T.C# =SC.C# AND S.S#= SC.S# AND (SAL+COMM)>1000

(7) 检索没有选修C1课程且选修课程数为两门的学生的姓名和平均成绩,并按平均成绩降序排列。

SELECT S.S#,SN,AVG(GR) AS AVGSCORE FROM S,SC WHERE S.S#= SC.S# AND C#<>’C1’

GROUP BY S.S#,SN HAVING COUNT(*)=2 ORDER BY AVG(GR) DESC

(8) 检索选修和张三同学所选课程中任意一门相同的学生姓名,课程名

SELECT SN,CN FROM S,SC,C

WHERE S.S#= SC.S# AND C.C#=SC.C# AND C# IN (SELECT C# FROM S,SC WHERE S.S#= SC.S# AND SN= ’张三’) AND SN<> ’张三’

(9) S1同学选修了C3,将此信息插入SC表中。

或:CN=ANY INSERT INTO SC(S#,C#) VALUES(‘S1’,’C3’) 或 INSERT INTO SC VALUES(‘S1’,’C3’)

(10) 删除S表中没有选修任何课程的学生的记录。

DELETE FROM S WHERE S# NOT IN(SELECT DISTINCT S# FROM SC)

第4章习题参考答案

一、选择题

1. B 2. B 3. D 4. B 5. C 6. D 7. B 8. D 9. C 二、填空题 1. 超键(或超码)

+

10. A

+

2. 正确 完备

4. 平凡的函数依赖 自反性 6. 2NF 3NF BCNF 8. AB BC BD

10. B→C A→D D→C 12. AD 3NF

3. 属性集X的闭包X 函数依赖集F的闭包F 5. {AD→C} φ 7. 无损连接 保持函数依赖 9. B→φ B→B B→C B→BC 11. AB 1NF 三、简答题

7. 设有关系模式R(U,F),其中:

U={A,B,C,D,E},F={A→D,E→D,D→B,BC→D,CD→A } ⑴ 求R的候选码。

(2)根据函数依赖关系,确定关系模式R属于第几范式。 (3)将R分解为3NF,并保持无损连接性。 解:

⑴ 由于(CE)+ =ABCDE,C+ =C,E+ =BDE,?R的候选码是CE。 ⑵ 求出最小依赖集F’={A→D,E→D,D→B,BC→D,CD→A } 将R分解的3NF:?={AD,DE,BD,BCD,ACD}

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

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

职工号→单位号,单位号→职工号,单位号→单位名

所以:职工号 t 单位名,即存在非主属性单位名对候选码职工号的传递函数依赖。 规范化后的关系子模式为关系R1与R2。

R1 职工号 职工名 年龄 性别 单位号 E1 E2 E3 E4

R2 单位号 单位名 D3 D1 CCC AAA ZHAO QIAN SUN LI 20 25 38 25 F M M F D3 D1 D3 D3

第6章习题参考答案

一、选择题

1. B 2. C 3. C 4. A 5. C 6. B 7. C 8. B 9. D 11. D 12. B 13. B 14. D 二、填空题

1. 数据库的结构设计、数据库的行为设计 2. 新奥尔良法

3. 分析和设计阶段、实现和运行阶段 4. 需求分析

5. 概念结构设计

6. 自顶向下、自底向上

7. 属性冲突、命名冲突、结构冲突 8. 逻辑结构设计 三、设计题

1.一个图书管理系统中有如下信息:

图书:书号,书名,数量,位置

借书人:借书证号,姓名,单位

出版社:出版社名,邮编,地址,电话,E-mail

约定:任何人可借多种书,任何一种书可为多个人所借,借书证号具有唯一性。借书和还书时,要登记相应的借书日期和还书日期;一个出版社可以出版多种书籍,同一本书仅为一个出版社所出版,出版社具有唯一性。

根据以上情况,完成如下设计: (1)构造满足需求的E-R图。

(2)将E-R图转换为等价的关系模式。 (3)指出转换后的每个关系模式的关系键。 解:(1)满足上述需求的E-R图如图所示。

借书证号 姓 名 单 位 9. 确定物理结构、评价物理结构 10. 数据库加载 11. 运行和维护 12. 物理 13. 数据字典 14. 需求分析 15. 载入

10. C

借书人 m 借阅 借书日期 出版社名 还书日期 n 出版 E-mail n 图书 1 出版社 电 话

(2-3)转换为等价的关系模式及关系键如下;

书 号 书 名 数 量 位 置 邮 编 地 址 借书人(借书证号,姓名,单位)

图书(书号,书名,数量,位置,出版社名)