数据库《图书管理系统》综合实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

华北科技学院计算机系综合性实验实验报告课程名称《数据库系统A》实验学期2011至2012学年第2学期学生所在系部计算机学院年级2010专业班级网络B10-3班学生姓名安志欣学号200907024320任课教师郭红实验成绩计算机系制华北科技学院计算机系综合性实验报告2《数据库系统B》课程综合性实验报告开课实验室:软件开发实验室(一)2014年5月日实验题目《图书管理系统》数据库设计一、实验目的利用一种DBMS作为设计平台,理解并应用课程中关于数据库设计的相关理论,能按照数据库设计步骤完成完整的数据库设计,包括需求分析、概念设计、逻辑设计、物理设计和实施。同时能够正确应用各个阶段的典型工具进行表示。二、设备与环境(1)硬件设备:PC机一台(2)软件环境:安装Windows操作系统,安装数据库管理系统SQLServer2008等。三、实验内容1.需求分析图书管理系统应包括图书管理,读者管理,图书借阅与归还,统计图书的相关信息,查询等功能,同时还应包括暂停某些读者的借阅权。图书管理应对图书的馆藏数量,位置,查询,最初入库时间等内容进行管理。在读者管理中将读者分为老师与学生,不同类型的读者所具有的借阅权限不同。读者只可以对自己的借书记录进行查询。图书借阅应包括图书的借阅日期,应还日期,续借等内容进行管理。图书归还应对图书的条码,借阅者,归还日期等记录。通过存储过程查询书的借阅情况。每个读者可以借多本书,每本书可以被多个读者借阅。每个管理员需要管理多本书。图书管理员可以对图书的信息和读者的信息进行查询,可以对图书借阅,图书归还,图书罚款进行查看,插入;只有数据库管理员可以对图书信息,读书信息等其他数据进行更改。2.概念结构设计h1mnmn页码图书编号书名类型作者出版社价格书架名称入库时间借出次数库存总量现存量借阅老师图书管理员管理借阅学生华北科技学院计算机系综合性实验报告33.逻辑结构设计(1)关系模式的设计与优化关系模式:学生(编号,姓名,性别,学号,联系方式,班级,图书借阅次数)老师(编号,姓名,性别,教师号,联系方式,系部,图书借阅次数)图书(编号,书名,书架名称,类型,入库时间,作者,借出次数,出版社,价格,页码,库存总量,现存量,管理员编号)管理员(编号,姓名,性别,联系方式)学生借阅表(图书编号,学生编号,借阅时间,应还时间,续借次数)老师借阅表(图书编号,老师编号,借阅时间,应还时间,续借次数)在这个数据库中,各个实体所具有的属性较多,会对数据库造成插入,删除,修改等异常现象,借阅图书编号读者编号借阅时间应还时间续借次数管理员编号姓名性别联系方式学生/老师读者编号姓名性别学号/教师号联系方式图书借阅次数系部/班级管理管理员编号图书编号号华北科技学院计算机系综合性实验报告4同时图书馆的图书没一种有多本库存,但每一本的条码不相同,因此对关系模式进行转换。由于学生与老师的借阅表中所包含的属性相同,因此将两者的借阅表合并。经分解后,共创建了7个关系模式:读者信息(读者编号,姓名,性别,证件号,联系方式,注册时间,借阅次数,属系)管理员(管理员编号,姓名,性别,联系方式)图书罚款(图书条码,借阅者,罚款时间,罚款金额,罚款号)图书归还(图书条码,借阅者,归还时间,续借次数,归还号)图书基本信息(图书编号,书名,类型,作者,出版社,价格,页码,现存量,库存量)图书借阅(图书条码,借阅者,借阅时间,应还时间,续借次数,借阅号)图书信息(图书条码,图书编号,书名,书架名,入库时间,管理员)分解后读者信息表中由于读者编号与证件号均是候选码,因此此关系中存在传递函数依赖,为2NF。在管理员中,只有管理员编号是候选码因此为BCNF;同理在其他关系模式中,均只有一个候选码,且不是由其他非主属性确定的,因此为BCNF。(2)设计合适的视图对于图书管理系统,读者应具备对图书的查看权限,因此将图书信息,图书基本信息的查询权限授予全部用户;同时,每个读者应只能对自己的借书信息,个人基本信息,还书信息进行查询,因此创建视图duzhexinxi,jieshuxinxi,guihuanxinxi,并将权限授予所有用户。4.物理设计在构建关系时,对每个关系都设计了主键,因此系统对每个主键建有索引。为了使读者方便对自己的信息进行查询,在各关系中在每个读者编号也建有索引。5.数据库的实现(1)创建库、表图书借阅:其中jieyuehao设置为主键,tiaoma与dm均为外码,分别参照图书信息和读者信息中的数据。Xujiancishu建立用户自定义完整性,只能取“0”或“1”。其他表的创建类似。(2)创建用户数据库分别创建了读者类型的用户和只能对数据库内的内容进行查询和插入的普通管理员类型的用户,同时创建了可以对数据库中的数据进行更改的用户。创建了一个角色guanliyuan,方便对普通管理员进行授权。读者类型的用户:岳阳,唐敏,吕竞男,卓木,方新,莫金,亚拉普通管理员:张三,李四可做更改的用户:王五在用户方面,数据库为每个读者创建一个用户名,同时创建唯一的登录名。(3)数据库创建了4个触发器,即t1,t2,t3,t4,两个存储过程p1,p2:t1在对图书归还进行插入时被触发,用于在图书归还表中记录归还图书的信息。t2在对图书进行借阅时触发,用于在进行借书时,查看是否已经超过借书的范围,若没有超出,则可继续借阅,同时对读者的借书信息进行修改;若超出,则不能借阅。当可以借阅时,用t3对图书的馆藏信息进行修改。当归还图书时,t4将对读者信息中的借阅次数进行更改。该数据库创建的存储过程p1,用于实现对指定读者的借阅信息的查询。TiaomaIntDmIntJieyueshijianVarcharYinghuanshijianVarcharXujiecishuIntJieyuehaoInt华北科技学院计算机系综合性实验报告5p2用于实现对指定图书的借阅情况的查询。以下以读者信息表的变化为例显示程序运行后的状态:借阅执行前的读者信息状态:借阅执行后的读者信息状态:图书归还后的读者信息状态:华北科技学院计算机系综合性实验报告6创建存储过程后,对dm为1003的读者的借阅信息进行查询后的结果:四、实验结果及分析数据库创建后,对其性能进行测试。对图书借阅表进行更改,执行语句后,触发器t2首先工作,看读者是否还具有借阅权限,当有借阅权限时对读者信息进行更改,将读者的借阅次数加1,以此来实现对读者以后借书数量的限制。;t3工作,对图书基本信息中的数据进行修改。当读者归还图书时,t1工作,删除图书借阅表中的图书信息,图书的库存量相应增加,t4工作,使读者的借书次数减1,使读者可以以后继续借书。用存储过程p1,实现读者对借书信息的查询。输入语句,并对语句执行后,显示出所输入编号对应读者的借阅信息;p2用于查询每本图书的借阅情况。相对来说,这个数据库的功能还有很大的改进空间,比如安全性方面的问题,读者不能对自己的登录密码进行更改,当有人知道某个读者的编号后,就可以对读者的信息查询,这些都使这个数据库不够完美。但,这个数据库可以使读者对自己的借书信息,归还信息,个人信息进行查询,在对图书借阅的时候,自动对读者,图书馆藏信息进行更改,在归还图书时,可以对读者和馆藏信息更改,从而减少了图书管理员的操作内容,避免了由于人员输入出错导致数据不能操作的现象。用存储过程减少了临时对语句输入所耗费的时间,提高了系统的操作效率。体会:华北科技学院计算机系综合性实验报告7对于这次综合实验的设计,最开始没有担心太多事情,因为时间给的很多,而且对于图书馆的一些管理内容的东西有比较多的经历,所以最开始就只是先对图书管理的需求进行了下简单的分析,同时进入学校的图书馆管理系统体会已经设计好的数据库系统所应包含的功能与信息。然后对分析的结果设计了简单的E-R图,这些事情在参考已有数据库的情况下,没有耗费太多时间。之后建立了与E-R图相对应的关系模式,并进行了优化。同时思考对物理设计应做的准备工作。在实验的第二周里,开始着手数据库和表的创建。根据最初设计的表的属性进行创建。应该是由于考虑不够全面,最开始将图书基本信息的表和图书信息的表放到了一个表里面,在输入数据时发现图书馆对于以种图书部会只馆藏一本,应该将馆藏图书的信息和每本图书的信息分开建表。在创建主码时也遇到了问题,最开始我将图书借阅和图书归还的主码设置为书的条码和读者编号,这样就造成了每个读者对同一本图书只能接一次的现象,后来我为这两个表添加了一个属性,借阅号或归还号,我没有用(条码+读者编号+借阅时间)这个组合做为主属性,这样避免了同一个读者在同一天借阅同一本书而不能借阅的现象。对于触发器的设计,一个是因为平时练习都是很简单的语句,一个应该是触发器所涉及的表比较多,因此在创建触发器的时候真的感到整个实验的精华比分应该算是触发器了。经过触发器的创建过程,我发现学习程序设计语言相对来说是个挺简单的过程,将一种语言学好后,其他语言可以类比着进行学习,比如tranzact-SQL语言中的语句,使用begin和end来标示语句的开始于结束,相当于C语言中的花括号的作用;例如当一个if语句中包含多天语句时,可以在if后加上begin和end,表示这些语句是if的子句。对于程序设计,比较难的应该是解决问题的方法的设计,同时要用哪些语句将这个方法表示出来,是否是比较优化的表示方法,这些都是应该考虑的问题。这次实验使我对视图的作用有了更深刻的体会。对于每个人只能查询个人的信息这一要求,运用视图要比运用存储过程的安全性更高。当读者登陆服务器后,他只能对自己有的权限范围内的内容进行查询,但对于存储过程,当一个读者知道另一个读者的姓名时,就能对读者信息进行查询,这样破坏了数据库的安全性,相比较而言,只有在知道了读者的登录号和密码后才能对读者信息进行查询的视图,其安全性高于存储过程。在学习时对于存储过程的了解很少,但经过这次实验,我体会到,存储过程是个很方便的程序语句,将语句创建好,存储起来,在需要执行某项操作时,直接调用,节省了每次执行都要写语句的步骤,同时方便不了解transact-SQL语句的人员对信息的查询,这一点存储过程要由于视图。在运用软件时,要根据具体软件的不同对程序的语句进行调整,不能照搬书本上的。例如对于角色的授权,书本上的语句就不适合server2008的环境。再如创建视图时,如果想显示表中的所有列,在SQLserver2008的环境中不能使用”*”代替所有属性,应将所有属性一一列出来。对于学习,最好的检测方法就是应用,在应用的时候会发现有很多在学习时没有想过的问题,比如创建表时,由于存在参照性约束,应将没有外码的表创建出来,然后创建有外码的表,虽然这些是显而易见的问题,但没有亲身经历,对于这个认识就不会有很深的体会,这也使我发现自己的思想深度不够成熟,在以后应注意加强。华北科技学院计算机系综合性实验报告8教师评价评定项目ABCD评定项目ABCD需求分析清楚完整性设计概念结构符合需求数据库编程的使用逻辑结构设计合理操作熟练索引设计文字流畅安全性设计报告规范其他:评价教师签名:年月日

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功