数据库设计范例—图书管理系统

上传人:bei****lei 文档编号:115338185 上传时间:2022-07-01 格式:DOC 页数:34 大小:1.16MB
收藏 版权申诉 举报 下载
数据库设计范例—图书管理系统_第1页
第1页 / 共34页
数据库设计范例—图书管理系统_第2页
第2页 / 共34页
数据库设计范例—图书管理系统_第3页
第3页 / 共34页
资源描述:

《数据库设计范例—图书管理系统》由会员分享,可在线阅读,更多相关《数据库设计范例—图书管理系统(34页珍藏版)》请在装配图网上搜索。

1、第10章 图书管理系统数据库设计实例通过前面章节对数据库基础知识的学习,本章将通过一个图书管理系统的数据库设计实例来重点讲述如何设计数据库。在设计数据库的过程中应该遵循哪些设计原则及技巧。通过本章的数据库实例设计,要求对数据库的整体过程有个概念性的理解,并能通过所学知识,在具体的开发环境下设计一个较优化数据库并实现设计过程。10.1 数据库设计原则及技巧10.1.1数据库设计原则随着计算机技术越来越广泛地应用于国民经济的各个领域,在计算机硬件不断微型化的同时,应用系统向着复杂化、大型化的方向发展。数据库是整个系统的核心,它的设计直接关系系统执行的效率和系统的稳定性。因此在软件系统开发中,数据库

2、设计应遵循必要的数据库范式理论,以减少冗余、保证数据的完整性与正确性。只有在合适的数据库产品上设计出合理的数据库模型,才能降低整个系统的编程和维护难度,提高系统的实际运行效率。虽然对于小项目或中等规模的项目,开发人员可以很容易地利用范式理论设计出一套符合要求的数据库,但对于一个包含大型数据库的软件项目,就必须有一套完整的设计原则与技巧。1. 设计原则在设计数据库时,至关重要的工作就是要理解为之建模的业务职能和表示这些业务职能的数据库概念及功能,并能准确地设计数据库,进而建立优化的业务模型。因为数据库的设计在整个系统中是至关重要的一步,一旦数据库设计完成,在进行修改及优化就需花费大量的时间。因此

3、,再设计数据库时,应考虑以下事项:1) 规范命名。所有的库名、表名、域名必须遵循统一的命名规则,并进行必要说明,以方便设计、维护、查询。2) 控制字段的引用。在设计时,可以选择适当的数据库设计管理工具,以方便开发人员的分布式设计和数据小组的集中审核管理。采用统一的命名规则,如果设计的字段已经存在,可直接引用;否则,应重新设计。3) 库表重复控制。在设计过程中,如果发现大部分字段都已存在,开发人员应怀疑所设计的库表是否已存在。通过对字段所在库表及相应设计人员的查询,可以确认库表是否确实重复。4) 并发控制。设计中应进行并发控制,即对于同一个库表,在同一时间只有一个人有控制权,其他人只能进行查询。

4、5) 必要的讨论。数据库设计完成后,数据小组应与相关人员进行讨论,通过讨论来熟悉数据库,从而对设计中存在的问题进行控制或从中获取数据库设计的必要信息。6) 数据小组的审核。库表的定版、修改最终都要通过数据小组的审核,以保证符合必要的要求。7) 头文件处理。每次数据修改后,数据小组要对相应的头文件进行修改(可由管理软件自动完成),并通知相关的开发人员,以便进行相应的程序修改。2.设计技巧分类拆分数据量大的表。对于经常使用的表(如某些参数表或代码对照表),由于其使用频率很高,要尽量减少表中的记录数量。例如,银行的户主账表原来设计成一张表,虽然可以方便程序的设计与维护,但经过分析发现,由于数据量太大

5、,会影响数据的迅速定位。如果将户主账表分别设计为活期户主账、定期户主账及对公户主账等,则可以大大提高查询效率。索引设计。对于大的数据库表,合理的索引能够提高整个数据库的操作效率。在索引设计中,索引字段应挑选重复值较少的字段;在对建有复合索引的字段进行检索时,应注意按照复合索引字段建立的顺序进行。例如,如果对一个万多条记录的流水表以日期和流水号为序建立复合索引,由于在该表中日期的重复值接近整个表的记录数,用流水号进行查询所用的时间接近秒;而如果以流水号为索引字段建立索引进行相同的查询,所用时间不到秒。因此在大型数据库设计中,只有进行合理的索引字段选择,才能有效提高整个数据库的操作效率。数据操作的

