图书管理系统.docx
《图书管理系统.docx》由会员分享,可在线阅读,更多相关《图书管理系统.docx(31页珍藏版)》请在冰豆网上搜索。
图书管理系统
数据库原理
课程设计报告
设计题目:
图书管理系统数据库
小组成员:
赵保燕杨志龙
郝荣敏赵玺玉
专业班级:
信管072
指导教师:
王世波
2009年6月22日至2009年7月3日
目录
一、选题2
二、业务需求分析2
(一)、需求分析阶段的目标与任务3
1.处理对象3
2.处理功能及要求3
3.安全性和完整性要求3
(二)、需求分析文档3
1.图书管理系统业务流程图3
2.图书管理系统数据流程图4
三、概念结构设计6
概念结构设计步骤:
6
四、逻辑结构设计8
(一)、逻辑结构设计的任务8
(二)、数据组织8
1.将E-R图转换为关系模型8
2.模型优化8
3.用户外模式定义9
五、物理结构设计10
(一)、物理设计阶段的目标与任务10
(二)、数据存取方法10
(三)、系统功能模块10
1.读者基本信息的查询和更新模块10
2.图书基本信息的查询和更新模块11
六、数据库创建11
1.建立数据库11
2.建立数据表11
3.建立视图15
4.建立索引17
5.建立触发器17
6.存储过程定义17
七、设计总结20
八、参考文献20
图书管理系统数据库设计
一、选题
随着社会信息量的与日俱增,职场竞争的日趋激烈,越来越多的人更关注知识的积累、能力的培养。
作为信息存储的主要媒体之一图书,数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要使用方便而有效的方式来管理自己的书籍。
在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多。
对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,为了便于图书资料的管理需要有效的图书管理软件。
对于日益扩大的图书馆,查找特定的书目总是借阅者或工作人员劳神费力,有时还没有结果。
因此往往是投入了大量的人力和财力却得不到高效的管理效率。
为了缩短借阅者的等待时间,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,从而达到提高图书借阅信息管理效率的目的,采用数据库技术生成的图书馆借阅管理系统将会极大地方便借阅者并简化图书馆管理人员和工作人员的劳动,使工作人员从繁忙、复杂的工作进入到一个简单、高效的工作中。
本文以高校图书馆管理系统开发过程为背景,全文分为选题、业务需求分析、概念结构设计、逻辑结构设计、物理结构设计,以及系统的实现等全过程。
在程序设计与调试上采用了自上而下,逐步细化,逐步完善的原则。
采用结构化的功能模块设计系统功能,可读性好,易于扩充。
基本功能全面,系统可读性好,易于维护、更新,安全性好。
二、业务需求分析
进行系统设计,首先要对系统的现状进行分析。
根据系统的目标、需求和功能,制定和选择一个较好的系统方案,从而达到一个合理的优化系统。
每个学校都有图书馆,最初由于图书数量和种类较少,人工手动管理比较方便和灵活。
随着社会的发展,图书的数量和种类越来越多,人工手动管理会降低工作的效率,希望建立一个图书管理系统,是为了解决人工手动管理图书信息在实践的问题,从而达到系统化、规范化、标准化的水平。
该系统的建立不但给管理者带来了方便,也节省了工作时间从而提高了工作效率。
需求分析是在于要弄清用户对开发的数据库应用系统的确切要求。
数据库设计的第一步是明确数据库的目的和如何使用,也就是说需要从数据库中得到哪些信息。
明确目的之后,就可以确定您需要保存哪些主题的信息(表),以及每个主题需要保存哪些信息(表中字段)。
在构造系统时,首先从需求出发构造数据库表,然后再由数据库表结合需求计划分系统功能模块。
这样,就把一个大的系统分解成了几个小系统。
这里把系统的层次划分为了四个部分:
图书维护,人员信息管理,图书借阅管理,信息查询。
能够实现以下功能:
(1)、进行新书入库、现有图书信息修改以及删除;
(2)、能够实现对读者基本信息的查询和编辑管理;
(3)、能够进行超期罚款功能;
(4)、能够进行借阅信息的查询功能;
(一)、需求分析阶段的目标与任务
1.处理对象
读者信息:
读者编号,姓名,性别,学号,学院,专业,年级,类型,类别编号,
办证日期
管理员信息:
管理员编号,姓名,性别,权限,登录口令,住址,电话
馆藏图书信息:
图书编号,索书号,图书名称,作者,出版社,单价,摘要,关键字,副本数,分类,出版日期,状态
借阅信息:
图书编号,读者编号,图书名,作者,借阅日期,归还日期,归还日期,应还日期,罚金
借阅历史信息:
图书编号,图书名,借阅日期,还书日期
罚款信息:
读者编号,图书名,借阅日期,应还日期,归还日期,罚款金额,处理状态,
2.处理功能及要求
1).能够存储一定数量的图书信息,并方便有效的进行相应的书籍数据操作和管理,这主要包括:
①图书信息的录入、删除及修改。
②图书信息的多关键字检索查询。
③图书的出借、返还及超期罚款或丢失赔偿。
2).能够对一定数量的读者、管理员进行相应的信息存储与管理,这其中包括:
①读者信息的登记、删除及修改。
②管理员信息的增加、删除及修改。
③读者资料的统计与查询。
3).能够提供一定的安全机制,提供数据信息授权访问,防止随意删改、查询。
4).对查询、统计的结果能够列表显示。
3.安全性和完整性要求
1).安全性要求
系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。
安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。
2).完整性要求
系统完整性要求系统中数据的正确性以及相容性。
可通过建立主、外键,使用check约束,或者通过使用触发器和级联更新。
(二)、需求分析文档
1.图书管理系统业务流程图
2.图书管理系统数据流程图
总体数据流图:
数据流图:
(读者借阅)
图2.3
数据流图:
(读者还书)
图2.4
数据流图:
(管理员添加、删除、修改图书信息)
图2.5
数据流图:
(管理员添加、删除、修改读者信息)
图2.6
数据流图:
(管理员添加、删除、修改系统用户信息)
图2.7
三、概念结构设计
系统开发的总体目标是实现图书馆管理的系统化和自动化,缩短借阅者的等待时间,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,从而达到提高图书管理效率的目的。
主要任务是对读者信息、管理员信息、图书资料信息、借阅信息、归还图书信息、罚款信息的基本信息的操作及外理。
概念结构设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键。
概念结构设计步骤:
1、根据不同的对象,分别画出各分E-R图:
a.从数据流程图图2.3与图2.4抽象出的分E-R图:
b.从数据流程图图2.5抽象出的分E-R图:
c.从数据流程图图2.6抽象出的分E-R图:
d.从数据流程图图2.7抽象出的分E-R图:
2、合并各分E-R图,消除属性冲突、命名冲突、结构冲突等三类冲突,得到初步E-R图,再消除不必要冗余,得到的基本E-R图如下所示:
3、各E-R图各实体的属性如下所示:
图书:
Book(BookID,BookNo,BookName,BookWriter,BookPublish,BookPrice,BookDate,BookClass,BookMain,BookPrim,BookCopy,BookState,BookRN)
读者:
Reader(ReaID,ReaName,ReaSex,ReaNo,ReaLBID,ReaType,ReaDep,ReaGrade,ReaPref,ReaDate)
管理员:
Maneger(MID,MName,MSex,Mpwd,MAuth,MTeleph,MAddre)
馆室:
Room(RoomNo,RoomMID,RoomNum,RoomAddre)
读者类别:
ReaderTpye(LBID,LBName,LBnum,LBbqx,LBqx)
各E-R图中联系的属性如下所示:
借阅信息:
Borrow(BookID,ReaderID,BookName,BookWriter,Outdate,YHdate)
借阅历史:
History(BookID,ReaderID,BookName,BookWriter,Outdate,Indate)
罚款信息:
Fine(BookID,ReaderID,BookName,Outdate,Indate,Fine,CLState,MID)
四、逻辑结构设计
(一)、逻辑结构设计的任务
以上的概念设计阶段是独立于任何一种数据模型的,但是逻辑设计阶段就与选用的DBMS产品发生关系了,系统逻辑设计的任务就是将概念设计阶段设计好的基本E-R图转换为选用DBMS产品所支持的数据模型相符合的逻辑结构。
具体内容包括数据组织(将E-R图转换成关系模型、模型优化、数据库模式定义、用户外模式设计)。
(二)、数据组织
1.将E-R图转换为关系模型
图书:
Book(BookID,BookNo,BookName,BookWriter,BookPublish,BookPrice,BookDate,BookClass,BookMain,BookPrim,BookCopy,BookState,BookRNo)
读者:
Reader(ReaID,ReaName,ReaSex,ReaNo,ReaLBID,ReaType,ReaDep,ReaGrade,ReaPref,ReaDate)
管理员:
Maneger(MID,MName,MSex,Mpwd,MAuth,MTeleph,MAddre)
读者类别:
ReaderTpye(LBID,LBName,LBnum,LBbqx,LBqx)
馆室:
Room(RoomNo,RoomMID,RoomNum,RoomAddre)
借阅信息:
Borrow(BookID,ReaderID,BookName,BookWriter,Outdate,YHdate)
借阅历史:
History(BookID,ReaderID,BookName,BookWriter,Outdate,
Indate,YHdate)
罚款信息:
Fine(BookID,ReaderID,BookName,Outdate,Indate,Fine,CLState,MID)
(注:
标有直线下划线的为主属性,标有波浪线下划线的是外键属性)
2.模型优化
关系模式Book,Reader,Room,ReaderType,Maneger不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF,但是借阅关系模式、借阅历史关系模式、罚款关系模式(Borrow,History,Fine)中存在着一些数据冗余,现将三个关系模型进行合并,消除冗余,优化为:
借阅信息:
Borrow(BookID,ReaderID,BookName,BookWriter,Outdate,Indate,
YHdate,Fine,CLStaer,MID)
3.用户外模式定义
表4.1用户外模式定义
编号
用户外模式(View)
作用(共性:
提供数据保密和安全保护机制)
V-1
BookView
便于查询和修改图书的基本信息
V-2
ReaderView
方便读者基本信息的查询、更新
V-3
HistoryView
便于借阅历史信息的查询
V-4
BorrowView
用于当前借阅信息的查询
V-5
FineView
便于查询罚款信息
表4.2读者基本信息视图
列名
数据类型
可否为空
说明
ReaID
Char
notnull
读者编号
ReaName
Char
notnull
读者姓名
ReaSex
Char
notnull
读者性别
ReaType
Char
读者类型
ReaDep
Char
读者所在学院
ReaDate
Date
l
办证日期
表4.3图书基本信息视图
列名
数据类型
可否为空
说明
BookNo
Char
notnull
图书的索书号
BookName
Char
notnull
图书的书名
BookWriter
Char
notnull
图书作者
BookPulish
Char
notnull
图书出版社
BookState
Char
notnull
图书是否可借
BookRNo
Char
notnull
图书所在馆室号
表4.4读者当前借阅信息视图
列名
数据类型
可否为空
说明
BookID
Char
notnull
图书编号
BookName
Char
notnull
图书名
Outdate
Date
notnull
借阅时间
YHdate
Date
notnull
应还时间
表4.5读者借阅历史信息视图
列名
数据类型
可否为空
说明
BookID
Char
notnull
图书编号
BookName
Char
notnull
图书名
Outdate
Date
notnull
借阅时间
Indate
Date
归还时间
表4.6读者罚款信息视图
列名
数据类型
可否为空
说明
BookID
Char
notnull
图书编号
BookName
Char
notnull
图书名
Outdate
Date
notnull
借阅时间
Indate
Date
归还时间
Fine
Char
notnull
罚款金额
CLState
Char
notnull
处理状态
五、物理结构设计
(一)、物理设计阶段的目标与任务
数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:
1.确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;
2.对物理结构进行评价,评价的重点是时间和空间效率。
(二)、数据存取方法
为数据库中各基本表建立的索引如下:
由于基本表Reader,Book的主码ReaID,BookID经常在查询条件和连接操作的连接条件中出现,且它们的值唯一,在两个属性上建立唯一性索引;
由于基本表Reader的属性ReaDep,Book的属性BookPublish经常在查询条件中出现在两个属性上建立唯一索引;
借阅信息基本表Borrow的一属性ReaID,BookID,经常在查询条件中出现,考虑在其之上建立唯一索引;
(三)、系统功能模块
1.读者基本信息的查询和更新模块
将实现对读者基本信息的查询和更新(修改、添加、删除)操作,用于新生入学,毕业生离校,以及读者补办借阅证或更改信息的情况,具体的功能模块图如下:
2.图书基本信息的查询和更新模块
将完成对图书基本信息的查询、更新(修改、添加、删除)操作,用于读者对图书信息的查询及管理员添加新书、删除淘汰的旧书,具体的功能模块图如下所示:
六、数据库创建
1.建立数据库
CreatedatabaseBook
2.建立数据表
1)读者类别信息表的建立:
表6.1读者类别
列名
数据类型
长度
可否为空
主键
说明
LBID
Char
5
notnull
是
读者类别编号
LBName
Char
20
notnull
读者类别名
LBnum
Char
5
notnull
允许借阅图书最大数
LBbqx
Char
4
notnull
持有图书最长期限
LBqx
Char
3
notnull
借阅证期限
SQL命令如下:
CreatetableReaderType(
LBIDchar(5)primarykey,
LBNamechar(20)notnull,
LBnumchar(5)notnull,
LBbqxchar(4)notnull,
LBqxchar(3)notnull,
)
2)管理员基本信息表的建立:
表6.2管理员
列名
数据类型
长度
可否为空
主键
说明
MID
Char
10
notnull
是
管理员编号
MName
Char
10
notnull
管理员姓名
MSex
Char
2
管理员性别
Mpsw
Char
8
notnull
管理员密码
MAuth
Char
40
notnull
管理员权限
MTeleph
Char
15
管理员电话
MAddre
Char
30
管理员地址
SQL命令如下:
CreatetableManeger(
MIDchar(10)primarykey,
MNamechar(10)notnull,
MSexchar
(2),
Mpwdchar(8)notnull,
MAuthchar(40)notnull,
MTelephchar(15),
MAddrechar(30),
Check(MSex='男'orMSex='女')
)
3)图书馆室基本信息表的建立:
表6.3馆室
列名
数据类型
长度
可否为空
主键
说明
RoomNo
Char
5
notnull
是
馆室号
RoomMID
Char
10
notnull
馆室管理员编号
RoomNum
Char
5
馆室拥有图书数目
RoomAddre
Char
20
馆室地址
SQL命令如下:
CreatetableRoom(
RoomNochar(5)primarykey,
RoomMIDchar(10)notnull,
Roomnumchar(5),
RoomAddrechar(20),
foreignkey(RoomMID)referencesManeger(MID),
)
4)馆藏图书基本信息表的建立:
表6.4馆藏图书
列名
数据类型
长度
可否为空
主键
说明
BookID
Char
9
notnull
是
图书编号
BookNo
Char
20
notnull
图书的索书号
BookName
Char
50
notnull
图书的书名
BookWriter
Char
30
notnull
图书作者
BookPulish
Char
20
notnull
图书出版社
BookPrice
Char
7
图书的单价
BookDate
Date
出版日期
BookClass
Char
20
图书的分类
BookMain
Char
200
图书的摘要
BookPrim
Char
30
图书的关键字
BookCopy
Char
5
图书的副本数
BookState
Char
10
notnull
图书是否可借
BookRNo
Char
5
notnull
图书所在馆室号
SQL命令如下:
CreatetableBook(
BookIDchar(9)primarykey,
BookNochar(20)notnull,
BookNamechar(50)notnull,
BookWriterchar(30)notnull,
BookPublishchar(20)notnull,
BookPricechar(7),
BookDatedatetime,
BookClasschar(20),
BookMainchar(200),
BookPrimchar(30),
BookCopychar(5),
BookStatechar(10)notnull,
BookRNochar(5)notnull,
foreignkey(BookRNo)referencesRoom(RoomNo),
)
5)读者基本信息表的建立:
表6.5读者
列名
数据类型
长度
可否为空
主键
说明
ReaID
Char
9
notnull
是
读者编号
ReaName
Char
10
notnull
读者姓名
ReaSex
Char
2
notnull
读者性别
ReaNo
Char
9
notnull
读者学号
ReaLBID
Char
5
notnull
读者类别编号
ReaType
Char
20
读者类型
ReaDep
Char
20
读者所在学院
ReaPref
Char
5
读者所属专业
ReaGrade
Char
20
读者的年级
ReaDate
Date
notnull
办证日期
SQL命令如下:
CreatetableReader(
ReaIDchar(9)primarykey,
ReaNamechar(10)notnull,
ReaSexchar
(2)notnull,
ReaNochar(9)notnull,
ReaLBIDchar(5)notnull,
ReaTypechar(20),
ReaDepchar(20),
ReaGradechar(5),
ReaPrefchar(20),
ReaDateDatetime,
foreignkey(ReaLBID)referencesReaderType(LBID),
Check(ReaSex='男'orReaSex='女')
)
6)借阅基本信息表的建立:
表6.6借阅
列名
数据类型
长度
可否为空
主键
说明
ReaID
Char
9
notnull
是
读者编号
BookID
Char
9
notnull
是
图书编号
BookName
Char
notnull
图书名
BookWriter
Char
作者
Outdate
Date
notnull
借阅时间
Indate
Date
归还时间
YHdate
D