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)转换为等价的关系模式及关系键如下;
书 号 书 名 数 量 位 置 邮 编 地 址 借书人(借书证号,姓名,单位)
图书(书号,书名,数量,位置,出版社名)