6、优化。在大型数据库中,如何提高数据操作效率值得关注。例如,每在数据库流水表中增加一笔业务,就必须从流水控制表中取出流水号,并将其流水号的数值加一。正常情况下,单笔操作的反应速度尚属正常,但当用它进行批量业务处理时,速度会明显减慢。经过分析发现,每次对流水控制表中的流水号数值加一时都要锁定该表,而该表却是整个系统操作的核心,有可能在操作时被其他进程锁定,因而使整个事务操作速度变慢。对这一问题的解决的办法是,根据批量业务的总笔数批量申请流水号,并对流水控制表进行一次更新,即可提高批量业务处理的速度。数据库参数的调整。数据库参数的调整是一个经验不断积累的过程,应由有经验的系统管理员完成。以infor

7、mion数据库为例,记录锁的数目太少会造成锁表的失败;逻辑日志的文件数目太少会造成插入大表失败等,这些问题都应根据实际情况进行必要的调整。必要的工具。在整个数据库的开发与设计过程中,可以先开发一些小的应用工具,如自动生成库表的头文件、插入数据的初始化、数据插入的函数封装、错误跟踪或自动显示等,以此提高数据库的设计与开发效率。避免长事务。对单个大表的删除或插入操作会带来大事务,解决的办法是对参数进行调整,也可以在插入时对文件进行分割。对于一个由一系列小事务顺序操作共同构成的长事务(如银行交易系统的日终交易),可以由一系列操作完成整个事务,但其缺点是有可能因整个事务太大而使不能完成,或者,由于偶然

8、的意外而使事务重做所需的时间太长。较好的解决方法是,把整个事务分解成几个较小的事务,再由应用程序控制整个系统的流程。这样,如果其中某个事务不成功,则只需重做该事务,因而既可节约时间,又可避免长事务。适当超前。计算机技术发展日新月异,数据库的设计必须具有一定前瞻性,不但要满足当前的应用要求,还要考虑未来的业务发展,同时必须有利于扩展或增加应用系统的处理功能。总之,相对于中小型数据库,大型数据库的设计与开发要复杂得多,因此在设计、开发过程中,除了要遵循数据库范式理论、增加系统的一致性和完整性外,还要在总体上根据具体情况进行分布式设计,紧紧把握集中控制、统一审核的基本原则,保证数据库设计结构紧凑、分

9、布平衡、定位迅速。在数据库操作上,要采用一定的技巧提高整个应用系统的执行效率,并注意适当超前,以适应不断变化的应用及系统发展的要求。10.2 图书管理系统数据库设计实例设计一个系统的核心是前期的分析设计,如果前期的分析设计没有合理、正确、可预见且清晰的思路,整个系统就无法实现一个优化的高性能系统。那么数据库的设计是整个系统设计的关键。本章重点介绍图书管理系统的数据库设计,而对于数据库应用的什么开发环境设计的系统,本文不再介绍。从数据库的设计过程可知,数据库设计的首要任务就是需求分析,可见如果需求分析做不好,就不可能设计出一个合理、优化的数据库。10.2.1数据库设计过程数据库设计是设计一个数据

10、库管理系统的核心技术,因此,在设计一个系统之前必须设计好数据库,目前数据设计的一般过程分为六个阶段如图10.1所示:需求分析阶段、概念结构设计阶段、逻辑结构设计阶段、物理结构设计阶段、实施阶段和运行与维护阶段。1、需求分析阶段:需求分析阶段的主要任务是指通过充分调查现实世界要处理的对象, 详细了解计算机系统的工作情况, 明确用户的各种需求, 然后确定系统的各项功能。数据库系统不仅要按照当前的应用要求来设计, 而且必须充分考虑今后可能的扩充和改变。 2、概念结构设计阶:概念结构设计阶段的主要任务是将需求分析阶段所得到的用户需求抽象为概念模型, 而描述概念模型的具体工具主要是E-R模型。 如图10

