图书管理系统数据库设计.doc_第1页
图书管理系统数据库设计.doc_第2页
图书管理系统数据库设计.doc_第3页
图书管理系统数据库设计.doc_第4页
图书管理系统数据库设计.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

成都信息工程大学 图书管理数据库系统设计图书管理数据系统啊电子商务2班第二组前言尊敬的 XX 老师,这是2010级电子商务2班第二组(以下简称“我们”)的数据库作业。经过一学期的学习,我们对这门课程有了深刻的认识。此次数据库系统设计正是检验我们学习成果之际。我组成员团结协作、认真分析查阅相关资料,完成了这个作业。因时间仓促、水平有限,错误甚多,还请老师斧正。我组成员向老师致敬。组构成与信息组别:2组长:陈建(2010211079)组员:孙仁秀(2010211047)、何明昊(2010211076)、陈建、程茜(2010211048)(按姓氏降序排列)任务分工(我组分工明确、平均)数据库设计:程茜(概念设计)、孙仁秀(关系表设计)函数与存储过程:陈建数据库备份、事务:何明昊上机数据库创建、word总体编辑:程茜演示数据录入、演示截图:孙仁秀目录封面1前言2目录3一、需求分析:4二、业务流程:5三、数据库设计51.数据库概念结构设计52.数据库逻辑设计6四、创建用户自定义函数和存储过程81.根据书号或出版社查找图书信息82.根据借书证号查询借阅者信息83.根据书号和借书证号创建借阅记录9五、创建事务9六、数据库备份10七、实践操作10八、我们的体会12一、 需求分析:在信息时代,图书馆已成为全社会的一个重要的公共信息资源,面对成千上万的图书和众多的借阅者,妥善的管理图书和借阅者的资料是及其重要的,借助计算机信息系统可大大减轻工作强度,提高工作效率。图书管理系统是为了满足图书馆管理图书的工作而设计的,应具有以下功能:1. 基本信息录入a) 图书信息管理:记录图书基本信息,包括书号、书名、作者、出版社、出版日期、入库时间、价格、库存量b) 借阅者信息管理:记录借阅者基本信息,包括借书证号、姓名、性别、联系电话、可借数量c) 出版社信息管理:包括出版社编号、出版社名称、联系电话、地址2. 借阅管理借书管理:记录借书信息,包括借书证号、书号、借阅时间、应还日期、归还时间、借阅状态3. 查询统计a) 查询图书信息,以书名或出版社或作者作为条件,支持模糊查询,并可打印输出报表b) 查询借阅者借/还书信息,可打印二、 业务流程:书籍建档出版社资料管理借阅者信息管理借书还书图 2-1 数据库应用流程三、 数据库设计1. 数据库概念结构设计借阅信息应还时间借书证号借阅状态归还时间借阅时间书号属于出版社出版社编号出版社名称联系电话出版社地址出版社其他出版日期库存价格出版社作者入库时间书名书号图书借阅者借书证号姓名性别联系电话可借数量借阅信息图 3-1 各个实体E-R图及其联系到关系模型的转化注:由于排版不便,将借阅信息独立出来。实体的关系模型:图书(书号,价格,书名,入库时间,库存,出版社,作者,出版日期)借阅者(借书证号,姓名,联系电话,性别,可借数量)出版社(出版社编号,联系电话,出版社地址,出版社名称)其中下划线标注的属性表示关键字。1:n关系到关系模型的转化该数据库中的1:n关系是“图书”与“出版社”,一本图书只能对应一个出版社,一个出版社可以有多本图书。因此我们将图书的出版社属性作为外部关键字,以确定该图书对应的出版社信息。m:n联系到关系模型的转化该数据库中,“借阅者”和“图书”通过“借阅信息”联系起来。“借阅信息”分别用两个实体的关键字作为外部关键字。借阅状态指明了借阅者是否归还此书。借阅信息(借书证号,书号,借阅时间,借阅状态,归还时间,应还时间)2. 数据库逻辑设计现在需要将书面的数据库概念模型转化为SQL Server 2000所支持的数据模型。下面给出转化后“表”。表3-1 bookinfo 图书信息表列名数据类型约束说明书号Varchar(20)不能为空主键价格Money0无书名Varchar(50)不能为空无入库时间Datetime默认当前值库存Int=0无出版社Int外键Pubs作者Varchar(10)默认佚名出版日期Datetime不能为空无注:出版社属性指的是出版社编号,由我们自行编。当新书入库时,如果出版社(Pubs)表中无此出版社信息,应先将其添加子出版社表。表3-2 borrowerinfo 借阅者信息表列名数据类型约束说明借书证号Varchar(10)长度为10主键姓名Varchar(10)不能为空无联系电话Varchar(11)长度为11无可借数量Tinylint默认10性别Char(2)男,女无注:可借数量依据成都信息工程大学所用的系统,本科生最大可借数量为10本,表示只能同时借10本书,在本系统中,可借数量将根据借阅信息表的借阅状态来增减。表 3-3 pubs 出版社信息表列名数据类型约束说明编号Int长度为5主键联系电话Varchar(15)不能为空无出版社地址Varchar(50)不能为空无出版社名称Varchar(30)不能为空无注:该表主要是给采购人员用的,借阅者并不很关心图书的出版社信息。表3-3 lendinfo 借阅信息表列名数据类型约束说明借书证号Varchar(10)长度为10外键书号Varchar(20)不能为空外键借阅时间Datetime默认主键、索引借阅状态Bit默认1应还时间Datetime默认当前+30天归还时间Datetime默认当前注:借阅时间在一般情况下不会在同一秒,故设为主键,由于此表记录增加快,我们使用借阅时间作为顺序索引,按时间排序。当扫描录入时,一些默认值被设为当前时间。默认的借阅期为30天。以上表还说明了一些字段的规则、约束、索引等,接下来我们将据此上机创建完整的数据库。四、 创建用户自定义函数和存储过程一些常用的操作,如新书入库、借还书、新增借阅者等,我们将其创建为自定义函数或过程,根据给出的参数快速完成数据库操作。在需求分析时提出的“查询统计”也将用此实现。1. 根据书号或出版社查找图书信息我们使用如下transact-SQL语句来创建一个存储过程。create proc book_find(str varchar(30),type int) -str参数是搜索关键字asif type=1 -值为1表示搜索书名 select a.*,b.出版社名称 into findinfofrom bookinfo a inner join pubs bon b.编号=a.出版社 and a.书名 like %+ str +% elsebegin if type=2 -值为2表示搜索出版社名select a.*,b.出版社名称 into findinfofrom bookinfo a inner join pubs bon b.编号=a.出版社 and (a.书名 like %+ str +% or b.出版社名称 like %+ str +%)else -其他值表示综合搜索select a.*,b.出版社名称 into findinfofrom bookinfo a inner join pubs bon b.编号=a.出版社 and b.出版社名称 like %+ str + %endselect * from findinfo然后执行 exec book_find 成都,2 得到如下结果:图 4-1 存储过程执行结果执行后会增加一个表:findinfo,如需打印请打印此表。2. 根据借书证号查询借阅者信息我们使用如下命令来创建自定义函数。create function lendinfo_find(str varchar(10) -str参数是搜索关键字returns tableasreturn(select lendinfo.*,borrowerinfo.姓名,borrowerinfo.可借数量,borrowerinfo.性别 from lendinfocross join borrowerinfo where lendinfo.借书证号=str)执行select dbo.lendinfo_find(2010211079) 得到:图 4-2 用户自定义函数注:有的SQL Sever会报错无对象,请参阅“用户自定义函数唤醒”3. 根据书号和借书证号创建借阅记录create proc lendinfo_add(book_id varchar(10),lend_id varchar(10)asif exists(select * from lendinfo where 书号=book_id)begin if (select 可借数量 from lendinfo where 借书证号=lend_id)0 -判断可借数量 begin insert into lendinfo(借书证号,书号,借阅状态,归还时间) values(lend_id,book_id,0,getdate() update borrowinfo set 可借数量=(select 可借数量 from borrowinfo where 借书证号=lend_id)+1 -读者还书,将可借数量加1where 借书证号=lend_id else print 再借书目达到上限,请还一部分后再借! endendelsebegininsert into lendinfo(借书证号,书号,借阅状态) values(lend_id,book_id,1)update borrowinfo set 可借数量=(select 可借数量 from borrowinfo where 借书证号=lend_id)+1where 借书证号=lend_idendprint 记录已添加限于篇幅与精力,我们仅列出以上内容。五、 创建事务一些非常敏感的内容,如借阅状态等,关系到借阅者的利益,若在录入借阅信息时,只录入了一部分就发生异常终止了,此时必须回滚事务。因此我们对一些容易出错且非常重要的信息的操作创建了事务,以防万一。在此,我们仅对添加借阅记录创建事务。将已写出的部分代码修改至:beginbegin transactioninsert into lendinfo(借书证号,书号,借阅状态,归还时间) values(lend_id,book_id,0,getdate()update borrowinfo set 可借数量=(select 可借数量 from borrowinfo where 借书证号=lend_id)-1where 借书证号=lend_idif(error=0)commit transactionelserollback transaction end六、 数据库备份为防数据库信息被非法篡改或数据库服务器遭受毁灭性灾难,我们将数据库每周自动备份到远程主机。这样,即使图书馆被空袭成一片焦土,也能追回借出的那部分图书。Backup database bookmgr to disk=d:bookmgr.bak由于我们并未学习远程主机备份,在此不再讨论。七、 实践操作以下以截图呈现数据库创建过程和结果的一些关键部分。图 7-1 创建完成后的关系图图 7-2 一些check规则图 7-3 为借阅时间创建的索引下面我们将演示索引工作过程,执行一条通过“借阅时间”字段检索的语句:Select * from lendinfo where 借书时间 like 2011-12-03%如果我们有上万条记录的话(真正的图书馆都有的),服务器会从第一条开始检索,这将是你想象不到的慢,但是我们为借阅时间创建了唯一性索引,以升序排列,于是图 7-4 为归还日期创建的默认值,它将为当前日期+1个月使用dateadd函数按mm(月)将getdate()当前日期增加1图 7-5 bookinfo表图 7-6 borrowerinfo 表图 7-7 lendinfo 表图 7-8 pubs 表图 7-9 为lendinfo 表创建的外部关键字八、 我们的体会刚开学时,看见课程中有数据库,我不寒而栗。本人自幼对数字不敏感,除了钱算的清,其他都恼火。等到第一节课时,我看到教我们的老师了,那么亲切和蔼,压力有些缓解。第一节课下来,我发现还有些懂的,而且还挺有趣,于是我翻了遍书,算了,不敢目睹。后来听说VF、Acess,oracle,mysql之类的,我明白我们的sql server还处于挺高的层次,我都还能懂点,硕大的鼓励啊。光阴似箭,岁月,这门课程就了结了,留下的是满脑的记忆,记忆中是点点叠叠的知识和老师的回音。如今,我已不再畏惧它,看着那些代码、数据,我想到的是它创造的价值,多么神奇的学问。陈建(2010211079)数据库要结课了,我们从中学到了很多知识。这次我们学习数据库的内容是从数据库、数据表的创建和修改开始的,表是建立关系数据库的基本结构,用来存储数据具有已定义的属性,在表的操作过程中,有查看表信息、查看表属性、修改表中的数据、删除表中的数据及修改表和删除表的操作。从课程中中让我更明白一些知识,表是数据最重要的一个数据对象,表的创建好坏直接关系到数据库的成败,表的内容是越具体越好,但是也不能太繁琐,以后在实际应用中多使用表,对表的规划和理解就会越深刻。我们上机的另一个内容是数据库的约束、视图、查询。从中我们了解到查询语句的基本结构,和简单SELECT语句的使用,多表连接查询。而在视图的操作中,也了解到了视图是常见的数据库对象,是提供查看和存取数据的另一种途径,对查询执行的大部分操作,使用视图一样可以完成。我们还学习了,SQL管理、数据的导入、导出、备份和还原。数据的备份是对SQL Server数据事务日志进行拷贝,数据库备份记录了在进行备份操作的数据库中所有数据的状态。综合了我们所学的许多知识,让我们更努力的把所学到的东西运用上去。 SQL sever数据库的学习是在学习与探索中度过的,短暂的一学期的学习是结束了,但其中让我们学到了许多知识,出现许多未知的为什么,如数据备份与还原的步骤,如何建立视图、索引等一系列的问题,正是在老师和同学的共同努力之下,我们才一步步把问题解决了,最终完成了不可能完成的任务。 通过数据库的学习,我们懂得了更多的东西,受益匪浅。孙仁秀(2010211047)在这次项目设计中,我们小组所选择的设计是一个图书管理系统,在具体的设计与实施中,我看到并感受了一个管理系统从无到有的过程,对具体的设计步骤,思路,方法,技巧都有了进一步的了解,并感受深刻,这次课程设计加深了我对数据库系统设计相关知识以及SQL SERVER相关功能的理解。比如在建立基本的表,视图,索引,存储过程,触发器等,都比以前更加熟悉了,并且在结局各种问题的过程中学到了很多新的知识。程茜(2010211048)光阴似箭

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论