1、图书馆管理借阅系统数据库设计姓 名:陈占刚学 号:20112452专业班级:计算机科学与技术 11-1小组成员:郝必荣 张冬雪 陈占刚一需求分析1、功能分析我们数据库的服务对象分两类,即管理员与用户。管理员的操作:书籍的管理(包括书籍的添加、删除以及修改) ;用户信息的管理(包括用户的添加、删除以及修改) ;用户的操作:借书、还书、以及查询。图书馆管理系统功能如下图:图书馆管理系统用户查询 借阅 归还管理员图书管理 用户管理2、数据需求及业务规则分析借阅规则:(1)图书逾期不还者,则每册每天罚款 0.2 元。 (2)每个读者和图书管理员都有自己唯一的编号。(3)每种图书都有唯一的图书编号,每种
2、图书可能采购多册。(4)每个图书,当借出后,则该图书状态改为借出状态。(5)图书馆管理员有权更改图书到期时间,比如将本来暑假到期的图书的到期时间改为 9 月10 日。3、数据约束分析(1)读者登陆系统的用户名即是读者号,为一卡通账号或学工号,11 位。初始密码为该读者的读者号,可以修改。(2)书籍编号按照一定规则, “ISBN 号”+三位流水号“XXX ”(3)每种借阅类型和读者类型,其借阅册数、借期、是否允许续借、续借期限等不同。不同借阅种类和借阅对象的借阅要求规定限制。例如,本专科生可以借中文图书 5 本,借期30 天,可以续借一次,续借 15 天。(4)日期的格式一律采取“yyyy-mm
3、-dd” 。(5)书籍分类号按照要求编号。例如 A 代表马克思主义、列宁主义、毛泽东思想、邓小平理论。(6)图书管理员编号按照教职工号编写。4、主要任务创建基本表:数据更新:按借阅者查询其历史借阅信息查询到期未还的所有借阅记录、包括借阅者编号、姓名、图书名称、借阅日期、应归还日期按出版社统计被借阅图书的次数,结果按降序排列,并显示前三名图书归还时若超期,则自动计算生成罚款金额将借阅次数超过 50 次的图书评价置为“受欢迎”将累计三次超期未还的借阅者的信誉度置为“较差” 一、 实体集与联系集(1)图书 Book: 图书编号 BID、名称 BName、作者 Writer、出版社 Press、出版时
4、间PressTime、单价 Price、内容简介 Introduction、所属分类号 Class、购买时间 buytime 、 现量 currentnum、总量 totalnum。(2)用户 User:读者号 UID、密码 password、姓名 Name、性别 Sex、生日 birthday、电子邮箱 Email。(3)管理员 admin:管理员编号号 AID、密码 password、姓名 Name、电子邮箱 Email。(4)用户借书 borrowed:Borrow 联系集属性:用户编号 UID、图书编号 BID、初次借阅时间 BorrowDate、续借时间ReBorrowDate、实际
5、归还时间 BackDate。总体 E-R 图:综上关系共有 4 个,其中主码用下划线标出USER( UID、 password、Name 、Sex、Emai、birthday) 、BOOK( BID、BName、Writer、Press、PressTime、Price、Introduction、Class、buytime、currentnum、totalnum)ADMMIN(AID、password、Name、Sex、Email)BORROWED(UID、BID、 BorrowDate、ReBorrowDate、BackDate)经分析,以上关系均满足第三范式。注:以下 SQL 语句均通过 M
6、YSQL 实现二、 创建数据库create table User(UID char(8) NOT NULL primary key,Name varchar(20) NOT NULL,password varchar(20) NOT NULL,Sex char(2) NOT NULL check(Sex=男or Sex=女),Emai varchar(30),birthday date);create table Book(BID char(8) not null primary key,BName varchar(50) not null,Writer varchar(20) not nul
7、l,Press varchar(20) not null,PressTime date not null,Price float(4) not null,Introduction varchar(255) ,Class varchar(20),buydate date not null,currentnum int(2) not null,totalnum int(2) not null);create table Admin(AID varchar(20) not null primary key,password varchar(20) not null,Name varchar(20)
8、not null,Email varchar(30);create table borrowed(BID char(8) not null ,UID char(8) not null ,BorrowDate date not null,ReBorrowDate date ,BackDate date ,primary Key (BID,UID,BorrowDate),foreign key (BID) references book(BID),foreign key (UID) references user(UID);三、 数据完整性、安全性1、 完整性约束BORROWED 表要求 BID
9、与 UID 为外码,分别参照 BOOK(BID)和 USE(UID)BOOK 表中 CURRENTNUM 应满足CURRENTNUM = 0 AND CURRENTNUM=0 and currentnum0,(datediff(now(),ifnull(ReBorrowDate,BorrowDate)-60,0)* 0.1 Penaltyfrom user,book,borrowed where borrowed.UID=user.UID AND borrowed.BID=book.BID AND BackDate IS NULL ;(2) 图书受欢迎度 b_popular将借阅次数超过 50
10、 次的图书评价置为“受欢迎”create view b_popular asselect borrowed.BID,BName,IF(count(borrowed.BID)3,较差,OK)from borrowed group by UID3、 触发器(1) 借书 库存量 -1delimiter /create trigger borrowbook after insert on borrowed for each rowbeginupdate book set currentnum = currentnum-1 where book.BID = new.BID;end /(2) 还书 库存量
11、 +1delimiter /create trigger returnbook after update on borrowed for each rowbeginif new.BackDate is not null thenupdate book set currentnum = currentnum+1 where book.BID = new.BID;end if;end /4、 安全性该数据库有三个角色 1.用户 user 对 book b_popular u_recdit u_b_not_back user 有查询权限2.图书馆管理员 对 admin 有查询权限,对其余表即使图有查
12、询、删除和更新权限3.系统管理员 拥有整个数据库权限Mysql 无法自定义角色,故省去相关创建角色以及授权代码,替换为 MSSQL 实现用户授权exec sp_addlogin user1,123456exec sp_addrole userexec sp_adduser user1,abcgrant selecte on book, b_popular, u_recdit, u_b_not_backto userexec sp_addrolemember user,abc管理员授权exec sp_addlogin admin1,123456exec sp_addrole adminexec
13、sp_addadmin admin1,librariangrant select , delete , update on book, b_popular, u_recdit, u_b_not_back , user, borrowed to admingrant select on admin to amdinexec sp_addrolemember admin,librarian5、 索引暂无优化方案四、 感想及收货通过本次作业,我对数据库的应用有了更深刻的体会。网络系统都是离不开数据库的支持的。数据库设计的是否合理,直接影响到系统的性能。数据库理论对于实际应用有很大的指导意义。此次图书
14、管理系统的设计让我对数据库的了解更深入,可以把它同实际相结合,同时,又让我学会了一个新的应用软件。 在整个设计过程中,通过怎样对把各个管理信息连接起来的分析,锻炼了我们对事情的分析能力,通过怎样解决过程中出现的问题,提高了我们查找文献的能力、对网络资源的利用能力和和其他同学的交流沟通能力。而且,经历这次的课程设计,我们也学会了自学和分工协作。我觉得每一次的设计,都是让我们对原有的知识从了解表面到深入本质,从个体学习到整体把握的跳跃,对新知识的汲取,更是让我们把课本的知识应用到实际中,让我们了解了我们的学习有什么用,能够解决什么样的问题,增加我们的自信和学习的动力。 本次的图书管理系统,在功能上仅实现了图书,用户,图书类别和订单信息的管理,只是一些非常基础的功能,没有设计添加图书的功能。此外,该系统原先计划设计的一些功能也没有实现。系统完全实现的功能实现图书信息的删除、更改和查看等。 尽管还是有许多的不完善之处,但是总的说来收获颇多