11、.1 数据库设计的一般过程3、逻辑结构设计阶段:逻辑结构设计阶段的主要任务是把概念结构设计阶段设计的基本E-R模型转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。具体来说, 就是首先将概念结构转换为一般的关系、网状、层次模型, 然后将转换来的模型向特定DBMS支持下的数据模型转换, 最后对数据模型进行优化。 4、物理结构设计阶段:物理结构设计阶段的主要任务是为一个指定的逻辑数据模型选取一个符合应用要求的物理结构。具体来说, 就是首先确定数据库的物理结构, 即数据库的存取方法和存储结构;然后对数据库的物理结构进行评估, 评估的重点是存取时间的长短和存储空间的大小。5、实施阶段:实施阶段

12、的主要任务是用RDBMS 提供的数据定义语言和其他实用程序将逻辑结构设计和物理结构设计的结果详细描述出来,成为DBMS 可以接受的源代码;再经过系统调试产生目标模式, 最后完成数据的载入工作。 6、运行与维护:运行与维护阶段的主要任务包括数据库的转储和恢复, 数据库完整性和安全性控制, 数据库性能改造、分析和监督, 数据库的重构造和重组织。10.2.2需求分析阶段 10.2.2.1 概述进行系统设计,首先要对系统的现状进行分析。根据系统的目标、需求和功能,制定和选择一个较好的系统方案,从而达到一个合理的优化系统。而需求分析是在于要弄清用户对所开发的数据库应用系统的确切要求。所以,数据库设计的第

13、一步是明确数据库的目的和如何使用,也就是说需要从数据库中得到哪些信息。明确目的之后,就可以确定您需要保存哪些主题的信息(表),以及每个主题需要保存哪些信息(表中字段)。在构造系统时,首先从需求出发构造数据库表,然后再由数据库表结合需求划分系统功能模块。这样,就把一个大的系统分解成了几个小系统。经过对图书管理系统的分析,因图书数量、规模大,管理信息量大,建立图书管理系统是为了解决人工手动管理图书信息在实践的问题。这里把系统的层次划分为了四个部分:图书维护,人员信息管理,图书借阅管理,信息查询。能够实现以下功能:1) 进行新书入库、现有图书信息修改以及删除;2) 能够实现对读者基本信息的查询和编辑

14、管理;3) 能够进行超期罚款功能;4) 能够进行借阅信息的查询功能;10.2.2.2 需求阶段的目标及任务需求分析的目标及任务就是为了提取有效的信息,概念模型的抽象化,转化为计算机系统能够识别的信息。则通过需求分析所得的信息如下:l 处理对象读者信息:读者编号,姓名,性别,学号,学院,专业,年级,类型,类别编号,办证日期管理员信息:管理员编号,姓名,性别,权限,登录口令,住址,电话馆藏图书信息:图书编号,索书号,图书名称,作者,出版社,单价,摘要,关键字,副本数,分类,出版日期,状态借阅信息:图书编号,读者编号,图书名,作者,借阅日期,归还日期,归还日期,应还日期,罚金借阅历史信息:图书编号,

15、读者编号,图书名,作者,借阅日期,还书日期罚款信息:读者编号,图书编号,图书名,作者,借阅日期,应还日期,归还日期,罚款金额,处理状态,管理员编号l 处理功能及要求用户对图书管理系统的功能及要求如下:1. 能够存储一定数量的图书信息,并方便有效的进行相应的书籍数据操作和管理,这主要包括:a) 图书信息的录入、删除及修改。b) 图书信息的多关键字检索查询。c) 图书的出借、返还及超期罚款或丢失赔偿。2. 能够对一定数量的读者、管理员进行相应的信息存储与管理,这其中包括:a) 读者信息的登记、删除及修改。b) 管理员信息的增加、删除及修改。c) 读者资料的统计与查询。3. 能够提供一定的安全机制,

16、提供数据信息授权访问,防止随意删改、查询。4. 对查询、统计的结果能够列表显示。10.2.2.3安全性和完整性要求1) 安全性要求系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。2) 完整性要求系统完整性要求系统中数据的正确性以及相容性。可通过建立主、外键,使用check约束,或者通过使用触发器和级联更新。在系统进

