-
数据库实验报告 - 东北大学软件学院程序实践(四)
资源介绍
程 序 实 践 (四)
总结报告
专 业
班 级
学 号
姓 名
日 期
东北大学软件学院
一 课程基本信息 1
二 教学目的和基本要求 1
三 课程设计的内容和安排 1
四 课程设计的题目 1
五 考核的方法和成绩的评定 2
六 时间的安排 2
七 课程设计结果的提交 3
八 课程设计报告的格式(见附页) 4
九 课程设计题目说明 4
附页 1
一 课程基本信息
1.课程设计名称:程序实践(四)
2.课程设计编号:
3.课程设计学分:2学分
4.课程设计周数(学时):3周(32学时)
5.课程设计授课单位:软件工程研究所
6.指导方式:集体辅导和个别辅导相结合
7.适用专业:软件工程(高起本、1+3)
8.课程设计教材及主要参考资料:
[1]《数据库设计、应用开发与管理》,Michael V. Mannino等著,电子工业出版社,2005.1
[2] http://www.icarnegie.com/
二 教学目的和基本要求
1.加深对数据库系统、程序设计语言的理论知识的理解和应用水平。
2.通过完成具有实际意义的Web数据库练习,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力。
3.提高综合运用所学的理论知识和方法,独立分析和解决问题的能力。
三 课程设计的内容和安排
1.安装并运行数据库;
2.完成关于关系数据库基础知识的题目1;
3.运行给定的SQL语句,生成图书馆管理系统的数据库,编写相应的SQL语句,完成题目2中要求的内容;
4.运行给定的SQL语句,生成图书馆管理系统的数据库,编写高级的SQL语句,完成题目3中要求的内容;
5.完成Web 数据库程序设计题目4(选做)
6.阅读附录中的电子商务系统,给出该电子商务系统的E-R模型;
7.完成关于规范化内容的题目6;
8.对于第6步中自己设计的E-R模型,将其转换为关系数据模型;
9.完成关于事务编程方面的题目8,9;
10.完成索引建立和查询优化方面的题目10;
11.完成整个的电子商务项目;(选做)
12.完成网上书店项目;(选做)
13.撰写课程设计报告:总结和提升上述过程和步骤,写出结构严谨、表述清楚、符合设计规范的报告。
四 课程设计的题目
本课程实践要求完成一个电子商务项目(Web DB应用),其中包括10个具有实际意义的数据库练习,包括了数据库系统应用中的各个方面的知识。此外附件A、B还包括一个实际的图书馆项目,可根据实际情况选做。
五 考核的方法和成绩的评定
考核成绩分为两个部分:
1.验收部分:占60%。
按照以下几个指标进行验收
验收时是否能够快速完成老师指定的练习题目
回答问题的思路是否清晰
内容设计的是否规范、合理
内容设计的创新性
2.实验报告(40%)
实验报告结构是否清晰,问题叙述是否具有逻辑性
Web数据库应用程序设计的正确性
六 时间的安排
共3周(见教学办安排)。每个同学可以根据自身实际情况掌握进度,做完整个项目即可验收,最晚到实践课的最后一天。
七 课程设计结果的提交
1.课程设计报告(一份、A4纸打印,同时包括一份电子文档)
2.答辩报告(制作PPT报告,电子方式提交),要求重点突出,思路清晰,同时就此报告准备答辩。
所有电子方式提交的文件全部存放在一个目录中,并对其进行压缩,压缩后的文件按规定格式进行命名,命名格式为:班级号+学号+姓名。
八 课程设计报告的格式(见附页)
1.按各个题目的要求书写相关文档;
2.参考文献。
九 课程设计题目说明
见文件夹--------“程序实践四资料”
此文件夹内共有十个练习文件夹(练习1----练习10内均为超文本文件,索引文件为 “练习N.html”)
另有附件A、B、C,其中附件C为前十个练习的参考项目资料,附件A和B为可选做项目的参考资料。
9.1 关系数据库
设计以下两个表:
BOOK:
Primary Author
Title
ISBN
PublisherID
Edition
Date of Publication
Price
Book Description
PUBLISHER:
PublisherID
Name
Address
第一部分:
1.指出你所设计表的各种键值,在选择时不要考虑性能问题。
1)指出每张表是否存在主码,若存在,请指出具体的主码,并说明原因。
BOOK:ISBN,PUBLISHER:Publisher_Id
2)指出每张表是否存在备用码(除了主码之外的所有候选码),若存在,请指出所有的备用码,并说明原因。
BOOK:ISBN,(Primary_Author,Title,Edtion),(PublisherID,Title,Edtion)
Publisher:PublisherID,(Name,Address)
3)指出各表中存在的外码和完整性约束,并说明原因。
Foreign key(PublisherID) refrences Publisher(PublisherID)
2.列出各表所有列和各列的域(数据类型和格式),并说明理由。
BOOK:
Primary Author varchar(50)
Title Author varchar(50)
ISBN Author varchar(30)
PublisherID Author varchar(20)
Edition int(2)
Date of Publication date
Price decimal(6,2)
Book Description text
PUBLISHER:
PublisherID varchar(20)
Name varchar(20)
Address varchar(20)
第二部分:
写出如下SQL语句:
1.用DDL语言中的CREATE TABLE语句创建以上两张表,并确定指定了表的主码和备用码;
2.利用INSERT语句向每张表中以上四条记录;
3.写SQL语句检索两个出版人之一(比如说是Addison Wesley和McGraw Hill)所出版书籍的标题和价格,列出你所用到的所有选择、投影和连接操作,并说明各个操作在查询中的作用;
4.写SQL语句,检索特定书名(比如说是”Fundamentals of Database Systems”)的出版人。
第三部分:
1. 已知关系表r和s如下:
表 r
A B C
a b c
d a f
c b d
表 s
D E F
b g a
d a f
给出差运算r-s和s-r的结果;
r-s=
表 r
A B C
a b c
c b d
S-r=
表 s
D E F
b g a
2. 描述下面查询的结果,如果将UNION用EXCEPT替代,又会有什么样的查询结果?
( SELECT MemNo
FROM MEMBER, BOOK
WHERE MemNo = BorrowerMemNo AND
CallNumber = 'QA76.9.D26C66'
)
UNION
( SELECT MemNo
FROM MEMBER, BOOK
WHERE MemNo = BorrowerMemNo AND
CallNumber = 'QA76.9.D7E53'
);
9.2 SQL
运行给定的SQL语句生成一个图书馆数据库。注意Book表中的每一条记录代表一本具体的书,因此,如果图书馆中有三本名为"DBMS"的书,Book表中将有三条相关记录,每条代表一本书。请写出针对以下问题的SQL语句(每一问必需用一条SQL语句实现,但该SQL语句可以包含子查询)。
1.列出作者为"Churchill"的所有书籍的名称和出版年份;
2.检索first name为"John" 或"Susan" 的借阅者所借阅所有图书的标题;
3.列出同时借阅"Iliad" 和"Odyssey"这两本书的所有借阅者的names和IDs;
4.列出借阅了Collins所写的所有图书的读者的names和IDs ,假设一位读者可以同时借阅一本书的多个复本;
5.查找借阅了last name为"Tanenbaum"的作者所著作的任一本书籍的所有读者的电话号码;
6.查找借阅了三本书以上的读者,并列出他们的names、IDs以及所借阅图书的数量,查询结果按所借阅图书的数量降序排列;
7.列出没有借阅图书的所有读者;
8.按字母顺序列出是Pittsburgh居民(电话号码以412开头)并没有借阅图书"Pitt Roads"的所有读者的first names。
9.3 Advanced SQL
在该练习中,我们使用一个图书馆数据库。它包含了图书馆藏书信息,读者信息,图书借阅次数,图书供应商信息,以及与供应商所签订的订单信息。为了区分其它练习中的数据库表名,该练习中所有数据库表名称都以字母'4'结束。
注意:ReceivedDate列指的是订单录入系统(即保存到数据库中)的日期,而不是消费者接收到其所订购书籍的日期。
TITLE4(Name, ISBN, CallNumber, Year, AuthorFName, AuthorLName);
PK(CallNumber)
MEMBER4(LibId, Fname, Lname, Address, PhoneNumber);
PK(LibId)
BOOK4(Book_Id, Edition, Status, BorrowerId, BorrowerDueDate, CallNumber);
PK(Book_Id)
FK(BorrowerId) -> MEMBER4(LibId)
FK(CallNumber) -> TITLE4(CallNumber)
PURCHASE_ORDER4(PoNum, Qty, OrderDate, DueDate, ReceivedDate);
PK(PoNum)
SUPPLIER4(Supplier_Id, Name, Address);
PK(Supplier_Id)
READ_BY4(CallNumber, LibId, TimesRead);
PK(CallNumber, LibId)
FK(CallNumber) -> TITLE4(CallNumber)
FK(LibId) -> MEMBER4(LibId)
ORDERED4(CallNumber, PoNum, Supplier_Id);
PK(CallNumber, PoNum, Supplier_Id)
FK(CallNumber) -> TITLE4(CallNumber)
FK(PoNum) -> PURCHASE_ORDER4(PoNum)
FK(Supplier_Id) -> SUPPLIER4(Supplier_Id)
利用给出的CREATE TABLE和INSERT语句创建一个数据库。为了不和现有的表冲突,我们需要建立一个空的数据库来运行这些DDL语句。
1.运行CREATE TABLE和INSERT语句;
2.编写并运行SQL语句,删除所有表中的记录;
3.编写并运行SQL语句,按照以下方式来修改数据库:
1)创建上面列出的还未创建的数据库表,当设定表中各列的类型和长度时,需要考虑给定的用于填充数据的INSERT语句;
2)将表TITLE4中的ISBN和Name字段设置成备用码,而且它们不能取空值;
3)在所有表中添加指定的外码约束;
4)在表MEMBER4中添加"Join_date" 和 "Gender"两列;
5)指定表READ_BY4中"TimesRead"列不能取负值。
4.根据给定的INSERT语句填充数据库;
5.编写SQL语句实现如下功能:
1)显示ID以字母"A%B" 或 "A&B"开头,并且加入图书馆不晚于Nov. 30, 1997的所有读者的ID, first name和joining date;
2)显示满足如下条件所以书籍的name, ISBN和call number,这些书籍由两个以上的供应商提供,并且订购的数量大于10,显示时按书籍的总订购数量非升序排列;
3)显示所有借阅图书的数量少于图书馆总藏书5%的读者的IDs和first names,结果按借阅图书数量非降序进行排列;
4)按字母顺序列出所有至少读一本书两次的女读者的first names和IDs;
5)列出满足如下条件的供应商的names和他们各自的订单平均订购书籍数量,要求他们的订单平均订购书籍数量大于系统中所有订单的平均订购书籍数量;
6)按字母顺序列出满足如下要求的所有图书馆中男读者的first names和IDs,要求他们在Oct. 10, 1995之前加入图书馆,并且仅读了五本或更少的不同的图书,对于同一本图书,他们曾没有读过多遍。
- 上一篇: 页面置换算法的模拟实现及命中率对比
- 下一篇: Java操作系统磁盘调度算法