图书馆系统数据库课程设计.doc
西 南 科 技 大 学数据库应用课程设计报告图书馆系统数据库设计 学生姓名:李富明学 号:20134660班 级:商务1301指导老师:李宇翔老师学 院:经管学院提交日期:2015年XX月XX日数据库应用课程设计评阅评阅项目完成情况得分背景功能需求5%概念设计30%逻辑设计20%物理设计10%数据库实施15%功能实现10%文档质量、设计过程表现10%成绩20 / 24目 录前言11. 需求分析11.1系统功能背景资料11.2系统功能12. 概要结构设计23. 逻辑结构设计43.1关系模式设计43.2 关系模式的分析优化54. 数据库物理设计75. 数据库实施85.1数据库构建85.1.1各数据表说明85.1.2数据库创建85.2 数据库操作86.部分系统功能实现8总结8前言 如今Internet发展迅速,发布传播获取都不能靠传统的人工,所以邮局订报系统的出现提高了邮局订报系统的质量效率以及展示客户强大的订报功能,查阅功能,以及在线阅读功能等。这个邮局订报系统主要是完成客户在邮局通过填制生成订单订报的业务,并可以对所有的报纸以及客户信息的修改和查询。方便客户和邮局管理人员查阅报纸信息等。本系统主要建立了基本的需求表并优化,将它们之间建立好必要的联系方便查询和修改等,完成基本功能。1. 需求分析 角色:读者、图书馆馆员、系统管理员;基础数据:读者信息、图书信息、操作员信息;业务数据:借还书记录登记、罚款登记;统计数据:书籍借阅情况统计或读者借阅情况统计。基本要求:利用数据库技术,完成基础数据和业务数据的储存和操作,数据库设计合理 1 设计报告:含E-R图、数据字典、关系模式、关系实例、查询描述、关系代数、SQL实现的查询语言及查询结果。 2 上机实现。1系统功能背景资料随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力和物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。 另一方面,IT产业和Internet获得了飞速发展,计算机应用已渗透到了各个领域,引起信息管理的革命,实现了信息的自动化处理,提高了处理的及时性和正确性。 提高图书管理工作效率,作到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校,社会服务。1.2系统功能图书馆管理信息系统需要完成功能主要有: 1. 读者基本信息的输入,包括借书证编号、读者姓名、读者性别。 2读者基本信息的查询、修改,包括读者借书证编号、读者姓名、读者性别等。 3书籍类别标准的制定、类别信息的输入,包括类别编号、类别名称。 4书籍类别信息的查询、修改,包括类别编号、类别名称。 5书籍库存信息的输入,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、登记日期。 6书籍库存信息的查询,修改,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期登记日期等。 7借书信息的输入,包括读者借书证编号、书籍编号、借书日期。 8借书信息的查询、修改,包括借书证编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期等。 9还书信息的输入,包括借书证编号、书籍编号、还书日期。 10还书信息的查询和修改,包括还书读者借书证编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期等。 11超期还书罚款输入,还书超出期限包括超出期限还书的读者借书证号,书籍编号,罚款金额。2. 概要结构设计通过对局部应用的选择,逐一设计出分E-R图,并对各个分E-R图进行合并,生成初步E-R图,消除不必要的系统冗余,可以得出订报管理系统E-R图。图7 系统E-R图3. 数据库源代码 USE master go CREATE DATABASE tangzhangsentsg ON ( NAME = librarysystem, = 'c:tangzhangsenlibrary.mdf', SIZE = 10, MAXSIZE = 50, = 5 ) LOG ON ( NAME = 'library', = 'c:tangzhangsenlibrary.ldf', SIZE = 5MB, MAXSIZE = 25MB, = 5MB ) go3.1.2书本类别表建立 create table book_style ( bookstyleno varchar(30) primary key, bookstyle varchar(30) 3.1.3创建书库表 create table system_books ( bookid varchar(20) primary key, bookname varchar(30) Not null, bookstyleno varchar(30) Not null, bookauthor varchar(30), bookpub varchar(30) , bookpubdate datetime, bookindate datetime , isborrowed varchar (2) , foreign key (bookstyleno) references book_style (bookstyleno), )3.1.4借书证表建立 create table system_readers ( readerid varchar(9)primary key, readername varchar(9)not null , readersex varchar(2) not null, readertype varchar(10), regdate datetime )3.1.5借书记录表建立 create table borrow_record ( bookid varchar(20) primary key, readerid varchar(9), borrowdate datetime, foreign key (bookid) references system_books(bookid), foreign key (readerid) references system_readers(readerid), )3.1.6还书记录表建立 create table return_record ( bookid varchar(20) primary key, readerid varchar(9), returndate datetime, foreign key (bookid) references system_books(bookid), foreign key (readerid) references system_readers(readerid) )3.1.7罚款单表建立*/ create table reader_fee ( readerid varchar(9)not null, readername varchar(9)not null , bookid varchar(20) primary key, bookname varchar(30) Not null, bookfee varchar(30) , borrowdate datetime, foreign key (bookid) references system_books(bookid), foreign key (readerid) references system_readers(readerid) )3.2数据初始化 3.2.1将书籍类别加入表book_style中 insert into book_style(bookstyleno,bookstyle)values('1','修真小说') insert into book_style(bookstyleno,bookstyle)values('2','穿越小说') insert into book_style(bookstyleno,bookstyle)values('3','恐怖小说') insert into book_style(bookstyleno,bookstyle)values('4','都市小说') insert into book_style(bookstyleno,bookstyle)values('5','科幻小说') insert into book_style(bookstyleno,bookstyle)values('6','仙侠小说') insert into book_style(bookstyleno,bookstyle)values('7','言情小说') 3.2.2将已有的图书加入system_books表中 insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub,bookpubdate, bookindate, isborrowed ) values('20135678901','飘渺之旅','1','萧潜','鲜网','2005-09-01','2013-05-25','1'); insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub,bookpubdate, bookindate, isborrowed ) values('20135678902','唐朝好男人','2','多一半','新星出版社','2008-05-09','2013-05-26','1'); insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed )values('20135678903','鬼吹灯','3','天下霸唱','安徽文艺出版社','2007-09-18','2013-05-27','1'); insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub,bookpubdate, bookindate, isborrowed ) values('20135678904','和空姐同居的日子','4','三十','中国海关出版社','2009-04-08','2013-05-28','1'); insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed ) values('20135678905','卡徒','5','方想','广西人民出版社','2009-10-11','2013-05-29','1'); insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed ) values('20135678906','蜀山剑侠传','6','还珠楼主','山西人民出版社','1998-08-17','2013-05-30','1'); insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed ) values('20135678907','何以笙箫默','7','顾漫','朝华出版社','2007-04-09','2013-05-31','1'); insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed ) values('20135678908','步步惊心','2','桐华','民族出版社','2006-06-20','2013-05-30','1');3.2.3将已有图书证的读者加入system_readers表中*/ insert into system_readers(readerid,readername,readersex,readertype,regdate) values('Q20120401','李雷','男','学生','2013-01-18 12:20') insert into system_readers(readerid,readername,readersex,readertype,regdate) values('Q20120402','唐张森','男','学生','2013-01-19 13:15') insert into system_readers(readerid,readername,readersex,readertype,regdate) values('Q20120403','韩梅梅','女','学生','2013-01-20 13:33') insert into system_readers(readerid,readername,readersex,readertype,regdate) values('Q20120404','露西','女','学生','2013-01-21 12:01') insert into system_readers(readerid,readername,readersex,readertype,regdate) values('Q20120405','王强','男','学生','2013-01-22 15:23') insert into system_readers(readerid,readername,readersex,readertype,regdate) values('201005','毛正标','男','教师','2013-01-23 18:50') insert into system_readers(readerid,readername,readersex,readertype,regdate) values('201006','陆海鹏','男','教师','2013-01-24 18:25') insert into system_readers(readerid,readername,readersex,readertype,regdate) values('GL001','李燕玲','女','管理','2013-01-01 16:20') 3.2.4添加已借书读者的记录,同时将在已借出的借阅标记置0*/ insert into borrow_record(bookid,readerid,borrowdate) values('20135678901','Q20120401','2013-01-18 12:20') update system_books set isborrowed=0 where bookid='20135678901' insert into borrow_record(bookid,readerid,borrowdate) values('20135678902','Q20120402','2013-01-19 13:15') update system_books set isborrowed=0 where bookid='20135678902' and isborrowed='1' insert into borrow_record(bookid,readerid,borrowdate) values('20135678903','Q20120403','2013-01-20 13:33') update system_books et isborrowed=0 where bookid='20135678903' and isborrowed='1' insert into borrow_record(bookid,readerid,borrowdate) values('20135678904','Q20120404','2013-01-21 12:01')update system_books set isborrowed=0 where bookid='20135678904' and isborrowed='1' insert into borrow_record(bookid,readerid,borrowdate) values('20135678905','Q20120405','2013-01-22 15:23') update system_books set isborrowed=0 where bookid='20135678905' and isborrowed='1' insert into borrow_record(bookid,readerid,borrowdate) values('20135678907','201005','2013-01-23 18:50') update system_books set isborrowed=0 where bookid='20135678907' and isborrowed='1' insert into borrow_record(bookid,readerid,borrowdate) values('20135678908','201006','2013-01-24 18:25') update system_books set isborrowed=0 where bookid='20135678908' and isborrowed='1 4.结果数据处理 4.1单表查询 4.1.1表book_style中查询演示: 查询语句:select * from book_style 4.2超期处理 4.2.1现在对已有借书证的读者进行查询借书是否超期 查询语句:(这里归定30天): select system_readers.readerid 读者借书证编号,readername 读者姓名, system_books.bookid 书籍编号,bookname 书名,borrowdate 借书时间, datediff(day,convert(smalldatetime,borrowdate),getdate()-30 超过天数 from borrow_record ,system_readers,system_books where system_readers.readerid=borrow_record.readerid and system_books.bookid=borrow_record.bookid and datediff(day,convert(smalldatetime,borrowdate),getdate()>=30 说明:当前的getdate()以当前的时间和日期计算4.2.2同时也可以用语句超过天数的读者进行罚款,加入到罚款单里面,一天以0.3元扣除计算: 语句 insert into reader_fee(readerid,readername,bookid,bookname,bookfee,borrowdate) select system_readers.readerid 读者借书证编号,readername 读者姓名system_books.bookid 书籍编号,bookname 书名, 0.03*(Datediff(day,convert(smalldatetime,borrowdate),getdate()-30) 超过时间天数, borrowdate 借书时间 from borrow_record ,system_readers ,system_books where system_readers.readerid=borrow_record.readerid and system_books.bookid=borrow_record.bookid and Datediff(day,convert(smalldatetime,borrowdate),getdate()>=30 go select readerid 书读者借书证编号,readername 读者姓名, bookid 书籍编号,bookfee 超期罚款4.3还书操作 4.3.1现在对某一读者进行还书操作: 首先还书要在还书纪录中添加一条还书纪录 insert into return_record(bookid,readerid,returndateselect bookid,readerid,getdate() from borrow_record where bookid='20135678901' (1 行受影响) 查询语句: select bookid 书籍编号,readerid 读者借书证号,returndate 归还时间 2其次删除相应书本的借阅纪录 delete from borrow_record where bookid='20135678901' (1 行受影响) 查询语句: select bookid 书籍编号,readerid 读者借书证号,borrowdate 归还时间 from borrow_record说明:这本书重新回到未被借出标记为1 其结果为还书成功,相应的各表都有变化,对于罚款单通过借阅记录表borrow_record中更新。 4.4借书操作 4.4.1查询未被借出的书本: 查询语句: select bookid 书籍编号,bookname 书籍名称 from system_books where isborrowed='14.4.2查询已被借出的书本: 查询语句: select bookid 书籍编号,bookname 书籍名称 from system_books where isborrowed='04.4.3申请借书证: Insert into system_readers(readerid,readername,readersex,readertype,regdate) values('Q20120406','小萌萌','女','学生',getdate() (1 行受影响) 查询语句: select * from system_readers where readerid='Q20120406'说明:查询相应的纪录增加了小萌萌这样一个读者的借书证纪录: 4.4.4注销借书证: 注销之前执行所有的还书过程,小萌萌借书证纪录就被删除了,同时要删除和小萌萌归还纪录的内容 delete from system_readers where readerid='Q20120406' Go delete from return_record where readerid='Q20120406' (1 行受影响) (0 行受影响)确认小萌萌是否被删除 查询语句: select * from system_readers where readerid='Q20120406' 4.4.5查询所有书所对应的类别: 4.4.5查询所有书所对应的类别 查询语句: select distinct bookname 书籍名称,bookstyle 书籍类别 from book_style,system_books where book_style.bookstyleno=system_books.bookstyleno4.5书籍状态 4.5.1查询所有穿越小说类的书: 查询语句 select distinct bookname 书籍名称,bookstyle 书籍类别 from book_style,system_books where book_style.bookstyleno=system_books.bookstyleno and system_books.bookstyleno='2'4.6读者状态 4.6.1查询什么人借了什么书: 查询语句 select readername 读者姓名,bookname 书籍名称 from borrow_record,system_books,system_readers where system_readers.readerid=borrow_record.readerid and system_books.bookid=borrow_record.bookid 4.6.2指定查询李富明借了什么书: 查询语句 select readername 读者姓名,bookname 书籍名称 from borrow_record,system_books,system_readers where system_readers.readerid=borrow_record.readerid and system_books.bookid=borrow_record.bookid and readername='李富明'4. 总结通过此次数据库的课程设计,真正达到了学和用的结合,增强了对数据库方面应用的理解,对自己今后参和开发数据库系统积累了不少经验,在实验过程中,从建立数据开始,对灵据库设计理念及思想上有更高的认识,从需求分析,到概念设计和逻辑设计,E-R图的表示,数据字典的创建,懂得了不少有关数据库开发过程中的知识,在实验中建表,及其关系模式,关系代数的建立及理解,将SQL语的查询语句用得淋漓尽致,增强了自己在数据库中应用SQL语言的灵活性,其中包括,插入、删除、修改、查询,牵涉表和表之间的联系,主建和外主键的定义,约束项的设置,使逻辑更严密,在学习过程中,我也能过上网查了不少资料,也看了一些别人设计的图书馆管理信息系统的设计报告,借鉴了一些别人的语言结构学以致用,自我创新,完成了这份自己的报告,从中在学到用,从用又到学,不断修改,系统更新。虽然不能达到完善系统,但我也只能做到这一步了。