17、行设计时,一定根据第七章所学知识对数据的安全性及完整性进行设计。以保证数据库更为完善。10.2.2.4 建立数据业务流程及数据字典系统需求分析主要是通过对本校图书管理员的咨询、请教,了解我校图书馆的管理规则和运行机制,并通过上网搜索有关图书管理系统的知识,了解到了图书管理的现状,以及在管理中的一些问题,然后通过所了解的文字信息,理解数据业务流程及数据字典,为后期数据库设计提供概念基础。l 图书管理系统业务流程图图10.2 图书管理系统业务流程图本文的业务流程是从读者角度考虑的业务流程图:l 图书管理系统数据流程图图 10.3 顶层数据流(一) 顶层数据流图:(二) 第2层数据流图:(读者借阅,

18、读者还书,读者查询,管理员查询,管理员修改)图10.4第2层数据流图(三) 第3层数据流图:(读者借阅)图10.5 读者借阅数据流图(四) 第3层数据流图:(读者还书)图10.6 读者还书数据流图(五) 第3层数据流图:(查询图书信息,查询读者信息,查询借阅历史,查询罚款信息)图10.7管理员、读者查询数据流图(六) 第3层数据流图:(管理员添加、删除、修改图书信息)图10.8 图书的维护数据流图(七) 第3层数据流图:(管理员添加、删除、修改读者信息)图10.9 更改读者信息的数据流图(八) 第3层数据流图:(管理员添加、删除、修改管理员信息)图10.10 更改管理员信息的数据流图l 图书管

19、理系统数据字典(a)数据项:系统涉及的数据项有44项表1.1 数据项列表数据项编号数据项名数据项含义与其它数据项的关系存储结构别名DI-1BookID图书条码号char(9)条码号DI-2BookNo图书索书号char(10)索书号DI-3BookName图书名char(20)书名DI-4BookWriter图书作者char(8)作者DI-5BookPublish图书出版社char(20)出版社DI-6BookPrice图书单价char(7)单价DI-7BookDate图书出版日期Date出版日期DI-8BookClass图书分类char(20)类别DI-9BookMain图书摘要char (

20、200)摘要DI-10BookPrim图书关键字char (30)关键字DI-11BookCopy图书副本数char (5)副本数DI-12BookState图书是否可借char(10)状态DI-13BookRNo所属馆室号同RoomNochar(5)馆室号DI-14ReaID读者条码号char(9)条码号DI-15ReaName读者姓名char(10)姓名DI-16ReaSex读者性别char(2)性别DI-17ReaNo读者学号char (9)学号DI-18ReaLBID读者类别编号同LBIDchar(5)类别编号DI-19ReaType读者类型(职务)char(20)类型DI-20Rea

21、Dep读者所在学院char(20)学院DI-21ReaGrade读者所属年级char(5)年级DI-22ReaPre读者所读专业char(20)专业DI-23ReaDate读者办证时间Date办证时间DI-24OutDate借阅日期Date借阅时间DI-25InDate归还日期Date归还时间DI-26YHDate应还日期Date应还时间DI-27Fine罚款金额char(3)罚款金额DI-28CLState是否交纳罚金char(8)处理状态DI-29LBID类别编号同ReaLBIDchar(5)类别编号DI-30LBName读者类别名char(20)类别名DI-31LBnum允许最多借书数量

22、char(5)借阅数量DI-32LBbqx允许最长持有时间char(4)借阅期限DI-33LBqx借阅卡有效期char(3)有效期限DI-34MID管理员编号同RoomMIDchar(10)编号DI-35MName管理员姓名char(10)姓名DI-36MSex管理员性别char(2)性别DI-37Mpwd管理员口令char(8)口令DI-38MAuth管理员权限级别char(4)权限级别DI-39MTeleph管理员电话char(15)电话DI-40MAddre管理员地址char(30)住址DI-41RoomNo馆室号同BookRNochar(5)馆室号DI-42RoomMID馆室管理员编号

23、同MIDchar(10)编号DI-43RoomNum馆室内图书数目char(5)数量DI-44RoomAddre馆室地址char(20)地址(b)数据结构:表1.2 数据结构列表数据结构编号数据结构名数据结构含义组成DS-1Book馆藏图书信息BookID,BookNo,BookName,BookWriter,BookPublish,BookPrice,BookDate,BookClass, BookMain,BookPrim,BookCopy,BookState,BookRNo DS-2Reader读者信息ReaID, ReaName, ReaSex, ReaNo, ReaLBID, Rea

