1、数据库应用程序设计实践任 务 书东北大学软件学院2013 年 3 月程序实践(四)任务书2一 课程基本信息 1二 教学目的和基本要求 1三 课程设计的内容和安排 1四 课程设计的题目 1五 考核的方法和成绩的评定 2六 时间的安排 2七 课程设计结果的提交 3八 课程设计报告的格式(见附页) 4九 课程设计题目说明 4附页 1一 课程基本信息1. 课程设计名称:数据库应用程序设计实践2. 课程设计编号:3. 课程设计学分:2 学分4. 课程设计周数(学时):3 周(32 学时)5. 课程设计授课单位:软件工程研究所6. 指导方式:集体辅导和个别辅导相结合7. 适用专业:软件工程(高起本、13)
2、8. 课程设计教材及主要参考资料:1数据库设计、应用开发与管理 ,Michael V. Mannino 等著,电子工业出版社,2005.12 http:/ 教学目的和基本要求1. 加深对数据库系统、程序设计语言的理论知识的理解和应用水平。2. 通过完成具有实际意义的 Web 数据库练习,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力。3. 提高综合运用所学的理论知识和方法,独立分析和解决问题的能力。三 课程设计的内容和安排1. 安装并运行数据库;2. 完成关于关系数据库基础知识的题目 1;3. 运行给定的 SQL 语句,生成图书馆管理系统的数据库,编写相应的 S
3、QL 语句,完成题目 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. 撰写课程设计报告:总结和提升上述过程和步骤,写出
4、结构严谨、表述清楚、符合设计规范的报告。四 课程设计的题目本课程实践要求完成一个电子商务项目(Web DB 应用) ,其中包括 10 个具有实际意义的数据库练习,包括了数据库系统应用中的各个方面的知识。此外附件 A、B 还包括一个实际的图书馆项目,可根据实际情况选做。程序实践(四)任务书2五 考核的方法和成绩的评定考核成绩分为两个部分:1. 验收部分:占 60%。按照以下几个指标进行验收验收时是否能够快速完成老师指定的练习题目回答问题的思路是否清晰内容设计的是否规范、合理内容设计的创新性2. 实验报告(40%)实验报告结构是否清晰,问题叙述是否具有逻辑性Web 数据库应用程序设计的正确性六 时
5、间的安排共 3 周(见教学办安排) 。每个同学可以根据自身实际情况掌握进度,做完整个项目即可验收,最晚到实践课的最后一天。七 课程设计结果的提交1. 课程设计报告(一份、A4 纸打印,同时包括一份电子文档)2. 答辩报告(制作 PPT 报告,电子方式提交) ,要求重点突出,思路清晰,同时就此报告准备答辩。所有电子方式提交的文件全部存放在一个目录中,并对其进行压缩,压缩后的文件按规定格式进行命名,命名格式为:班级号学号姓名。八 课程设计报告的格式(见附页)1. 按各个题目的要求书写相关文档;2. 参考文献。九 课程设计题目说明见文件夹-“程序实践四资料 ”此文件夹内共有十个练习文件夹(练习 1-
6、练习 10 内均为超文本文件,索引文件为 “练习.html” )另有附件 A、B、C,其中附件 C 为前十个练习的参考项目资料,附件 A 和 B 为可选做项目的参考资料。9.1 关系数据库设计以下两个表:程序实践(四)任务书3BOOK: Primary Author Title ISBN PublisherID Edition Date of Publication Price Book Description PUBLISHER: PublisherID Name Address 第一部分:1指出你所设计表的各种键值,在选择时不要考虑性能问题。1) 指出每张表是否存在主码,若存在,请指出具体
7、的主码,并说明原因。2) 指出每张表是否存在备用码(除了主码之外的所有候选码) ,若存在,请指出所有的备用码,并说明原因。3) 指出各表中存在的外码和完整性约束,并说明原因。2 列出各表所有列和各列的域(数据类型和格式) ,并说明理由。第二部分:写出如下 SQL 语句:1 用 DDL 语言中的 CREATE TABLE 语句创建以上两张表,并确定指定了表的主码和备用码;2 利用 INSERT 语句向每张表中以上四条记录;3 写 SQL 语句检索两个出版人之一(比如说是 Addison Wesley 和 McGraw Hill)所出版书籍的标题和价格,列出你所用到的所有选择、投影和连接操作,并说
8、明各个操作在查询中的作用;4 写 SQL 语句,检索特定书名(比如说是”Fundamentals of Database Systems”)的出版人。第三部分:1 已知关系表 r 和 s 如下:表 r A B Ca b cd a fc b d表 s D E Fb g ad a f给出差运算 r-s 和 s-r 的结果;2 描述下面查询的结果,如果将 UNION 用 EXCEPT 替代,又会有什么样的查询结果?( SELECT MemNoFROM MEMBER, BOOKWHERE MemNo = BorrowerMemNo ANDCallNumber = QA76.9.D26C66)UNION
9、程序实践(四)任务书4( SELECT MemNoFROM MEMBER, BOOKWHERE MemNo = BorrowerMemNo ANDCallNumber = QA76.9.D7E53);9.2 SQL运行给定的 SQL 语句生成一个图书馆数据库。注意 Book 表中的每一条记录代表一本具体的书,因此,如果图书馆中有三本名为“DBMS“的书,Book 表中将有三条相关记录,每条代表一本书。请写出针对以下问题的 SQL 语句(每一问必需用一条 SQL 语句实现,但该 SQL 语句可以包含子查询) 。1. 列出作者为“Churchill“的所有书籍的名称和出版年份;2. 检索 firs
10、t name 为“John“ 或“Susan“ 的借阅者所借阅所有图书的标题;3. 列出同时借阅“Iliad“ 和“Odyssey“这两本书的所有借阅者的 names 和 IDs;4. 列出借阅了 Collins 所写的所有图书的读者的 names 和 IDs,假设一位读者可以同时借阅一本书的多个复本;5. 查找借阅了 last name 为“Tanenbaum“ 的作者所著作的任一本书籍的所有读者的电话号码;6. 查找借阅了三本书以上的读者,并列出他们的 names、IDs 以及所借阅图书的数量,查询结果按所借阅图书的数量降序排列;7. 列出没有借阅图书的所有读者;8. 按字母顺序列出是 P
11、ittsburgh 居民(电话号码以 412 开头)并没有借阅图书 “Pitt Roads“的所有读者的 first names。9.3 Advanced SQL在该练习中,我们使用一个图书馆数据库。它包含了图书馆藏书信息,读者信息,图书借阅次数,图书供应商信息,以及与供应商所签订的订单信息。为了区分其它练习中的数据库表名,该练习中所有数据库表名称都以字母4结束。注意:ReceivedDate 列指的是订单录入系统(即保存到数据库中)的日期,而不是消费者接收到其所订购书籍的日期。TITLE4(Name, ISBN, CallNumber, Year, AuthorFName, AuthorLN
12、ame);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)
13、SUPPLIER4(Supplier_Id, Name, Address);PK(Supplier_Id)READ_BY4(CallNumber, LibId, TimesRead);PK(CallNumber, LibId)程序实践(四)任务书5FK(CallNumber) - TITLE4(CallNumber)FK(LibId) - MEMBER4(LibId)ORDERED4(CallNumber, PoNum, Supplier_Id);PK(CallNumber, PoNum, Supplier_Id)FK(CallNumber) - TITLE4(CallNumber)FK(Po
14、Num) - 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 中的
15、ISBN 和 Name 字段设置成备用码,而且它们不能取空值;3) 在所有表中添加指定的外码约束;4) 在表 MEMBER4 中添加“Join_date“ 和 “Gender“两列;5) 指定表 READ_BY4 中“TimesRead“列不能取负值。4根据给定的 INSERT 语句填充数据库;5编写 SQL 语句实现如下功能:1) 显示 ID 以字母“A%B“ 或 “APK (SSN)AK (DriverLicenseNo)FK (DeptNo) - Dept(DNo)最后,针对你最终得到的关系模式,给出相应的 CREATE TABLE 语句。在 CREATE TABLE 语句中要添加完整性约束:码、关联等。并运行你的 SQL 语句产生该关系模式。9.7 Programming with Transactions 9.8 Index Choice and Query Optimization附页数据库应用程序设计实践总结报告专 业 班 级 学 号 姓 名 日 期 东北大学软件学院1关系数据库2SQL3Advanced SQLn. 参考文献例:1 萨师煊,王珊.数据库系统概论(第三版)M. 北京: 高等教育出版社,2002,122-150.2 侯捷.Java 编程思想M. 北京: 机械工业出版社,2002,22-35.