图书管理系统数据库分析与设计
图书管理系统数据库分析与设计
目录
一、需求分析 .................................................................................................................................. 1
1.1背景 . .................................................................................................................................... 1 1.2功能分析图 . ........................................................................................................................ 1 1.3数据流程图 . ........................................................................................................................ 2 二、概念结构设计........................................................................................................................... 3
2.1分E-R 图 ............................................................................................................................ 3 2.2总E-R 图 ............................................................................................................................ 4 三、逻辑结构设计........................................................................................................................... 5 四、物理结构设计........................................................................................................................... 6
4.1管理员信息表 . .................................................................................................................... 6 4.2读者信息表 . ........................................................................................................................ 7 4.3图书信息表 . ........................................................................................................................ 8 4.4图书借阅登记表 . ................................................................................................................ 8 4.5图书归还登记表 . ................................................................................................................ 9 五、 数据库实施代码 . .................................................................................................................... 9
5.1创建数据库并创建数据表 . ................................................................................................ 9 5.2数据的存储与修改 . .......................................................................................................... 11
5.2.1管理员操作 . ........................................................................................................... 11 5.2.2读者信息 . ............................................................................................................... 12 5.2.3 图书信息 . .............................................................................................................. 12 5.2.4借书与还书 . ........................................................................................................... 13 5.3查询举例 . .......................................................................................................................... 14
5.3.1单表查询 . ............................................................................................................... 14 5.3.2. 连接查询 . ............................................................................................................... 14 5.3.3. 嵌套查询 . ............................................................................................................... 14
六、数据优化 ................................................................................................................................ 14
6.1创建视图 . .......................................................................................................................... 14 6.2创建索引 . .......................................................................................................................... 15 6.3创建触发器 . ...................................................................................................................... 15
收获与体会 .................................................................................................................................... 17
一、需求分析
1.1背景
图书馆在正常运营中面对大量书籍、读者信息以及两者间相互联系产生的借书信息、还书信息。现有的人工记录方法既效率低又错误过多,大大影响了图书馆的正常管理工作。因此需要对书籍资源、读者资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,有利于管理效率的提高。
1.2功能分析图
1.3数据流程图
二、概念结构设计
2.1分E-R 图
(管理员
E-R 图)
(学生E-R 图)
(图书E-R 图)
2.2总E-R 图
(总E-R 图)
设计说明:
上图是该图书管理系统总E-R 图,该系统涉及的实体集有: 学生实体集:具有属性用户名、密码、学号,姓名,性别,院系、班级、电话
图书实体集:具有属性图书ISBN 编号、图书书名、作者、出版社、定价、图书类别、库存
管理员实体集:具有属性用户名、密码、姓名、加入时间 一个学生可以借阅和归还多本图书,所以学生和图书之间的联系为1:n的联系。
一个管理员可以对多本图书进行管理,图书管理员可以有多个,所以管理员和图书之间的联系为m:n的联系。
一个管理员可以对多个读者进行管理,图书管理员可以有多个,所以管理员和学生之间的联系为m:n的联系。
三、逻辑结构设计
将概念模型转换成关系模式 (1) 图书实体集可以转换为关系:
tBook (cBooksISBN ,cBooksName ,cBooksAuthor ,,cBooksType ,
cBooksPrice ,cBooksPublisher ,cBooksStore )
cBooksISBN 表示图书编号,cBooksName 表示图书名称, cBooksAuthor 表示图书作者,cBooksType 表示图书类型,cBooksPrice 表示图书价格,cBooksPublisher 表示图书出版社,cBooksStore 表示图书库存量
(2) 读者实体集可以转换为关系:
tUser (cUsersID ,cUsersPwd ,cUsersNo, cUsersName,cUsersSex ,
cUsersDepart ,cUsersClass ,cUsersTel )
cUsersID 表示读者用户名,cUsersPwd 表示用户密码,cUsersNo 表示读者学号,cUsersName 表示读者姓名,cUsersSex 表示读者性别,cUsersDepart 表示读者院系,cUsersClass 表示读者班级,cUsersTel 表示读者电话
(3) 管理员实体集可以转换为关系:
t Admin(cAdminID ,c AdminPwd ,c AdminName, c Admin AddTime) cAdminID 表示管理员用户名,c AdminPwd表示密码,c AdminName表示管理员姓名c Admin AddTime表示管理员加入时间。 (4) 因为学生和图书之间的联系为1:n 的联系,所以: tUser (cUsersID ,cBooksISBN ) cBooksISBN 表示学生借阅的图书。
(5) 因为管理员和图书之间的联系为m :n 的联系,所以: t Admin(c Admin ID,cBooksISBN ) cBooksISBN 表示管理员管理的图书。
(6) 因为管理员和学生之间的联系为m :n 的联系,所以: t Admin(c Admin ID,cUsersID ) cUsersID 表示管理员管理的学生。
四、物理结构设计
依据关系模式,并结合以上E-R 图,经过转化,即可进行数据库的物理设计。该系统的数据库采用Oracle ,基于以上数据库的逻辑设计,本系统决定采用一个数据库,在其下创建5个数据表,其结构分别如下:
4.1管理员信息表
表4-1管理员信息表(tAdmin )的结构
4.2读者信息表
表4-2读者信息表(tUser )的结构
4.3图书信息表
表4-3图书信息表(tBook )的结构
4.4图书借阅登记表
表4-4图书借阅登记表(tBorrow )的结构
4.5图书归还登记表
表4-5图书归还登记表(tReturn )的结构
五、 数据库实施代码
5.1创建数据库并创建数据表
建管理员表 create table tAdmin
(cAdminID char(6) primary key, cAdminPwd char(6) not null, cAdminName char(10) not null cAsminSex char(2), cAdminAddTime char(10));
建读者表 create table tUser
(cUsersID char(10)primary key, cUsersPwd char(6)not null, cUsersNo char(11)not null, cUsersName char(10) not null, cUsersSex char(2), cUsersDepart char(20), cUsersClass char(6), cUsersTel char(11)); 建图书表
create table book tBook
(cBooksISBN char(13)primary key, cBooksName char(20)not null, cBooksAuthor char(10), cBooksType char(10)not null, cBooksPrice int,
cBooksPublisher char(20),
cBooksStore int); 建借书表
create table tBorrow (cUsersNo char(6)not null,
cUserName char(10) not null, cBooksISBN char(13) not null, cBookName char(20) not null , cUsersBorrow int, )
primary key( cUsersNo,cBooksISBN) 建还书表 create table tReturn (cUsersNo char(6)not null, cUserName char(10) not null, cBooksISBN char(13) not null, cBookName char(20) not null, cBorrowTime char(10) not null cReturnTime char(10) not null,) primary key( cUsersNo,cBooksISBN)
5.2数据的存储与修改
5.2.1管理员操作 管理员注册 insert into tAdmin
values('070411','123456','李志敏', ' 男' ,insert into tAdmin
'2011-6-27');
values('070448','123456','赵林宁', ' 女' ,'2011-6-27'); 管理员注销
delete from tAdmin where cAdminID ='070411'; 5.2.2读者信息 增加读者
insert into tUser(cUsersID,cUsersPwd,cUsersNo,cUsersName, cUsersSex, cUsersDepart,cUsersClass,cUsersTel)
values('070421','123456','[1**********]','郑春龙',' 男',' 计科系','080704','[1**********]');
insert into tUser(cUsersID,cUsersPwd,cUsersNo,cUsersName, cUsersSex, cUsersDepart,cUsersClass,cUsersTel)
values('070433','123456','[1**********]','晋亚丽',' 女',' 计科系','080704','[1**********]'); 删除读者
delete from tUser where cUsersID ='[1**********]'; 修改读者信息 update tUser
set cUsersName='张三', cUsersSex='男' where cUsersID ='[1**********]' 5.2.3 图书信息 增加图书
insert into book(cBooksISBN, cBooksName, cBooksAuthor, cBooksType, cBooksPrice, cBooksPublisher, cBooksStore)
values ('[1**********]73','《围城》',' 三毛',' 小说','29.80',' 人民日报出版社',3);
insert into book(cBooksISBN, cBooksName, cBooksAuthor, cBooksType, cBooksPrice, cBooksPublisher, cBooksStore)
values ('[1**********]25','Java程序设计',' 张墨华',' 计算机','56.50',' 清华大学出版社',7); 删除图书
delete from tBook where cBooksISBN=[1**********]73; 修改图书信息 update tBook
set cBooksName ='《雾》',bauthor='巴金' where cBooksISBN ='[1**********]73'; 5.2.4借书与还书 读者借阅图书
insert into tBorrow (cUsersNo,cUserName,cBooksISBN,cBooksName, cUsersBorrow);
values('070411','李志敏','[1**********]52',' 围城','2011-6-27') 读者归还图书
insert into tReturn(cUsersNo,cUserName,cBooksISBN,cBooksName, cBorrwTime, cReturnTime);
values('070411','李志敏','[1**********]52',' 围城','2011-6-27''2011-7-20');
5.3查询举例
5.3.1单表查询 查询姓李的学生信息
select * from tUser where tUsersName like’李%’; 查询借书同学的信息
select cUsersName from tBorrow ORDER BY cUsersID; 5.3.2. 连接查询
查询所有借书同学的姓名、手机号及所在的院系
select tBorrow.cUsersName,cUsersTel,cUsersDepart from tUser,tBorrow where tUser.cUsersName =tBorrow.cUsersName; 5.3.3. 嵌套查询
查询借某本书的同学的学号、姓名、及联系方式
Select cUsersID,cUsersName,cUsersTel from tUser where cUsersID in(select cUsersID from tBorrow where cBooksISBN=’[1**********]65’)
六、数据优化
数据库的优化主要是指创建视图,索引,以及触发器。以提高查询效率以及扩展该管理系统的功能,使管理员能够更加方便、人性化的对图书进行管理。
6.1创建视图
如创建视图view 图书信息视图
create view i_book as
select*from tBook
where cBooksType like '计算机'
读者信息视图view_count,包含每个读者的姓名、学号和借书数目的信息
create view view_count(cUsersName, cUsersNo, cUsersBorrow,) as
select cUsersNo count(*) from. tBorrow group by cUsersName
6.2创建索引
如在tBook 上创建唯一性索引
Create unique index tBook_ cBooksType on tBook(cBooksType) 在tUser 表上的cUserSex 列上创建一个位图索引 Create bitmap index tUser_sex on tUser(cUserSex)
6.3创建触发器
如创建一个触发器,禁止在周日对图书表进行修改 Create or replace trigger trg_emp_Sunday Begin
If to_char(sysdate, 'DY ', 'nls_date_language=american') In ('SUN') Then
raise_application_error(-20200, 'Can''t operate on Sunday.'); End If;
End trigger_trg_emp_Sunday;
收获与体会
本图书管理系统的数据库分析与设计是由我们小组分工合作利用一周的课余时间完成的,通过这,在这个过程中,我们掌握了系统开发的数据库设计的各个步骤以及文档的书写,例如E —R 图的绘制,物理结构设计等,并且结合实例提高了数据库代码的编写能力。最重要的是我们学会了如何分工合作。
我们的数据库设计基本实现了图书管理系统的学生信息管理、图书信息管理、借书、还书等功能,但是对于大型的图书管可能还有些欠缺,我们会进一步增加其功能以及适用性。另外本组考虑能否添加一个短信提醒功能,即将该系统与读者手机号绑定,当读者所借图书快到还书日期的时会收到该系统的短信提醒,以免读者因种种原因忘记还书而带来不必要的经济损失,当然此功能可能需要更多投资,希望在未来的开发中能够实现。