24、Type, ReaDep, ReaGrade, ReaPref, ReaDate, DS-3Borrow借阅信息BookID,ReaID,BookName,BookWriter, Outdate,YHdateDS-4History借阅历史BookID,ReaID,BookName,BookWriter, Outdate,IndateDS-5Fine罚款信息BookID,ReaID,BookName,Outdate,Indate,Fine, CLState,MIDDS-6ReaderType读者类别LBID, LBName, LBnum, LBbqx, LBqxDS-7Maneger管理员信息M

25、ID,MName,MSex,Mpwd,MAuth,MTeleph,MAddreDS-8Room馆室信息RoomNO, RoomMID, RoomNum, RoomAddre (c)处理逻辑描述表1.3 处理逻辑列表处理编号处理功能处理过程PR-1判断读者查询涉及的功能模块馆藏图书信息模块、读者信息模块、读者类别信息模块、借阅信息模块、借阅历史信息模块、罚款信息模块、管理员模块、馆室信息模块:先确定查询所涉及的功能模块;然后,根据要查询的内容,确定查询数据流向;最后显示查询结果。PR-2判断图书、读者修改要涉及的模块,同时把相应的修改数据传到相应的模块之中馆藏图书信息模块、读者信息模块、读者类别

26、信息模块、管理员信息模块、馆室信息模块:先确定更新所涉及的功能模块;然后,把更新信息传送到相应的模块中;最后,进行相应的更新操作。10.2.3概念分析阶段概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键。本图书管理系统的主要任务及目标如下:(1) 选择中层数据流为切入点,通常选择实际系统中的子系统;(2) 设计分E-R图,即各子模块的E-R图;(3) 生成初步E-R图,通过合并方法,做到各子系统实体、属性、联系统一;(4) 生成全局E-R图,通过消除冲突等方面。在本图书管理系统中,从第3层数据流程图下手。分析各3层数据流图和数据字典,知道

27、整个系统功能围绕“读者”、“管理员”和“图书”的处理。根据实体与属性间的两条准则: 作为“属性”,不能再具有需要描述的性质。 “属性”不能与其他实体具有联系。数据流程图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。其各个ER图如下:(1)根据不同的对象,从第3层数据流程图入手,分别画出各分ER图:(a)从数据流程图10.5

28、、图10.6、图10.7抽象出的分ER图:图10.11 分E-R图(b)从数据流程图10.8可抽象为分E-R图:图10.12 分E-R图(c)从数据流程图10.9抽象出的分ER图:图10.13 分E-R图(d)从数据流程图10.10抽象出的分ER图:图10.14 分E-R图(2)合并各分图,消除属性冲突、命名冲突、结构冲突等三类冲突,得到初步E-R图,再消除不必要冗余,得到的基本E-R图如下所示:图10.15 分E-R图(3)各ER图各实体的属性如下所示:图书:Book(BookID, BookNo, BookName, BookWriter, BookPublish, BookPrice,

29、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,

30、LBbqx, LBqx) 各ER图中联系的属性如下所示:借阅信息: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产品发生关系了,系统逻辑设计的任务就

31、是将概念设计阶段设计好的基本E-R图转换为选用DBMS产品所支持的数据模型相符合的逻辑结构。具体内容包括数据组织(将E-R图转换成关系模型、模型优化、数据库模式定义、用户子模式设计)、数据处理(画出系统功能模块图)两大任务。10.2.4.1数据组织1. 将E-R图转换为关系模型实体型转换为关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体间的联系则有以下不同的情况:一个m:n联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独

32、立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。具有相同码的关系模式可合并。由于读者类别与读者、馆室与图书的联系方式是1:n(一对多),可以将其之间的联系与n端实体读者、图书合并,管理员与图书之间的维护联系也是1:n(一对多),同样也将其之间的联系与n端实体合并,而读者与图书之间的借阅和归还联系方式则是n:m

33、(多对多),这样要把它们之间的联系转化为独立的关系模式,读者与管理员之间的罚款联系是m:n(多对多),将其联系也转化成独立的关系模式,具体的基本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

