《基于MYSQL的图书管理系统数据库设计(共37页).docx》由会员分享,可在线阅读,更多相关《基于MYSQL的图书管理系统数据库设计(共37页).docx(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上题目:基于MYSQL图书管理系统数据库设计 目录1.题目概述在对该校的图书馆进行调研时发现,图书馆内的部分工作采用的还是手工操作,管理起来效率低下,对师生对图书的需求意图了解不够充分,不能及时的查询各类图书的存储状况等;图书的动态调整缓慢,不利于满足师生对图书的借阅需求。手工操作存在大量的弊端,例如一些人为因素,手动操作经常造成图书数据的遗漏和误报等。学校图书馆为了提高管理和借阅效率,决定采用计算机管理,经与图书馆管理人员交谈,得知:(1) 学校师生必须在图书馆先办理借阅证,然后方可借阅图书资料。(2) 图书馆对书籍原来有一套卡片登记制度,现在需要将其查询功能移植入计
2、算机(当然相应地也必须建立图书登记、报废等记录)。(3) 借阅图书从原来的手工填写借阅单据改为计算机登记借阅。(4) 提供挂失、预约、综合查询等新功能以方便读者。(5) 为了图书馆管理的需要,提供一定的统计功能。(1)图书管理1. 新书入库:对新购进的图书进行必要的登记。2.图书资料修改:对图书的数量,分类,流通/馆藏等资料进行修改。3.图书查询提供多种查询,定位图书的方法。可以通过图书编号、类别、书名、作者、出版社、出版日期等信息查询。(2)读者管理1.增加新读者:为新读者办理借书证。读者要区分教师和学生。教师和学生可以借阅的图书的种类和数量不同。2.读者资料修改:除能对个别读者的信息进行修
3、改外,还能对读者信息进行批量修改。对借书证进行挂失、取消挂失、证件注销等处理。当读者有未还图书时,不允许注销。3.读者资料查询:提供多种方法对读者信息,以及该读者的借阅信息进行查询。(3)借阅管理1.借书:根据书号借书。每本书有一定的借阅期限,每位读者借阅的数量不能超过允许的数量。图书借阅必须进行必要的登记,并通知读者还书的日期等相关事宜。若因为某种原因不能借出,要说明理由。如图书是馆藏或已借完等。2.还书:对超期、损坏的图书应进行罚款处理。3.挂失:对丢失图书视不同书籍进行不同数量的罚款。4.预约:根据书号对已借完的图书进行预约。对预约的读者的证号、联系电话、地址、Email等信息进行登记。
4、当预约图书被其他读者还回时要作记录,以便通知管理员通知预约读者。5.续借:对续借次数要有限制。对已预约的图书不允许续借。(4)综合查询综合查询主要面向读者。普通读者能采用多种方式对图书的当前库存数量、图书内容等信息进行查询。也能根据借书证号对自己的借阅情况进行查询。(5)统计1.对不同种类图书的数量,库存等信息进行统计2.对每种图书在一定时期的借阅次数,预约次数等信息进行统计。3.对不同读者的借阅情况进行统计(1)图书基本数据1.银行标识:不超过10个汉字2.帐号:18位数字,同一银行之下的帐号必须唯一3.编号4.ISBN号5.书名:不超过30个汉字6.文种7.作者:因为可以有不止一个作者,规
5、定一个作者的姓名长度不超过5个汉字,且为了查询方便,不能把多个作者放在同一个属性中。8.出版社:不超过20个汉字9.出版日期10.价格11.主题词112.主题词213.主题词314.流通册数15.馆藏册数等(2)读者基本数据1.证号:不超过10位数字2.姓名:不超过5个汉字3.单位:不超过20个汉字4.职务:不超过3个汉字或者用职务编号代替5.卡数等系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;
6、系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。数据是在外部互联网络以及图书馆内部局域网中进行流动和存储的,要保证其在这一过程中的安全稳定。对于图书馆数据安全来说,就是要防止数据在传输和使用的过程中被非法复制、更改、删除和使用等。为了达到这一目的,就需要开发相应的信息管理技术和建立相应的图书馆数据信息管理系统。通过保障图书馆软件系统和硬件系统的安全稳定运行,使得图书馆数据服务系统可以持续工作,不因内部数据错误和外界人为或环境的干扰而出现中断,达到保护数据安全的最终目标。(1)图书借阅的业务流程图:图2-1系统的数据流程图(1)书籍类别(种类编号,种类名称)(
7、2)读者(借书证编号,读者姓名,读者性别,读者种类,登记时期)(3)书籍(书籍编号,书籍名称,书籍类别,书籍作者,出版社名称,出版日期,登记日期,是否被借出)(4)借阅(借书证编号,书籍编号,读者借书时间)(5)还书(借书证编号,书籍编号,读者还书时间)(6)罚款(借书证编号,读者姓名,书籍编号,书籍名称,罚款金额,借阅时间)根据功能需求,可以建立实体之间的关系,进而实现逻辑结构功能。图书管理信息系统可以划分的实体有:书籍类别信息实体、读者信息实体、书籍信息实体、借阅记录信息实体,归还记录信息实体。(1)书籍类别实体E-R图:图3-1书籍类别实体E-R图(2)读者信息实体E-R图:图3-2 读
8、者信息实体E-R图(3)书籍信息实体E-R图:图3-3书籍信息实体E-R图(4)借阅记录信息实体E-R图:图3-4借阅记录信息实体E-R图(5)归还记录信息实体E-R图:图3-5归还记录信息实体E-R图(6)罚款信息实体E-R图:图3-6罚款信息实体E-R图(7)总的信息实体E-R图:图3-7总的信息实体E-R图数据字典:表4-1 book_style 书籍类别信息表表中列名数据类型可否为空说明bookstylenovarcharNot null(主键)种类编号bookstyleVarcharNot null种类名称表4-2 system_readers读者信息表表中列名数据类型可否为空说明r
9、eaderidVarcharNot null(主键)读者借书证号readernameVarcharNot null读者姓名readersexVarcharNot null读者性别readertypeVarcharNull读者种类regdateDatetimeNull登记日期表4-3 system_book书籍信息表表中列名数据类型可否为空说明bookidVarcharNot null(主键)书籍编号booknameVarcharNot null书籍名称bookstyleVarcharNot null书籍类别bookauthorVarcharNot null书籍作者bookpubVarcharN
10、ull出版社名称bookpubdateDatetimeNull出版日期bookindateDatetimeNull收录日期isborrowedVarcharNot Null是否被借出表4-4borrow_record 借阅记录信息表表中列名数据类型可否为空说明readeridVarcharNot null(外主键)读者借阅证编号bookidVarcharNot null(外主键)书籍编号borrowdateVarcharNot null读者借书时间表4-5return_record 归还记录信息表表中列名数据类型可否为空说明readernameVarcharNot null(外主键)读者借阅证
11、编号readeridVarcharNot null(外主键)书籍编号returndateDatetimeNot null读者还书时间表4-6reader_fee 罚款记录信息表readeridVarcharNot null读者借书证编号readernameVarcharNot null读者姓名bookidVarcharNot null(外主键)书籍编号booknameVarcharNot null书籍名称bookfeeVarcharNot Null罚款金额borrowdateDatetimeNot Null借阅时间(1) 书籍类别关系中种类编号为主键,其中函数依赖有:种类编号种类名称。因为书籍
12、类别关系中不存在非主属性对码的部分函数依赖和传递函数依赖关系,所以客户关系是属于3NF。(2)书籍关系中书籍编号为主键,其中函数依赖有:书籍编号书籍名称,书籍编号书籍类别,书籍编号书籍作者,书籍编号出版社名称,书籍编号出版日期,书籍编号登记日期。因为书籍关系中不存在非主属性对码的部分函数依赖和传递函数依赖关系,所以客户关系是属于3NF。(3)读者关系中读者借书证号为主键,其中函数依赖有:读者借书证号读者姓名,读者借书证号读者性别,读者借书证号读者种类,读者借书证号登记日期。因为读者关系中不存在非主属性对码的部分函数依赖和传递函数依赖关系,所以客户关系是属于3NF。(4)借阅关系中(借书证编号,
13、书籍编号)为主键,其中函数依赖有:(借书证编号,书籍编号)读者借书时间。因为借阅关系中不存在非主属性对码的部分函数依赖和传递函数依赖关系,所以客户关系是属于3NF。(5) 还书关系中(借书证编号,书籍编号)为主键,其中函数依赖有:(借书证编号,书籍编号)读者还书时间。因为还书关系中不存在非主属性对码的部分函数依赖和传递函数依赖关系,所以客户关系是属于3NF。(6) 罚款关系中书籍编号为主键,其中函数依赖有:书籍编号借书证编号,书籍编号读者姓名,书籍编号书籍名称,书籍编号罚款金额,书籍编号借阅时间。因为罚款关系中不存在非主属性对码的部分函数依赖和传递函数依赖关系,所以客户关系是属于3NF。5.1
14、图书管理系统的功能模块图5-1图书管理系统的功能模块5.2主要模块的功能描述本系统分为4个模块。包括用户管理模块,图书管理模块,借阅管理模块,和信息查询模块。(1)用户管理模块用户管理模块的功能主要包括用户信息(管理员用户、师生用户)的新增、修改、删除、查询等功能。1.新增用户借书证面对学校每年大量的新入学新生,需提供快捷的、完善的用户增加功能。图书管理员用户的注册,为新进员工分配图书管理员账号,主要由系统管理员负责。2.注销用户借书证主要是在学生毕业时或职工离职时,可单个或批量删除用户信息,确保图书管理系统安全性。3.修改用户信息在图书馆的日常工作中难免发生问题或差错,会产生错误的用户信息,
15、修改功能通过账号查找用户信息,并对用户估息的可修改项进行修改。4.查询功能通过用户管理模块,拥有查询权限的管理员可以查询用户及管理员的用户信息,一般提供通过账号、姓名、借出图书所有者等信息进行查询,返回用户信息,方便图书管理系统的统一管理。(2)图书信息管理模块图书信息管理模块主要包括图书信息录入、图书信息修改、图书信息删除、图书信息查询等功能。1.图书信息录入对新进图书进行图书信息的录入,单本图书录入一般由图书管理员负责,图书管理员录入图书基本信息,系统将根据图书的基本信息为图书分配一个唯一的编号,并实时更新数据库,方便用户查询。2.图书信息修改图书信息修改通过输入的图书名称、图书编号等基本
16、信息中的一项或多项进行图书信息的查看,并修改该图书信息,这一个功能一般由图书管理员操作。3.图书信息删除图书删除功能通过录入图书名称、图书编号等基本信息中的一项或多项进行图书信息的查看,进而删除该图书信息,一般由拥有删除权限的图书管理员操作。(3)借阅信息管理模块借阅信息管理模块包括图书借阅、图书归还、超期罚款等功能。1.图书借阅图书借阅需审核用户信息及图书信,审核通过将修改系统数据库中图书信息以及用户信息。审核不通过将返问错误信息给用户。2.图书归还图书归还时,图书管理员将检查图书是否有破损,以及是否违反图书馆管理规则,例如图书过期等。审核完成后修改数据库中图书信息以及用户信息,完成图书归还
17、工作。3.超期罚款用户在借阅过程中,如出现超期现象,将产生超期罚款,超期罚款缴纳前用户图书证处于锁定状态,不容许继续借阅图书,直到用户解锁后,即用户交完罚款后,实时更新数据库。(4)信息査询模块信息查询模块主要为师生用户提供借阅信息查询功能,用户通过登录查询网站,录入用户学号,返回查询结果中包括借阅图书基本信息、借阅时间,归还时间,是否超期等信息。5.3数据库源代码5.3.1数据库表设计(1)创建书本类别表create table book_style( bookstyleno varchar(30) primary key, bookstyle varchar(30)(2)创建书库表crea
18、te 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
19、)创建借书证表create table system_readers ( readerid varchar(9)primary key, readername varchar(9)not null , readersex varchar(2) not null, readertype varchar(10), regdate datetime)(4)创建借书记录表create table borrow_record( bookid varchar(20) primary key, readerid varchar(9), borrowdate datetime, foreign key (bo
20、okid) references system_books(bookid), foreign key (readerid) references system_readers(readerid),)(5)创建还书记录表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 s
21、ystem_readers(readerid)(6)创建罚款单表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)
22、 references system_readers(readerid)5.3.2数据初始化(1)初始化书籍类别表book_styleinsert 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,数
23、理科学)insert into book_style(bookstyleno,bookstyle)values(5,生物科学)insert into book_style(bookstyleno,bookstyle)values(6,交通运输)insert into book_style(bookstyleno,bookstyle)values(7,政治法律)(2)将已有的图书加入system_books表中insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub,bookpubdate, bookind
24、ate, isborrowed )values(,中国易学,1,刘正,中央编译出版社,2015-05-10,2015-10-25,1);insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub,bookpubdate, bookindate, isborrowed )values(,2,陶舒天,新华出版社,2014-01-10,2015-05-26,1);insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub, b
25、ookpubdate,bookindate, isborrowed )values(,明成祖传,3,晁中辰,人民出版社,2014-08-10,2015-05-27,1);insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub,bookpubdate, bookindate, isborrowed )values(,4,李东,重庆大学出版社,2014-08-10,2015-05-28,1);insert into system_books(bookid ,bookname, bookstyleno,boo
26、kauthor,bookpub, bookpubdate,bookindate, isborrowed )values(,5,杨青平,河南人民出版社,2014-01-10,2015-05-29,1);insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed )values(,铁路选线设计,6,易思蓉,重庆大学出版社,2014-01-10,2015-05-30,1);insert into system_books(bookid ,bo
27、okname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed )values(,7,秦涛,华东理工大学出版社,2014-09-10,2015-05-31,1);insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed )values(,一楣月下窗,2,程然,四川人民出版社,2014-09-10,2015-05-30,1);(3)将已有图书证的读者加
28、入system_readers表中insert into system_readers(readerid,readername,readersex,readertype,regdate)values(,姬彦雪,女,学生,2015-01-01 12:20);insert into system_readers(readerid,readername,readersex,readertype,regdate)values(,郝永宸,男,学生,2015-01-02 13:15);insert into system_readers(readerid,readername,readersex,read
29、ertype,regdate)values(,于新磊,男,学生,2015-01-03 13:33);insert into system_readers(readerid,readername,readersex,readertype,regdate)values(,殷娜梅,女,学生,2015-01-04 12:01);insert into system_readers(readerid,readername,readersex,readertype,regdate)values(,宋天鸣,男,学生,2015-01-05 15:23);insert into system_readers(r
30、eaderid,readername,readersex,readertype,regdate)values(,石逸轩,男,教师,2015-01-06 18:50);insert into system_readers(readerid,readername,readersex,readertype,regdate)values(,孟灵丽,女,教师,2015-01-07 18:25);insert into system_readers(readerid,readername,readersex,readertype,regdate)values(M0001,陈慧,女,管理,2015-01-1
31、0 16:20);(4)添加已借书读者的记录,同时将在已借出的借阅标记置0insert into borrow_record(bookid,readerid,borrowdate)values(,2015-07-11 12:20);update system_books set isborrowed=0where bookid= and isborrowed=1;insert into borrow_record(bookid,readerid,borrowdate)values(,2015-07-01 13:15);update system_books set isborrowed=0wh
32、ere bookid= and isborrowed=1;insert into borrow_record(bookid,readerid,borrowdate)values(,2015-07-03 13:33);update system_books set isborrowed=0where bookid= and isborrowed=1;insert into borrow_record(bookid,readerid,borrowdate)values(,2015-07-11 12:01);update system_books set isborrowed=0where book
33、id= and isborrowed=1;5.3.3单表查询(1)书籍类别表查询演示:查询语句:select * from book_style图5-2 表book_style中内容(2)表书库表查询演示:查询语句:select * from system_books图5-3 表system_books中内容(3)将已有图书证的读者加入读者表结果查询:查询语句:select * from system_readers图5-4 表system_readers中内容(4)借书纪录表结果查询:查询语句:select * from borrow_record图5-4 表borrow_record中内容
34、5.3.4借书操作(1)查询未被借出的书本:查询语句:select bookid 书籍编号,bookname 书籍名称from system_bookswhere isborrowed=1图5-5 未被借出的书本查询结果(2)查询已被借出的书本:查询语句:select bookid 书籍编号,bookname 书籍名称from system_bookswhere isborrowed=0图5-6 已被借出的书本查询结果(3)新增用户借书证:Insert into system_readers(readerid,readername,readersex,readertype,regdate)va
35、lues(,马悦,女,学生,now()查询语句:select * from system_readerswhere readerid=图5-7 新增用户借书证查询结果(4)注销用户借书证:注销之前执行所有的还书过程,马悦借书证纪录就被删除了,同时要删除马悦归还纪录的内容。delete from system_readers where readerid=;delete from return_record where readerid=;确认马悦是否被删除查询语句:select * from system_readerswhere readerid=图5-8 注销用户借书证查询结果5.3.5超
36、期处理(1)现在对已有借书证的读者进行查询借书是否超期查询语句(这里规定30天):select system_readers.readerid 读者借书证编号,readername 读者姓名,system_books.bookid 书籍编号,bookname 书名,borrowdate 借书时间,datediff(now(),borrowdate)-30from borrow_record ,system_readers,system_bookswhere system_readers.readerid=borrow_record.readeridand system_books.bookid
37、=borrow_record.bookidand datediff(now(),borrowdate)=30图5-9 借出超过30天的读者(2)对超过天数的读者进行罚款,加入到罚款单里面,一天以0.1元扣除计算:insert into reader_fee(readerid,readername,bookid,bookname,bookfee,borrowdate);select * from reader_fee图5-10 罚款单查询结果5.3.6还书操作(1)首先还书要在还书纪录中添加一条还书纪录insert into return_record(bookid,readerid,retur
38、ndate)select bookid,readerid,2015-12-10from borrow_recordwhere bookid=查询语句:select * from return_record图5-11 增加了纪录(2)其次删除相应书本的借阅纪录delete from borrow_record where bookid=查询语句:select * from borrow_record图5-12 删除记录(3)最后在书库中标记该本书为1,表示归还了未借,可供其他读者借阅update system_books set isborrowed=1 where bookid=查询语句:se
39、lect bookid 书籍编号,bookname 书籍名称,isborrowed 是否借出from system_bookswhere bookid=图5-13 标记设为15.3.7书籍状态(1)查询所有书所对应的类别查询语句:select distinct bookname 书籍名称,bookstyle 书籍类别from book_style,system_bookswhere book_style.bookstyleno=system_books.bookstyleno图5-14 书籍对应类别查询结果(2)查询所有文学艺术类的书:查询语句:select distinct bookname
40、 书籍名称,bookstyle 书籍类别from book_style,system_bookswhere book_style.bookstyleno=system_books.bookstylenoand system_books.bookstyleno=2图5-15 所有文学艺术类的书查询结果(3)查询重庆大学出版社出版的书:查询语句:select distinct bookname 书籍名称,bookpubfrom book_style,system_bookswhere bookpub=重庆大学出版社图5-16 所有重庆大学出版社的书查询结果5.3.8读者状态(1)查询什么人借了什么
41、书查询语句:select readername 读者姓名,bookname 书籍名称from borrow_record,system_books,system_readerswhere system_readers.readerid=borrow_record.readeridand system_books.bookid=borrow_record.bookid图5-17 查询结果(2)指定查询郝永宸借了什么书查询语句:select readername 读者姓名,bookname 书籍名称from borrow_record,system_books,system_readerswher
42、e system_readers.readerid=borrow_record.readeridand system_books.bookid=borrow_record.bookidand readername=郝永宸图5-18 查询结果本系统设计中用到了SQL语言和UML建模语言。6.1.1 SQL语言的特点(1)高度非过程化应用SQL语言实现数据库编程,用户无需指明“如何完成”,只需告诉编程者需要完成的任务对象,极大地降低了用户的工作强度,提高了数据独立性。SQL是以集合的方式集中处理批记录,无须对单个记录进行操作或处理。SQL语句可以打包为一个集合作为数据库的输入,返回集合作为输出。该
43、特性使得SQL的输出可作为另一条SQL语句的输入,该性质使用户可集中精力于所需要的结果。(2)集成一致性SQL语言集中了DDL(数据定义)、DML(数据操作)、DQL(数据查询)、DCL(数据控制)等数据库常用功能模块,有相对稳定的编程风格。SQL语言的功能贯穿数据库生命周期中不同阶段的任何内容,具体而言,有关系模式的界定、数据添加、新建数据库、数据查找、信息刷新、数据库维护以及数据库重构、数据库安全性保障等所有操作要求。SQL适用性强,适用于多种不同类型的数据库用户,包括终端用户、系统管理员、事务处理员、作业工作员等。SQL系统所提供的命令,既包含查找数据,又包含添加、修改和删除记录,添加、
44、修改和删除数据对象,还包括数据及其对象的存取控制,保证数据库统一性和标准性。(3)应用方式多样性交互式使用方式:用户在联机交互式的环境下使用SQL语言,每输入一条命令,敲回车后系统就执行一条命令,并显示执行结果。这就是所谓的交互式的使用方式;程序式使用方式:SQL语言不但可以嵌入到其他高级语言中(如C,FORTRAN等),也可以独立地组成一段SQL批处理程序,以应用程序的方式来提交给系统一并执行。(4)语言功能强SQL语言是介于关系代数和关系演算之间的语言,同时吸取了这两类语言的特点和长处。它有着丰富的语言功能,包括:数据定义功能;数据查询功能;数据操纵功能;数据控制功能。基本的SQL命令易学易会易掌握,与以往DBMS专为某项操作提供单独语言相比,SQL将全部任务集成于单一语言,成为关系型数据库的通用语言。SQL语言是一种用户很容易掌握的语言,用户性能非常好,这也是它受到广大用户喜爱的原因之一。6.1.2 SQL功能与特性通过使用SQL命令,能够实现以下功能与特性:(1)建立数据库表;(2)变换