收藏 分销(赏)

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

上传人:仙人****88 文档编号:11223834 上传时间:2025-07-08 格式:DOC 页数:34 大小:1.16MB 下载积分:10 金币
下载 相关 举报
数据库设计范例—图书管理系统.doc_第1页
第1页 / 共34页
数据库设计范例—图书管理系统.doc_第2页
第2页 / 共34页


点击查看更多>>
资源描述
第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 需求阶段的目标及任务 需求分析的目标及任务就是为了提取有效的信息,概念模型的抽象化,转化为计算机系统能够识别的信息。则通过需求分析所得的信息如下: l 处理对象 读者信息:读者编号,姓名,性别,学号,学院,专业,年级,类型,类别编号,办证日期 管理员信息:管理员编号,姓名,性别,权限,登录口令,住址,电话 馆藏图书信息:图书编号,索书号,图书名称,作者,出版社,单价,摘要,关键字,副本数,分类,出版日期,状态 借阅信息:图书编号,读者编号,图书名,作者,借阅日期,归还日期,归还日期,应还日期,罚金 借阅历史信息:图书编号,读者编号,图书名,作者,借阅日期,还书日期 罚款信息:读者编号,图书编号,图书名,作者,借阅日期,应还日期,归还日期,罚款金额,处理状态,管理员编号 l 处理功能及要求 用户对图书管理系统的功能及要求如下: 1. 能够存储一定数量的图书信息,并方便有效的进行相应的书籍数据操作和管理,这主要包括: a) 图书信息的录入、删除及修改。 b) 图书信息的多关键字检索查询。 c) 图书的出借、返还及超期罚款或丢失赔偿。 2. 能够对一定数量的读者、管理员进行相应的信息存储与管理,这其中包括: a) 读者信息的登记、删除及修改。 b) 管理员信息的增加、删除及修改。 c) 读者资料的统计与查询。 3. 能够提供一定的安全机制,提供数据信息授权访问,防止随意删改、查询。 4. 对查询、统计的结果能够列表显示。 10.2.2.3安全性和完整性要求 1) 安全性要求 系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。 2) 完整性要求 系统完整性要求系统中数据的正确性以及相容性。可通过建立主、外键,使用check约束,或者通过使用触发器和级联更新。 在系统进行设计时,一定根据第七章所学知识对数据的安全性及完整性进行设计。以保证数据库更为完善。 10.2.2.4 建立数据业务流程及数据字典 系统需求分析主要是通过对本校图书管理员的咨询、请教,了解我校图书馆的管理规则和运行机制,并通过上网搜索有关图书管理系统的知识,了解到了图书管理的现状,以及在管理中的一些问题,然后通过所了解的文字信息,理解数据业务流程及数据字典,为后期数据库设计提供概念基础。 l 图书管理系统业务流程图 图10.2 图书管理系统业务流程图 本文的业务流程是从读者角度考虑的业务流程图: l 图书管理系统数据流程图 图 10.3 顶层数据流 (一) 顶层数据流图: (二) 第2层数据流图:(读者借阅,读者还书,读者查询,管理员查询,管理员修改) 图10.4第2层数据流图 (三) 第3层数据流图:(读者借阅) 图10.5 读者借阅数据流图 (四) 第3层数据流图:(读者还书) 图10.6 读者还书数据流图 (五) 第3层数据流图:(查询图书信息,查询读者信息,查询借阅历史,查询罚款信息) 图10.7管理员、读者查询数据流图 (六) 第3层数据流图:(管理员添加、删除、修改图书信息) 图10.8 图书的维护数据流图 (七) 第3层数据流图:(管理员添加、删除、修改读者信息) 图10.9 更改读者信息的数据流图 (八) 第3层数据流图:(管理员添加、删除、修改管理员信息) 图10.10 更改管理员信息的数据流图 l 图书管理系统数据字典 (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产品所支持的数据模型相符合的逻辑结构。具体内容包括数据组织(将E-R图转换成关系模型、模型优化、数据库模式定义、用户子模式设计)、数据处理(画出系统功能模块图)两大任务。 10.2.4.1数据组织 1. 将E-R图转换为关系模型 实体型转换为关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体间的联系则有以下不同的情况: 一个m:n联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。具有相同码的关系模式可合并。 由于读者类别与读者、馆室与图书的联系方式是1:n(一对多),可以将其之间的联系与n端实体读者、图书合并,管理员与图书之间的维护联系也是1:n(一对多),同样也将其之间的联系与n端实体合并,而读者与图书之间的借阅和归还联系方式则是n:m(多对多),这样要把它们之间的联系转化为独立的关系模式,读者与管理员之间的罚款联系是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, 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. 数据库模式定义 根据分析,本数据库共创建如下6个表。 表10.1 馆藏图书信息表 列名 数据类型 可否为空 说明 BookID Char not null 图书编号 BookNo Char not null 图书的索书号 BookName Char not null 图书的书名 BookWriter Char not null 图书作者 BookPulish Char not null 图书出版社 BookPrice Char 图书的单价 BookDate Date 出版日期 BookClass Char 图书的分类 BookMain Char 图书的摘要 BookPrim Char 图书的关键字 BookCopy Char 图书的副本数 BookState Char not null 图书是否可借 BookRNo Char not null 图书所在馆室号 表10.2 读者信息表 列名 数据类型 可否为空 说明 ReaID Char not null 读者编号 ReaName Char not null 读者姓名 ReaSex Char not null 读者性别 ReaNo Char not null 读者学号 ReaLBID Char not null 读者类别编号 ReaType Char 读者类型 ReaDep Char 读者所在学院 ReaPref Char 读者所属专业 ReaGrade Char 读者的年级 ReaDate Date not null 办证日期 表10.3 管理员信息表 列名 数据类型 可否为空 说明 MID Char not null 管理员编号 MName Char not null 管理员姓名 MSex Char 管理员性别 Mpsw Char not null 管理员密码 MAuth Char not null 管理员权限 MTeleph Char 管理员电话 MAddre Char 管理员地址 表10.4 馆室信息表 列名 数据类型 可否为空 说明 RoomNo Char not null 馆室号 RoomMID Char not null 馆室管理员编号 RoomNum Char 馆室拥有图书数目 RoomAddre Char 馆室地址 表10.5 读者类别信息表 列名 数据类型 可否为空 说明 LBID Char not null 读者类别编号 LBName Char not null 读者类别名 LBnum Char not null 允许借阅图书最大数 LBbqx Char not null 持有图书最长期限 LBqx Char not null 借阅证期限 表10.6 借阅信息表 列名 数据类型 可否为空 说明 ReaID Char not null 读者编号 BookID Char not null 图书编号 BookName Char not null 图书名 BookWriter Char 作者 Outdate Date not null 借阅时间 Indate Date 归还时间 YHdate Date not null 应还时间 Fine Char 罚款金额 CLState Char 处理状态 MID Char not null 管理员编号 4. 用户子模式定义 表10.7 用户子模式定义 编号 用户子模式(View) 作用(共性:提供数据保密和安全保护机制) V-1 BookView 便于查询和修改图书的基本信息 V-2 ReaderView 方便读者基本信息的查询、更新 V-3 HistoryView 便于借阅历史信息的查询 V-4 BorrowView 用于当前借阅信息的查询 V-5 FineView 便于查询罚款信息 表10.8 读者基本信息视图 列名 数据类型 可否为空 说明 ReaID Char not null 读者编号 ReaName Char not null 读者姓名 ReaSex Char not null 读者性别 ReaType Char 读者类型 ReaDep Char 读者所在学院 ReaDate Date l 办证日期 表10.9 图书基本信息视图 列名 数据类型 可否为空 说明 BookNo Char not null 图书的索书号 BookName Char not null 图书的书名 BookWriter Char not null 图书作者 BookPulish Char not null 图书出版社 BookState Char not null 图书是否可借 BookRNo Char not null 图书所在馆室号 表10.10 读者当前借阅信息视图 列名 数据类型 可否为空 说明 BookID Char not null 图书编号 BookName Char not null 图书名 Outdate Date not null 借阅时间 YHdate Date not null 应还时间 表10.11 读者借阅历史信息视图 列名 数据类型 可否为空 说明 BookID Char not null 图书编号 BookName Char not null 图书名 Outdate Date not null 借阅时间 Indate Date 归还时间 表10.12 读者罚款信息视图 列名 数据类型 可否为空 说明 BookID Char not null 图书编号 BookName Char not null 图书名 Outdate Date not null 借阅时间 Indate Date 归还时间 Fine Char not null 罚款金额 CLState Char not null 处理状态 10.2.4.2 数据处理 结合系统的需求,本系统的基本的系统功能模块如下图10.16。 图10.16 系统功能模块图 10.2.5物理设计阶段 数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务: (1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构; (2)对物理结构进行评价,评价的重点是时间和空间效率。 10.2.5.1数据存储方面 为数据库中各基本表建立的索引如下: 1) 由于基本表Reader,Book的主码ReaID,BookID经常在查询条件和连接操作的连接条件中出现,且它们的值唯一,在两个属性上建立唯一性索引; 2) 由于基本表Reader的属性ReaDep,Book的属性BookPublish经常在查询条件中出现在两个属性上建立聚簇索引; 3) 借阅信息基本表Borrow的一属性ReaID,BookID,经常在查询条件中出现,考虑在其之上建立聚簇索引; 4) 罚款信息基本表Fine的一属性ReaID,BookID,经常在查询条件中出现,考虑在其之上建立聚簇索引; 10.2.5.2系统功能模块 (一) 读者基本信息的查询和更新模块 将实现对读者基本信息的查询和更新(修改、添加、删除)操作,用于新生入学,毕业
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服