34、, 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)罚款信息:Fin

35、e (BookID,ReaderID,BookName,Outdate,Indate,Fine, CLState,MID) (注:标有直线下划线的为主属性,标有波浪线下划线的是外键属性,主属性与外键属性一起构成主码)2. 模型优化关系模式Book,Reader,Room,ReaderType ,Maneger不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF,但是借阅关系模式、借阅历史关系模式、罚款关系模式(Borrow,History,Fine)中存在着一些数据冗余,现将三个关系模型进行合并,消除冗余,优化为:借阅信息:Borrow ( BookID,ReaderI

36、D,BookName,BookWriter,Outdate,Indate,YHdate,Fine,CLStaer,MID)3. 数据库模式定义根据分析,本数据库共创建如下6个表。表10.1 馆藏图书信息表列名数据类型可否为空说明BookIDCharnot null图书编号BookNoCharnot null图书的索书号BookNameCharnot null图书的书名BookWriterCharnot null图书作者BookPulishCharnot null图书出版社BookPriceChar图书的单价BookDateDate出版日期BookClassChar图书的分类BookMainCh

37、ar图书的摘要BookPrimChar图书的关键字BookCopyChar图书的副本数BookStateCharnot null图书是否可借BookRNoCharnot null图书所在馆室号表10.2 读者信息表列名数据类型可否为空说明ReaIDCharnot null读者编号ReaNameCharnot null读者姓名ReaSexCharnot null读者性别ReaNoCharnot null读者学号ReaLBIDCharnot null读者类别编号ReaTypeChar读者类型ReaDepChar读者所在学院ReaPrefChar读者所属专业ReaGradeChar读者的年级ReaD

38、ateDatenot null办证日期表10.3 管理员信息表列名数据类型可否为空说明MIDCharnot null管理员编号MNameCharnot null管理员姓名MSexChar管理员性别MpswCharnot null管理员密码MAuthCharnot null管理员权限MTelephChar管理员电话MAddreChar管理员地址表10.4 馆室信息表列名数据类型可否为空说明RoomNoCharnot null馆室号RoomMIDCharnot null馆室管理员编号RoomNumChar馆室拥有图书数目RoomAddreChar馆室地址表10.5 读者类别信息表列名数据类型可否为

39、空说明LBIDCharnot null读者类别编号LBNameCharnot null读者类别名LBnumCharnot null允许借阅图书最大数LBbqxCharnot null持有图书最长期限LBqxCharnot null借阅证期限表10.6 借阅信息表列名数据类型可否为空说明ReaIDCharnot null读者编号BookIDCharnot null图书编号BookNameCharnot null图书名BookWriterChar作者OutdateDatenot null借阅时间IndateDate归还时间YHdateDatenot null应还时间FineChar罚款金额CLSt

40、ateChar处理状态MIDCharnot null管理员编号4. 用户子模式定义表10.7 用户子模式定义编号用户子模式(View)作用(共性:提供数据保密和安全保护机制)V1BookView便于查询和修改图书的基本信息V2ReaderView方便读者基本信息的查询、更新V3HistoryView便于借阅历史信息的查询V4BorrowView用于当前借阅信息的查询V5FineView便于查询罚款信息表10.8 读者基本信息视图列名数据类型可否为空说明ReaIDCharnot null读者编号ReaNameCharnot null读者姓名ReaSexCharnot null读者性别ReaTyp

41、eChar读者类型ReaDepChar读者所在学院ReaDateDatel办证日期表10.9 图书基本信息视图列名数据类型可否为空说明BookNoCharnot null图书的索书号BookNameCharnot null图书的书名BookWriterCharnot null图书作者BookPulishCharnot null图书出版社BookStateCharnot null图书是否可借BookRNoCharnot null图书所在馆室号表10.10 读者当前借阅信息视图列名数据类型可否为空说明BookIDCharnot null图书编号BookNameCharnot null图书名Outd

