图书管理系统数据库设计实例chp7448109770.docx
- 文档编号:12268042
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:48
- 大小:574.38KB
图书管理系统数据库设计实例chp7448109770.docx
《图书管理系统数据库设计实例chp7448109770.docx》由会员分享,可在线阅读,更多相关《图书管理系统数据库设计实例chp7448109770.docx(48页珍藏版)》请在冰豆网上搜索。
图书管理系统数据库设计实例chp7448109770
第10章图书管理系统数据库设计实例
通过前面章节对数据库基础知识的学习,本章将通过一个图书管理系统的数据库设计实例来重点讲述如何设计数据库。
在设计数据库的过程中应该遵循哪些设计原则及技巧。
通过本章的数据库实例设计,要求对数据库的整体过程有个概念性的理解,并能通过所学知识,在具体的开发环境下设计一个较优化数据库并实现设计过程。
10.1数据库设计原则及技巧
10.1.1数据库设计原则
随着计算机技术越来越广泛地应用于国民经济的各个领域,在计算机硬件不断微型化的同时,应用系统向着复杂化、大型化的方向发展。
数据库是整个系统的核心,它的设计直接关系系统执行的效率和系统的稳定性。
因此在软件系统开发中,数据库设计应遵循必要的数据库范式理论,以减少冗余、保证数据的完整性与正确性。
只有在合适的数据库产品上设计出合理的数据库模型,才能降低整个系统的编程和维护难度,提高系统的实际运行效率。
虽然对于小项目或中等规模的项目,开发人员可以很容易地利用范式理论设计出一套符合要求的数据库,但对于一个包含大型数据库的软件项目,就必须有一套完整的设计原则与技巧。
1.设计原则
在设计数据库时,至关重要的工作就是要理解为之建模的业务职能和表示这些业务职能的数据库概念及功能,并能准确地设计数据库,进而建立优化的业务模型。
因为数据库的设计在整个系统中是至关重要的一步,一旦数据库设计完成,在进行修改及优化就需花费大量的时间。
因此,再设计数据库时,应考虑以下事项:
1)规范命名。
所有的库名、表名、域名必须遵循统一的命名规则,并进行必要说明,以方便设计、维护、查询。
2)控制字段的引用。
在设计时,可以选择适当的数据库设计管理工具,以方便开发人员的分布式设计和数据小组的集中审核管理。
采用统一的命名规则,如果设计的字段已经存在,可直接引用;否则,应重新设计。
3)库表重复控制。
在设计过程中,如果发现大部分字段都已存在,开发人员应怀疑所设计的库表是否已存在。
通过对字段所在库表及相应设计人员的查询,可以确认库表是否确实重复。
4)并发控制。
设计中应进行并发控制,即对于同一个库表,在同一时间只有一个人有控制权,其他人只能进行查询。
5)必要的讨论。
数据库设计完成后,数据小组应与相关人员进行讨论,通过讨论来熟悉数据库,从而对设计中存在的问题进行控制或从中获取数据库设计的必要信息。
6)数据小组的审核。
库表的定版、修改最终都要通过数据小组的审核,以保证符合必要的要求。
7)头文件处理。
每次数据修改后,数据小组要对相应的头文件进行修改(可由管理软件自动完成),并通知相关的开发人员,以便进行相应的程序修改。
2.设计技巧
分类拆分数据量大的表。
对于经常使用的表(如某些参数表或代码对照表),由于其使用频率很高,要尽量减少表中的记录数量。
例如,银行的户主账表原来设计成一张表,虽然可以方便程序的设计与维护,但经过分析发现,由于数据量太大,会影响数据的迅速定位。
如果将户主账表分别设计为活期户主账、定期户主账及对公户主账等,则可以大大提高查询效率。
索引设计。
对于大的数据库表,合理的索引能够提高整个数据库的操作效率。
在索引设计中,索引字段应挑选重复值较少的字段;在对建有复合索引的字段进行检索时,应注意按照复合索引字段建立的顺序进行。
例如,如果对一个5万多条记录的流水表以日期和流水号为序建立复合索引,由于在该表中日期的重复值接近整个表的记录数,用流水号进行查询所用的时间接近3秒;而如果以流水号为索引字段建立索引进行相同的查询,所用时间不到1秒。
因此在大型数据库设计中,只有进行合理的索引字段选择,才能有效提高整个数据库的操作效率。
数据操作的优化。
在大型数据库中,如何提高数据操作效率值得关注。
例如,每在数据库流水表中增加一笔业务,就必须从流水控制表中取出流水号,并将其流水号的数值加一。
正常情况下,单笔操作的反应速度尚属正常,但当用它进行批量业务处理时,速度会明显减慢。
经过分析发现,每次对流水控制表中的流水号数值加一时都要锁定该表,而该表却是整个系统操作的核心,有可能在操作时被其他进程锁定,因而使整个事务操作速度变慢。
对这一问题的解决的办法是,根据批量业务的总笔数批量申请流水号,并对流水控制表进行一次更新,即可提高批量业务处理的速度。
数据库参数的调整。
数据库参数的调整是一个经验不断积累的过程,应由有经验的系统管理员完成。
以informion数据库为例,记录锁的数目太少会造成锁表的失败;逻辑日志的文件数目太少会造成插入大表失败等,这些问题都应根据实际情况进行必要的调整。
必要的工具。
在整个数据库的开发与设计过程中,可以先开发一些小的应用工具,如自动生成库表的头文件、插入数据的初始化、数据插入的函数封装、错误跟踪或自动显示等,以此提高数据库的设计与开发效率。
避免长事务。
对单个大表的删除或插入操作会带来大事务,解决的办法是对参数进行调整,也可以在插入时对文件进行分割。
对于一个由一系列小事务顺序操作共同构成的长事务(如银行交易系统的日终交易),可以由一系列操作完成整个事务,但其缺点是有可能因整个事务太大而使不能完成,或者,由于偶然的意外而使事务重做所需的时间太长。
较好的解决方法是,把整个事务分解成几个较小的事务,再由应用程序控制整个系统的流程。
这样,如果其中某个事务不成功,则只需重做该事务,因而既可节约时间,又可避免长事务。
适当超前。
计算机技术发展日新月异,数据库的设计必须具有一定前瞻性,不但要满足当前的应用要求,还要考虑未来的业务发展,同时必须有利于扩展或增加应用系统的处理功能。
总之,相对于中小型数据库,大型数据库的设计与开发要复杂得多,因此在设计、开发过程中,除了要遵循数据库范式理论、增加系统的一致性和完整性外,还要在总体上根据具体情况进行分布式设计,紧紧把握集中控制、统一审核的基本原则,保证数据库设计结构紧凑、分布平衡、定位迅速。
在数据库操作上,要采用一定的技巧提高整个应用系统的执行效率,并注意适当超前,以适应不断变化的应用及系统发展的要求。
10.2图书管理系统数据库设计实例
设计一个系统的核心是前期的分析设计,如果前期的分析设计没有合理、正确、可预见且清晰的思路,整个系统就无法实现一个优化的高性能系统。
那么数据库的设计是整个系统设计的关键。
本章重点介绍图书管理系统的数据库设计,而对于数据库应用的什么开发环境设计的系统,本文不再介绍。
从数据库的设计过程可知,数据库设计的首要任务就是需求分析,可见如果需求分析做不好,就不可能设计出一个合理、优化的数据库。
10.2.1数据库设计过程
数据库设计是设计一个数据库管理系统的核心技术,因此,在设计一个系统之前必须设计好数据库,目前数据设计的一般过程分为六个阶段如图10.1所示:
需求分析阶段、概念结构设计阶段、逻辑结构设计阶段、物理结构设计阶段、实施阶段和运行与维护阶段。
1、需求分析阶段:
需求分析阶段的主要任务是指通过充分调查现实世界要处理的对象,详细了解计算机系统的工作情况,明确用户的各种需求,然后确定系统的各项功能。
数据库系统不仅要按照当前的应用要求来设计,而且必须充分考虑今后可能的扩充和改变。
2、概念结构设计阶:
概念结构设计阶段的主要任务是将需求分析阶段所得到的用户需求抽象为概念模型,而描述概念模型的具体工具主要是E-R模型。
如图10.1数据库设计的一般过程
3、逻辑结构设计阶段:
逻辑结构设计阶段的主要任务是把概念结构设计阶段设计的基本E-R模型转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。
具体来说,就是首先将概念结构转换为一般的关系、网状、层次模型,然后将转换来的模型向特定DBMS支持下的数据模型转换,最后对数据模型进行优化。
4、物理结构设计阶段:
物理结构设计阶段的主要任务是为一个指定的逻辑数据模型选取一个符合应用要求的物理结构。
具体来说,就是首先确定数据库的物理结构,即数据库的存取方法和存储结构;然后对数据库的物理结构进行评估,评估的重点是存取时间的长短和存储空间的大小。
5、实施阶段:
实施阶段的主要任务是用RDBMS提供的数据定义语言和其他实用程序将逻辑结构设计和物理结构设计的结果详细描述出来,成为DBMS可以接受的源代码;再经过系统调试产生目标模式,最后完成数据的载入工作。
6、运行与维护:
运行与维护阶段的主要任务包括数据库的转储和恢复,数据库完整性和安全性控制,数据库性能改造、分析和监督,数据库的重构造和重组织。
10.2.2需求分析阶段
10.2.2.1概述
进行系统设计,首先要对系统的现状进行分析。
根据系统的目标、需求和功能,制定和选择一个较好的系统方案,从而达到一个合理的优化系统。
而需求分析是在于要弄清用户对所开发的数据库应用系统的确切要求。
所以,数据库设计的第一步是明确数据库的目的和如何使用,也就是说需要从数据库中得到哪些信息。
明确目的之后,就可以确定您需要保存哪些主题的信息(表),以及每个主题需要保存哪些信息(表中字段)。
在构造系统时,首先从需求出发构造数据库表,然后再由数据库表结合需求划分系统功能模块。
这样,就把一个大的系统分解成了几个小系统。
经过对图书管理系统的分析,因图书数量、规模大,管理信息量大,建立图书管理系统是为了解决人工手动管理图书信息在实践的问题。
这里把系统的层次划分为了四个部分:
图书维护,人员信息管理,图书借阅管理,信息查询。
能够实现以下功能:
1)进行新书入库、现有图书信息修改以及删除;
2)能够实现对读者基本信息的查询和编辑管理;
3)能够进行超期罚款功能;
4)能够进行借阅信息的查询功能;
10.2.2.2需求阶段的目标及任务
需求分析的目标及任务就是为了提取有效的信息,概念模型的抽象化,转化为计算机系统能够识别的信息。
则通过需求分析所得的信息如下:
●处理对象
读者信息:
读者编号,姓名,性别,学号,学院,专业,年级,类型,类别编号,办证日期
管理员信息:
管理员编号,姓名,性别,权限,登录口令,住址,电话
馆藏图书信息:
图书编号,索书号,图书名称,作者,出版社,单价,摘要,关键字,副本数,分类,出版日期,状态
借阅信息:
图书编号,读者编号,图书名,作者,借阅日期,归还日期,归还日期,应还日期,罚金
借阅历史信息:
图书编号,读者编号,图书名,作者,借阅日期,还书日期
罚款信息:
读者编号,图书编号,图书名,作者,借阅日期,应还日期,归还日期,罚款金额,处理状态,管理员编号
●处理功能及要求
用户对图书管理系统的功能及要求如下:
1.能够存储一定数量的图书信息,并方便有效的进行相应的书籍数据操作和管理,这主要包括:
a)图书信息的录入、删除及修改。
b)图书信息的多关键字检索查询。
c)图书的出借、返还及超期罚款或丢失赔偿。
2.能够对一定数量的读者、管理员进行相应的信息存储与管理,这其中包括:
a)读者信息的登记、删除及修改。
b)管理员信息的增加、删除及修改。
c)读者资料的统计与查询。
3.能够提供一定的安全机制,提供数据信息授权访问,防止随意删改、查询。
4.对查询、统计的结果能够列表显示。
10.2.2.3安全性和完整性要求
1)安全性要求
系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。
安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。
2)完整性要求
系统完整性要求系统中数据的正确性以及相容性。
可通过建立主、外键,使用check约束,或者通过使用触发器和级联更新。
在系统进行设计时,一定根据第七章所学知识对数据的安全性及完整性进行设计。
以保证数据库更为完善。
10.2.2.4建立数据业务流程及数据字典
系统需求分析主要是通过对本校图书管理员的咨询、请教,了解我校图书馆的管理规则和运行机制,并通过上网搜索有关图书管理系统的知识,了解到了图书管理的现状,以及在管理中的一些问题,然后通过所了解的文字信息,理解数据业务流程及数据字典,为后期数据库设计提供概念基础。
●图书管理系统业务流程图
本文的业务流程是从读者角度考虑的业务流程图:
●图书管理系统数据流程图
(一)
顶层数据流图:
(二)第2层数据流图:
(读者借阅,读者还书,读者查询,管理员查询,管理员修改)
图10.4第2层数据流图
(三)第3层数据流图:
(读者借阅)
图10.5读者借阅数据流图
(四)第3层数据流图:
(读者还书)
图10.6读者还书数据流图
(五)第3层数据流图:
(查询图书信息,查询读者信息,查询借阅历史,查询罚款信息)
图10.7管理员、读者查询数据流图
(六)第3层数据流图:
(管理员添加、删除、修改图书信息)
图10.8图书的维护数据流图
(七)第3层数据流图:
(管理员添加、删除、修改读者信息)
图10.9更改读者信息的数据流图
(八)第3层数据流图:
(管理员添加、删除、修改管理员信息)
图10.10更改管理员信息的数据流图
●图书管理系统数据字典
(a)数据项:
系统涉及的数据项有44项
表1.1数据项列表
数据项编号
数据项名
数据项含义
与其它数据项的关系
存储结构
别名
DI-1
BookID
图书条码号
char(9)
条码号
DI-2
BookNo
图书索书号
char(10)
索书号
DI-3
BookName
图书名
char(20)
书名
DI-4
BookWriter
图书作者
char(8)
作者
DI-5
BookPublish
图书出版社
char(20)
出版社
DI-6
BookPrice
图书单价
char(7)
单价
DI-7
BookDate
图书出版日期
Date
出版日期
DI-8
BookClass
图书分类
char(20)
类别
DI-9
BookMain
图书摘要
char(200)
摘要
DI-10
BookPrim
图书关键字
char(30)
关键字
DI-11
BookCopy
图书副本数
char(5)
副本数
DI-12
BookState
图书是否可借
char(10)
状态
DI-13
BookRNo
所属馆室号
同RoomNo
char(5)
馆室号
DI-14
ReaID
读者条码号
char(9)
条码号
DI-15
ReaName
读者姓名
char(10)
姓名
DI-16
ReaSex
读者性别
char
(2)
性别
DI-17
ReaNo
读者学号
char(9)
学号
DI-18
ReaLBID
读者类别编号
同LBID
char(5)
类别编号
DI-19
ReaType
读者类型(职务)
char(20)
类型
DI-20
ReaDep
读者所在学院
char(20)
学院
DI-21
ReaGrade
读者所属年级
char(5)
年级
DI-22
ReaPre
读者所读专业
char(20)
专业
DI-23
ReaDate
读者办证时间
Date
办证时间
DI-24
OutDate
借阅日期
Date
借阅时间
DI-25
InDate
归还日期
Date
归还时间
DI-26
YHDate
应还日期
Date
应还时间
DI-27
Fine
罚款金额
char(3)
罚款金额
DI-28
CLState
是否交纳罚金
char(8)
处理状态
DI-29
LBID
类别编号
同ReaLBID
char(5)
类别编号
DI-30
LBName
读者类别名
char(20)
类别名
DI-31
LBnum
允许最多借书数量
char(5)
借阅数量
DI-32
LBbqx
允许最长持有时间
char(4)
借阅期限
DI-33
LBqx
借阅卡有效期
char(3)
有效期限
DI-34
MID
管理员编号
同RoomMID
char(10)
编号
DI-35
MName
管理员姓名
char(10)
姓名
DI-36
MSex
管理员性别
char
(2)
性别
DI-37
Mpwd
管理员口令
char(8)
口令
DI-38
MAuth
管理员权限级别
char(4)
权限级别
DI-39
MTeleph
管理员电话
char(15)
电话
DI-40
MAddre
管理员地址
char(30)
住址
DI-41
RoomNo
馆室号
同BookRNo
char(5)
馆室号
DI-42
RoomMID
馆室管理员编号
同MID
char(10)
编号
DI-43
RoomNum
馆室内图书数目
char(5)
数量
DI-44
RoomAddre
馆室地址
char(20)
地址
(b)数据结构:
表1.2数据结构列表
数据结
构编号
数据结构名
数据结构
含义
组成
DS-1
Book
馆藏图书信息
BookID,BookNo,BookName,BookWriter,
BookPublish,BookPrice,BookDate,BookClass,BookMain,BookPrim,BookCopy,BookState,
BookRNo
DS-2
Reader
读者信息
ReaID,ReaName,ReaSex,ReaNo,ReaLBID,ReaType,ReaDep,ReaGrade,ReaPref,ReaDate,
DS-3
Borrow
借阅信息
BookID,ReaID,BookName,BookWriter,Outdate,YHdate
DS-4
History
借阅历史
BookID,ReaID,BookName,BookWriter,Outdate,Indate
DS-5
Fine
罚款信息
BookID,ReaID,BookName,Outdate,Indate,Fine,CLState,MID
DS-6
ReaderType
读者类别
LBID,LBName,LBnum,LBbqx,LBqx
DS-7
Maneger
管理员信息
MID,MName,MSex,Mpwd,MAuth,MTeleph,MAddre
DS-8
Room
馆室信息
RoomNO,RoomMID,RoomNum,RoomAddre
(c)处理逻辑描述
表1.3处理逻辑列表
处理编号
处理功能
处理过程
PR-1
判断读者查询涉及的功能模块
馆藏图书信息模块、读者信息模块、读者类别信息模块、借阅信息模块、借阅历史信息模块、罚款信息模块、管理员模块、馆室信息模块:
先确定查询所涉及的功能模块;然后,根据要查询的内容,确定查询数据流向;最后显示查询结果。
PR-2
判断图书、读者修改要涉及的模块,同时把相应的修改数据传到相应的模块之中
馆藏图书信息模块、读者信息模块、读者类别信息模块、管理员信息模块、馆室信息模块:
先确定更新所涉及的功能模块;然后,把更新信息传送到相应的模块中;最后,进行相应的更新操作。
10.2.3概念分析阶段
概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键。
本图书管理系统的主要任务及目标如下:
(1)选择中层数据流为切入点,通常选择实际系统中的子系统;
(2)设计分E-R图,即各子模块的E-R图;
(3)生成初步E-R图,通过合并方法,做到各子系统实体、属性、联系统一;
(4)生成全局E-R图,通过消除冲突等方面。
在本图书管理系统中,从第3层数据流程图下手。
分析各3层数据流图和数据字典,知道整个系统功能围绕“读者”、“管理员”和“图书”的处理。
根据实体与属性间的两条准则:
①作为“属性”,不能再具有需要描述的性质。
②“属性”不能与其他实体具有联系。
数据流程图10.5、图10.6、图10.7可综合成借阅子系统的分E-R图10.11,数据流程图10.8可抽象为分E-R图10.12,数据流程图10.9可抽象为分E-R图10.13,数据流程图10.10可抽象为分E-R图10.14。
然后采用逐步集成的方式将各分E-R图合并,消除不必要的冗余和冲突后就生成了基本E-R图10.15。
其各个E-R图如下:
(1)根据不同的对象,从第3层数据流程图入手,分别画出各分E-R图:
(a)从数据流程图10.5、图10.6、图10.7抽象出的分E-R图:
图10.11分E-R图
(b)从数据流程图10.8可抽象为分E-R图:
图10.12分E-R图
(c)从数据流程图10.9抽象出的分E-R图:
图10.13分E-R图
(d)从数据流程图10.10抽象出的分E-R图:
图10.14分E-R图
(2)合并各分E-R图,消除属性冲突、命名冲突、结构冲突等三类冲突,得到初步E-R图,再消除不必要冗余,得到的基本E-R图如下所示:
图10.15分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)
10.2.4逻辑设计阶段
以上的概念设计阶段是独立于任何一种数据模型的,但是逻辑设计阶段就与选用的DBMS产品发生关系了,系统逻辑设计的任务就是将概念设计阶段设计好的基本E-R图转换为选用DBMS产品所支持的数据模型相符合的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 数据库 设计 实例 chp7448109770