数据库原理与应用教程-(第二版)人民邮电出版社习题参考答案 联系客服

发布时间 : 星期一 文章数据库原理与应用教程-(第二版)人民邮电出版社习题参考答案更新完毕开始阅读47edbed628ea81c758f57869

PDate DATETIME, SMoney 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# 课程号 C# 学号 S# 学生姓名 SN 课程名称 CN 课程号 C# 成绩 GR 年龄 AGE 所在系 DEPT C(课程信息表) SC(选课信息表)

(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 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 SC.C# IN (SELECT C# FROM S, SC WHERE S.S#= SC.S# AND SN= ’张三’) AND SN<> ’张三’

或:SC.C#=ANY

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

INSERT INTO SC(S#, C#) 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. 超键(或超码) 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}

17. 设有关系模式R(U, F),其中:U={E, F, G, H},F={E→G, G→E, F→EG, H→EG, FH→E},求F的最小函数依赖集。 解:

(1)将F中每个函数依赖的右部均变成单属性,可得:

{E→G, G→E, F→E, F→G, H→E, H→G, FH→E}

(2)去掉F中各函数依赖左部多余的属性。对于FH→E,有2种情况:

①由于F+=(FEG),因此H是多余的属性,FH→E可简化为F→E,可得:

{E→G, G→E, F→E, F→G, H→E, H→G, F→E} ②由于H+=(HEG),因此F是多余的属性,FH→E可简化为H→E,可得:

{E→G, G→E, F→E, F→G, H→E, H→G, H→E}

(3)去掉F中冗余的函数依赖:

首先将第(2)步的结果中重复的函数依赖去掉,对于第(2)步的情况①和情况②,都可得:

{E→G, G→E, F→E, F→G, H→E, H→G}

然后分4种情况处理: ①由于F→E可由F→G和G→E推出,因此F→E可去掉;由于H→E可由H→G和G→E推出,因此H→E可去掉。因此:

Fmin1={E→G, G→E, F→G, H→G}

②由于F→G可由F→E和E→G推出,因此F→G可去掉;由于H→G可由H→E和E→G推出,因此H→G可去掉。因此:

Fmin2={E→G, G→E, F→E, H→E}

10. A

2. 正确 完备

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

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