42、ateDatenot null借阅时间YHdateDatenot null应还时间表10.11 读者借阅历史信息视图列名数据类型可否为空说明BookIDCharnot null图书编号BookNameCharnot null图书名OutdateDatenot null借阅时间IndateDate归还时间表10.12 读者罚款信息视图列名数据类型可否为空说明BookIDCharnot null图书编号BookNameCharnot null图书名OutdateDatenot null借阅时间IndateDate归还时间FineCharnot null罚款金额CLStateCharnot null

43、处理状态10.2.4.2 数据处理结合系统的需求,本系统的基本的系统功能模块如下图10.16。图10.16 系统功能模块图10.2.5物理设计阶段 数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;(2)对物理结构进行评价,评价的重点是时间和空间效率。10.2.5.1数据存储方面为数据库中各基本表建立的索引如下:1) 由于基本表Reader,Book的主码ReaID,BookID经常在查询条件和连接操作的连接条件中出现,且它们的值唯一,在两个属性上建立唯一性索引;2) 由于基

44、本表Reader的属性ReaDep,Book的属性BookPublish经常在查询条件中出现在两个属性上建立聚簇索引;3) 借阅信息基本表Borrow的一属性ReaID,BookID,经常在查询条件中出现,考虑在其之上建立聚簇索引;4) 罚款信息基本表Fine的一属性ReaID,BookID,经常在查询条件中出现,考虑在其之上建立聚簇索引;10.2.5.2系统功能模块(一) 读者基本信息的查询和更新模块将实现对读者基本信息的查询和更新(修改、添加、删除)操作,用于新生入学,毕业生离校,以及读者补办借阅证或更改信息的情况,具体的功能模块图如下:图10.17 读者信息的查询和更新模块(二) 图书基

45、本信息的查询和更新模块将完成对图书基本信息的查询、更新(修改、添加、删除)操作,用于读者对图书信息的查询及管理员添加新书、删除淘汰的旧书,具体的功能模块图如下所示:图10.18图书信息的查询和更新模块10.2.6数据库实施阶段10.2.6.1建立数据库、数据表、视图、索引(一) 建立数据库create database Book;(二) 建立数据表1) 读者类别信息表的建立:create table ReaderType(LBID char(5) primary key,LBName char(20) not null,LBnum char(5) not null,LBbqx char(4)

46、not null,LBqx char(3) not null,)2) 管理员基本信息表的建立:create table Maneger(MID char(10) primary key,MName char(10) not null,MSex char(2),Mpwd char(8) not null,MAuth char(40) not null,MTeleph char(15),MAddre char(30),check(MSex =男 or MSex =女)3) 图书馆室基本信息表的建立:create table Room(RoomNo char(5) primary key,RoomM

47、ID char(10) not null,Roomnum char(5),RoomAddre char(20),foreign key(RoomMID) references Maneger(MID),)4) 馆藏图书基本信息表的建立:create table Book( BookID char(9) primary key, BookNo char(20) not null, BookName char(50) not null, BookWriter char(30) not null, BookPublish char(20) not null, BookPrice char(7), B

48、ookDate datetime, BookClass char(20), BookMain char(200), BookPrim char(30), BookCopy char(5), BookState char(10) not null, BookRNo char(5) not null,foreign key(BookRNo) references Room(RoomNo),)5) 读者基本信息表的建立:create table Reader(ReaID char(9) primary key,ReaName char(10) not null,ReaSex char(2) not

49、null,ReaNo char(9) not null,ReaLBID char(5) not null,ReaType char(20),ReaDep char(20),ReaGrade char(5),ReaPref char(20),ReaDate Datetime,foreign key(ReaLBID) references ReaderType(LBID),check(ReaSex =男 or ReaSex =女)6) 借阅基本信息表的建立:create table Borrow(BookID char(9),ReaID char(9),Outdate Datetime not n

50、ull,YHdate Datetime not null,Indate Datetime,Fine char(5),CLState char(8),MID char(10) not null,primary key(BookID,ReaID),foreign key(MID) references Maneger(MID)(三) 建立视图(1)用于查询图书基本信息的视图定义如下: create view Bookview (索书号, 书名, 作者, 出版社, 图书状态)asselect BookNo,BookName,BookWriter,BookPublish,BookStatefrom B

51、ook(2)用于读者基本信息查询的视图定义如下:create view Readerview (读者姓名,类型,学院,专业,办证日期)asselect ReaName,ReaType,ReaDep,ReaPref,ReaDatefrom Reader(3)用于显示当前借阅基本信息的视图定义如下:create view Borrowview (读者编号,书名,作者,借阅日期,到期日期)asselect ReaID,BookName,BookWriter,Outdate,YHdatefrom Borrow,Bookwhere Borrow.BookID=Book.BookID and Borrow

52、.Indate is null(4)用于借阅历史信息查询的视图定义如下:create view Historyview (读者编号,书名,借阅日期,归还日期)asselect ReaID,BookName,Outdate,Indatefrom Borrow,Bookwhere Borrow.BookID=Book.BookID and Borrow.Indate is not null(5)用于查询罚款信息的视图定义如下:create view Fineview (读者编号,书名,借阅日期,归还日期,罚款,处理状态)asselect ReaID,BookName,Outdate,Indate,

53、Fine,CLStatefrom Borrow,Bookwhere Borrow.BookID=Book.BookID and Fine is not null(四) 6.1.4 建立索引create clustered index BookPublish on Book(BookPublish);create clustered index ReaDep on Reader(ReaDep);(五) 6.1.5 建立触发器1当删除Reader表中某一读者基本信息时,触发Borrow表,删除相应的记录create trigger Reader_deleteon Readerfor deletea

54、s delete Borrowfrom deletedwhere Borrow.ReaID=deleted.ReaID2当在中增加一条借阅记录时,使该图书的状态由“可借”变为“不可借”create trigger Borrow_insert1on Borrowfor insertas declare BookID char(9)select BookID=BookIDfrom insertedupdate Bookset BookState=不可借where BookID=BookID10.2.6.2数据入库系统包括图书基本信息管理、读者基本信息管理、管理员信息管理、借阅信息管理、查询信息管理

55、等四大功能模块,共有6张基本表,采用事先在Excel中录入数据,然后使用SQL Server 2008数据导入/导出向导功能,直接将数据导入到相应的基本表中。10.2.6.3创建各个功能的存储过程系统共创建了10个存储过程,具体列表如下:表3.1 创建的存储过程列表:编号存储过程名称定义作用P-1Book_Insert详见附录1-1在Book中插入一元组P-2Reader_Insert详见附录1-2在Reader中插入一元组P-3Maneger_Insert详见附录1-3在Maneger中插入一元组P-4Borrow_Insert详见附录1-4在Borrow中插入一元组P-5Delete_Bo

56、ok详见附录1-10从Book中删除一元组P-6Delete_Reader详见附录1-9从Reader中删除一元组P-7Query_Reader_R详见附录1-5读者在Reader中查询本人信息P-8Query_Reader_M详见附录1-6管理员在Reader中查询全部读者P-9Query_Book_Writer详见附录1-7在Book,按作者查询P-10Query_Book_Name_Publish详见附录1-8在Book中,按书名和出版社查询(其它表的查询、修改、删除与以上各表的存储过程定义大致相同,这里不再具体列出)10.2.7系统调试和测试对该图书管理系统进行测试,验证每个功能是否符

57、合要求,具体的测试如下:(1)通过视图查看各个基本表和视图中的数据(见附录2)(2)检测各个存储过程的功能:(见附录2)【本章小结】本章简单概括数据库设计的原则及技巧,通过图书管理系统设计实例重点介绍了数据库的设计过程。在设计过程中应该注意哪些问题,同时具体的实时过程在附录中。通过本章的学习,学生能够基本掌握数据库的具体设计过程及设计思路,为后期应用系统开发的数据库设计打下基础。9参考文献1 萨师煊 王珊,数据库系统概论(第三版),北京:高教出版社,20002 Delpehi数据库开发毕业设计指导及实例;机械工业出版社,2004附 录附录1 存储过程定义1.Book_Insert的定义:CRE

58、ATE PROCEDURE Book_InsertBookID char(9) ,BookNo char(20),BookName char(50),BookWriter char(30),BookPublish char(20),BookPrice char(7),BookDate datetime,BookClass char(20),BookMain char(200),BookPrim char(30),BookCopy char(5),BookState char(10),BookRNo char(5)asinsert into Bookvalues(BookID ,BookNo,BookName,BookWriter ,BookPublish ,BookPrice,BookDate,BookClass

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!