图书管理系统数据库设计_第1页
图书管理系统数据库设计_第2页
图书管理系统数据库设计_第3页
图书管理系统数据库设计_第4页
图书管理系统数据库设计_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

信息工程学院《数据库应用系统开发》课程设计论文09204040信管04级(2)班魏金风陈勇摘要在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多。对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,往往是投入了大量的人力和财力却得不到高效的管理效率。为了便于图书资料的管理需要有效的图书管理软件,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,达到提高图书借阅信息管理效率的目的。采用数据库技术生成的图书馆借阅管理系统将会极大地方便借阅者并简化图书馆管理人员和工作人员的劳动,使工作人员从繁忙、复杂的工作进入到一个简单、高效的工作中。基于这个问题,开发了大学图书馆借阅系统。系统采用C/S模式,实现了借还书的方便、高效性、有效性和及时性。本文通过作者设计和开发一个中小型高校图书馆管理系统的实践,阐述了高校图书管理软件中所应具有的基本功能、设计、实现。关键字:图书借阅;人员管理;图书维护;I目录 2.2需求分析阶段的目标与任务 2 2.2.3.安全性和完整性要求 32.3需求分析阶段成果 33概念设计阶段 9 4.逻辑设计阶段 124.1逻辑设计的任务和目标 12 ER 12 4.2.3数据库模式定义 134.2.4用户子模式定义 15 5.物理设计阶段 175.1物理设计阶段的目标与任务 17 5.3.1读者基本信息的查询和更新模块 175.3.2图书基本信息的查询和更新模块 186.数据库实施阶段 196.1建立数据库、数据表、视图、索引 19建立数据库 19建立数据表 196.1.3建立视图 21 建立触发器 22 6.3创建各个功能的存储过程 227.系统调试和测试 23 9.存在的问题及建议 23 附录2数据查看和存储过程功能的验证 29 随着社会信息量的与日俱增,职场竞争的日趋激烈,越来越多的人更关注知识的积累、能力的培养。作为信息存储的主要媒体之一图书,数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要使用方便而有效的方式来管理自己的书籍。在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多。对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,为了便于图书资料的管理需要有效的图书管理软件。对于日益扩大的图书馆,查找特定的书目总是借阅者或工作人员劳神费力,有时还没有结果。因此往往是投入了大量的人力和财力却得不到高效的管理效率。为了缩短借阅者的等待时间,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,从而达到提高图书借阅信息管理效率的目的,采用数据库技术生成的图书馆借阅管理系统将会极大地方便借阅者并简化图书馆管理人员和工作人员的劳动,使工作人员从繁忙、复杂的工作进入到一个简单、高效的工作中。本文以高校图书馆管理系统管理系统开发过程为背景,全文分为目录、需求分析、概要设计、逻辑设计、物理设计,以及系统的实现等全过程。在程序设计与调试上采用了自上而下,逐步细化,逐步完善的原则。采用结构化的功能模块设计系统功能,可读性好,易于扩充。基本功能全面,系统可读性好,易于维护、更新,安全性好。2.需求分析阶段2.1引言进行系统设计,首先要对系统的现状进行分析。根据系统的目标、需求和功能,制定和选择一个较好的系统方案,从而达到一个合理的优化系统。每个学校都有图书馆,最初由于图书数量和种类较少,人工手动管理比较方便和灵活。随着社会的发展,图书的数量和种类越来越多,人工手动管理会降低工作的效率,希望建立一个图书管理系统,是为了解决人工手动管理图书信息在实践的问题,从而达到系统化、规范化、标准化的水平。该系统的建立不但给管理者带来了方便,也节省了工作时间从而提高了工作效率。需求分析是在于要弄清用户对开发的数据库应用系统的确切要求。数据库设计的第一步是明确数据库的目的和如何使用,也就是说需要从数据库中得到哪些信息。明确目的之后,就可以确定您需要保存哪些主题的信息(表),以及每个主题需要保存哪些信息(表中字段)。在构造系统时,首先从需求出发构造数据库表,然后再由数据库表结合需求划分系统功能模块。这样,就把一个大的系统分解成了几个小系统。这里把系统的层次划分为了四个部分:图书维护,人员信息管理,图书借阅管理,信息查询。能够实现以下功能:○1进行新书入库、现有图书信息修改以及删除;②能够实现对读者基本信息的查询和编辑管理;③能够进行超期罚款功能;④能够进行借阅信息的查询功能;2.2需求分析阶段的目标与任务2.2.1处理对象读者信息:读者编号,姓名,性别,学号,学院,专业,年级,类型,类别编号,办证日期管理员信息:管理员编号,姓名,性别,权限,登录口令,住址,电话字,副本数,分类,出版日期,状态借阅信息:图书编号,读者编号,图书名,作者,借阅日期,归还日期,归还日期,借阅历史信息:图书编号,读者编号,图书名,作者,借阅日期,还书日期罚款信息:读者编号,图书编号,图书名,作者,借阅日期,应还日期,归还日期,罚款金额,处理状态,管理员编号2.2.2处理功能及要求1.能够存储一定数量的图书信息,并方便有效的进行相应的书籍数据操作和管理,这主要1)图书信息的录入、删除及修改。2)图书信息的多关键字检索查询。3)图书的出借、返还及超期罚款或丢失赔偿。2.能够对一定数量的读者、管理员进行相应的信息存储与管理,这其中包括:1)读者信息的登记、删除及修改。2)管理员信息的增加、删除及修改。3)读者资料的统计与查询。3.能够提供一定的安全机制,提供数据信息授权访问,防止随意删改、查询。4.对查询、统计的结果能够列表显示。2.2.3.安全性和完整性要求1)安全性要求系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。2)完整性要求系统完整性要求系统中数据的正确性以及相容性。可通过建立主、外键,使用check约束,或者通过使用触发器和级联更新。2.3需求分析阶段成果2.3.1体会与收获系统需求分析主要是通过对本校图书管理员的咨询、请教,了解我校图书馆的管理规则和运行机制,并通过上网搜索有关图书管理系统的知识,了解到了图书管理的现状,以及在管理中的一些问题。由于是第一次做这样的需求调查,开始总是觉得无从下手,不知道自己该了解、该清楚那些方面的知识,在绘制系统业务流程图时,也遇到了很多的问题,但通过老师的帮助与指导,和自己一遍一遍的分析和完善,才逐步把业务弄清楚,最终顺利完成了需求分析阶段的任务。2.3.2图书管理系统业务流程图从读者角度考虑的业务流程图:图2.1业务流程图2.3.3图书管理系统数据流程图顶层数据流图:图2.2顶层数据流第2层数据流图:(读者借阅,读者还书,读者查询,管理员查询,管理员修改)第3层数据流图:(读者借阅)第3层数据流图:(读者还书)第3层数据流图:(查询图书信息,查询读者信息,查询借阅历史,查询罚款信息)第3层数据流图:(管理员添加、删除、修改图书信息)第3层数据流图:(管理员添加、删除、修改读者信息)第3层数据流图:(管理员添加、删除、修改系统用户信息)2.3.4图书管理系统数据字典(a)数据项:系统涉及的数据项有44项表1.1数据项列表数据项编号数据项含义系BookID图书条码号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(200)摘要BookPrim图书关键字char(30)关键字BookCopy图书副本数char(5)副本数BookState图书是否可借char(10)状态BookRNo所属馆室号ochar(5)馆室号ReaID读者条码号char(9)条码号ReaName读者姓名char(10)姓名ReaSex读者性别char(2)性别ReaNo读者学号char(9)学号ReaLBID读者类别编号char(5)类别编号ReaType读者类型(职务)char(20)类型DI-20ReaDep读者所在学院char(20)学院数据项编号数据项含义系DI-21ReaGrade读者所属年级char(5)DI-22ReaPre读者所读专业char(20)DI-23ReaDate读者办证时间DateDI-24OutDate借阅日期DateDI-25InDate归还日期DateDI-26YHDate应还日期DateDI-27Fine罚款金额char(3)DI-28CLState是否交纳罚金char(8)DI-29LBID类别编号同ReaLBIDchar(5)DI-30LBName读者类别名char(20)DI-31LBnum允许最多借书数量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馆室管理员编号char(10)DI-43RoomNum馆室内图书数目char(5)DI-44RoomAddre馆室地址char(20)(b)数据结构:表1.2数据结构列表数据结构名数据结构含义组成Book馆藏图书信息BookID,BookNo,BookName,BookWriter,BookPublish,BookPrice,BookDate,BookClass,BookMain,BookPrim,BookCopy,BookState,BookRNoDS-2Reader读者信息ReaID,ReaName,ReaSex,ReaNo,ReaLBID,ReaType,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管理员信息MID,MName,MSex,Mpwd,MAuth,MTeleph,MAddreDS-8Room馆室信息RoomNO,RoomMID,RoomNum,RoomAddre2.3.5处理逻辑描述表1.3处理逻辑列表处理编号处理功能处理过程PR判断读者查询涉及的功能模块馆藏图书信息模块、读者信息模块、读者类别信息模块、借阅信息模块、借阅历史信息模块、罚款信息模块、管理员模块、馆室信息模块:先确定查询所涉及的功能模块;然后,根据要查询的内容,确定查询数据流向;最后显示查询结果。PR-2判断图书、读者修改要涉及的模块,同时把相应的修改数据传到相应的模块之中馆藏图书信息模块、读者信息模块、读者类别信息模块、管理员信息模块、馆室信息模块:先确定更新所涉及的功能模块;然后,把更新信息传送到相应的模块中;最后,进行相应的更新操作。3概念设计阶段3.1引言系统开发的总体目标是实现图书馆管理的系统化和自动化,缩短借阅者的等待时间,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,从而达到提高图书管理效率的目的。---主要任务是对读者信息、管理员信息、图书资料信息、借阅信息、归还图书信息、罚款信息的基本信息的操作及外理。概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键。3.2任务与目标(1)选择中层数据流为切入点,通常选择实际系统中的子系统;(2)设计分E-R图,即各子模块的E-R图;(3)生成初步E-R图,通过合并方法,做到各子系统实体、属性、联系统一;(4)生成全局E-R图,通过消除冲突等方面。在本图书管理系统中,从第3层数据流程图下手。分析各3层数据流图和数据字典,知道整个系统功能围绕“读者”、“管理员”和“图书”的处理。根据实体与属性间的两条系。数据流程图2.4、图2.5、图2.6可综合成借阅子系统的分E-R图3.1,数据流程图2.7可抽象为分E-R图3.2,数据流程图2.8可抽象为分E-R图3.3,数据流程图2.9可抽象为分E-R图3.4。然后采用逐步集成的方式将各分E-R图合并,消除不必要的冗余和冲突后就生成了基本E-R图3.5。3.3阶段结果(1)根据不同的对象,从第3层数据流程图入手,分别画出各分E-R图:(a)从数据流程图图(三)与图(四)抽象出的分E-R图:(c)从数据流程图图(六)抽象出的分E-R图:(d)从数据流程图图(七)抽象出的分E-R图:(e)从数据流程图图(八)抽象出的分E-R图:(2)合并各分E-R图,消除属性冲突、命名冲突、结构冲突等三类冲突,得到初步E-R图,再消除不必要冗余,得到的基本E-R图如下所示:(3)各E-R图各实体的属性如下所示:BookID图书:Book(,BookNo,BookName,BookWriter,BookPublish,BookPrice,BookDateBookIDBookClass,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)4.逻辑设计阶段4.1逻辑设计的任务和目标以上的概念设计阶段是独立于任何一种数据模型的,但是逻辑设计阶段就与选用的DBMS产品发生关系了,系统逻辑设计的任务就是将概念设计阶段设计好的基本E-R图转换为选用DBMS产品所支持的数据模型相符合的逻辑结构。具体内容包括数据组织(将E-R图转换成关系模型、模型优化、数据库模式定义、用户子模式设计)、数据处理(画出系统功能模块图)两大任务。4.2数据组织4.2.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)Indate,YHdate) (注:标有直线下划线的为主属性,标有波浪线下划线的是外键属性,主属性与外键属性一起构成主)4.2.2模型优化关系模式Book,Reader,Room,ReaderType,Maneger不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF,但是借阅关系模式、借阅历史关系模式、罚款关系模式(Borrow,History,Fine)中存在着一些数据冗余,现将三个关系模型进行合并,消除冗余,优化为:YHdate,Fine,CLStaer,MID)4.2.3数据库模式定义表2.1馆藏图书信息表列名数据类型可否为空说明BookIDCharnotnull图书编号BookNoCharnotnull图书的索书号BookNameCharnotnull图书的书名BookWriterCharnotnull图书作者BookPulishCharnotnull图书出版社BookPriceChar图书的单价BookDateDate出版日期BookClassChar图书的分类BookMainChar图书的摘要BookPrimChar图书的关键字BookCopyChar图书的副本数BookStateCharnotnull图书是否可借BookRNoCharnotnull图书所在馆室号表2.2读者信息表列名数据类型可否为空说明ReaIDCharnotnull读者编号ReaNameCharnotnull读者姓名ReaSexCharnotnull读者性别ReaNoCharnotnull读者学号ReaLBIDCharnotnull读者类别编号ReaTypeChar读者类型ReaDepChar读者所在学院ReaPrefChar读者所属专业ReaGradeChar读者的年级ReaDateDatenotnull办证日期表2.3管理员信息表列名数据类型可否为空说明MIDCharnotnull管理员编号MNameCharnotnull管理员姓名MSexChar管理员性别MpswCharnotnull管理员密码MAuthCharnotnull管理员权限MTelephChar管理员电话MAddreChar管理员地址表2.4馆室信息表列名数据类型可否为空说明RoomNoCharnotnull馆室号RoomMIDCharnotnull馆室管理员编号RoomNumChar馆室拥有图书数目RoomAddreChar馆室地址表2.5读者类别信息表列名数据类型可否为空说明LBIDCharnotnull读者类别编号LBNameCharnotnull读者类别名LBnumCharnotnull允许借阅图书最大数LBbqxCharnotnull持有图书最长期限LBqxCharnotnull借阅证期限表2.6借阅信息表列名数据类型可否为空说明ReaIDCharnotnull读者编号BookIDCharnotnull图书编号BookNameCharnotnull图书名BookWriterChar作者OutdateDatenotnull借阅时间IndateDate归还时间YHdateDatenotnull应还时间FineChar罚款金额CLStateChar处理状态MIDCharnotnull管理员编号4.2.4编号用户子模式定义用户子模式定义作用(共性:提供数据保密和安全保护机制)便于查询和修改图书的基本信息BookViewV-2ReaderView方便读者基本信息的查询、更新V-3HistoryView便于借阅历史信息的查询V-4BorrowView用于当前借阅信息的查询V-5FineView便于查询罚款信息表2.8读者基本信息视图列名数据类型可否为空说明ReaIDCharnotnull读者编号ReaNameCharnotnull读者姓名ReaSexCharnotnull读者性别ReaTypeChar读者类型ReaDepChar读者所在学院ReaDateDatel办证日期表2.9图书基本信息视图列名数据类型可否为空说明BookNoCharnotnull图书的索书号BookNameCharnotnull图书的书名BookWriterCharnotnull图书作者BookPulishCharnotnull图书出版社BookStateCharnotnull图书是否可借BookRNoCharnotnull图书所在馆室号表2.10读者当前借阅信息视图列名数据类型可否为空说明BookIDCharnotnull图书编号BookNameCharnotnull图书名OutdateDatenotnull借阅时间YHdateDatenotnull应还时间表2.11读者借阅历史信息视图列名数据类型可否为空说明BookIDCharnotnull图书编号BookNameCharnotnull图书名OutdateDatenotnull借阅时间IndateDate归还时间表2.12读者罚款信息视图列名数据类型可否为空说明BookIDCharnotnull图书编号BookNameCharnotnull图书名OutdateDatenotnull借阅时间IndateDate归还时间FineCharnotnull罚款金额CLStateCharnotnull处理状态4.3数据处理系统功能模块图:5.物理设计阶段5.1物理设计阶段的目标与任务数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;(2)对物理结构进行评价,评价的重点是时间和空间效率。5.2数据存储方面为数据库中各基本表建立的索引如下:1.由于基本表Reader,Book的主码ReaID,BookID经常在查询条件和连接操作的连接条件中出现,且它们的值唯一,在两个属性上建立唯一性索引;2.由于基本表Reader的属性ReaDep,Book的属性BookPublish经常在查询条件中出现在两个属性上建立聚簇索引;3.借阅信息基本表Borrow的一属性ReaID,BookID,经常在查询条件中出现,考虑在其之上建立聚簇索引;4.罚款信息基本表Fine的一属性ReaID,BookID,经常在查询条件中出现,考虑在其之上建立聚簇索引;5.3系统功能模块5.3.1读者基本信息的查询和更新模块将实现对读者基本信息的查询和更新(修改、添加、删除)操作,用于新生入学,毕业生离校,以及读者补办借阅证或更改信息的情况,具体的功能模块图如下:5.3.2图书基本信息的查询和更新模块将完成对图书基本信息的查询、更新(修改、添加、删除)操作,用于读者对图书信息的查询及管理员添加新书、删除淘汰的旧书,具体的功能模块图如下所示:---6.数据库实施阶段6.1建立数据库、数据表、视图、索引6.1.1建立数据库createdatabaseBook;6.1.2建立数据表(1)读者类别信息表的建立:createtableReaderType(LBIDchar(5)primarykey,LBNamechar(20)notnull,LBnumchar(5)notnull,LBbqxchar(4)notnull,LBqxchar(3)notnull,)(2)管理员基本信息表的建立:createtableManeger(MIDchar(10)primarykey,MNamechar(10)notnull,MSexchar(2),Mpwdchar(8)notnull,MAuthchar(40)notnull,MTelephchar(15),MAddrechar(30),check(MSex='男'orMSex='女'))(3)图书馆室基本信息表的建立:createtableRoom(RoomNochar(5)primarykey,RoomMIDchar(10)notnull,Roomnumchar(5),RoomAddrechar(20),foreignkey(RoomMID)referencesManeger(MID),)(4)馆藏图书基本信息表的建立:---createtableBook(BookIDBookNoBookNameBookWriterchar(9)primarykey,char(20)notnull,char(50)notnull,char(30)notnull,BookPublishchar(20)notnull,BookPriceBookDateBookClassBookMainBookPrimchar(7),datetime,char(20),char(200),char(30),BookCopychar(5),BookStatechar(10)notnull,BookRNochar(5)notnull,foreignkey(BookRNo)referencesRoom(RoomNo),)(5)读者基本信息表的建立:createtableReader(ReaIDchar(9)primarykey,ReaNamechar(10)notnull,ReaSexchar(2)notnull,ReaNochar(9)notnull,ReaLBIDchar(5)notnull,ReaTypeReaDepReaGradeReaPrefchar(20),char(20),char(5),char(20),ReaDateDatetime,foreignkey(ReaLBID)referencesReaderType(LBID),check(ReaSex='男'orReaSex='女'))(6)借阅基本信息表的建立:createtableBorrow(BookIDReaIDOutdateYHdateIndateFineCLStatechar(9),char(9),Datetimenotnull,Datetimenotnull,Datetime,char(5),char(8),MIDchar(10)notnull,primarykey(BookID,ReaID),foreignkey(MID)referencesManeger(MID))6.1.3建立视图(1)用于查询图书基本信息的视图定义如下:createviewBookview(索书号,书名,作者,出版社,图书状态)asselectBookNo,BookName,BookWriter,BookPublish,BookStatefromBook(2)用于读者基本信息查询的视图定义如下:createviewReaderview(读者姓名,类型,学院,专业,办证日期)asselectReaName,ReaType,ReaDep,ReaPref,ReaDatefromReader(3)用于显示当前借阅基本信息的视图定义如下:createviewBorrowview(读者编号,书名,作者,借阅日期,到期日期)asselectReaID,BookName,BookWriter,Outdate,YHdatefromBorrow,BookwhereBorrow.BookID=Book.BookIDandBorrow.Indateisnull(4)用于借阅历史信息查询的视图定义如下:createviewHistoryview(读者编号,书名,借阅日期,归还日期)asselectReaID,BookName,Outdate,IndatefromBorrow,BookwhereBorrow.BookID=Book.BookIDandBorrow.Indateisnotnull(5)用于查询罚款信息的视图定义如下:createviewFineview(读者编号,书名,借阅日期,归还日期,罚款,处理状态)asselectReaID,BookName,Outdate,Indate,Fine,CLStatefromBorrow,BookwhereBorrow.BookID=Book.BookIDandFineisnotnull6.1.4建立索引createclusteredindexBookPublishonBook(BookPublish);createclusteredindexReaDeponReader(ReaDep);6.1.5建立触发器1.当删除Reader表中某一读者基本信息时,触发Borrow表,删除相应的记录createtriggerReader_deleteonReaderfordeleteasdeleteBorrowfromdeletedwhereBorrow.ReaID=deleted.ReaID2.当在中增加一条借阅记录时,使该图书的状态由“可借”变为“不可借”createtriggerBorrow_insert1onBorrowforinsertasdeclare@BookIDchar(9)select@BookID=BookIDfrominsertedupdateBooksetBookState='不可借'whereBookID=@BookID6.2数据入库系统包括图书基本信息管理、读者基本信息管理、管理员信息管理、借阅信息管理、查询信息管理等四大功能模块,共有6张基本表,采用事先在Excel中录入数据,然后使用SQLServer2000数据导入/导出向导功能,直接将数据导入到相应的基本表中。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_Book1-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-7Book按作者查询Query_Book_Name_Publish详见附录1-8在Book中,按书名和出版社查询(其它表的查询、修改、删除与以上各表的存储过程定义大致相同,这里不再具体列出)7.系统调试和测试对该图书管理系统进行测试,验证每个功能是否符合要求,具体的测试如下:(1)通过视图查看各个基本表和视图中的数据(见附录2)(2)检测各个存储过程的功能:(见附录2)8.实习心得1.这次课程设计使我熟悉了系统设计的整体步骤。系统设计大体可分为需求分析、概念设计、逻辑设计、物理设计、数据库的实施及调试测试六大步骤。其中,让我感触最深的是需求分析阶段,在这个阶段,必须对所要设计的系统有总体的构思和了解,知道自己要做什么,要实现什么,并且要实际的进行相关的调查,不能凭想象或自己的了解,这样会在后续的工作中遇到很多的问题。2.这次课程设计加深了我对数据库系统概论相关知识和SQLSERVER相关功能的理解。例如对建立基本表、视图、索引、存储过程、触发器等,都比以前更加的熟练。并在解决遇到的各种问题的过程中,学到了很多新的知识。比如在导入\导出数据时,由于外键约束的存在,经常会出现错误,这就要注意各个表导入的顺序问题。一般是先导入主键表,后导入外键表,这样可以避免很多的错误。3.我进一步掌握了相关的SQL语句方面的知识。不但纠正了以前的错误认识和理解,而且学会了建立存储过程和触发器。通过查阅资料,我还明白了存储过程是编译后放在服务器端的程序,它可以被别的模块调用,且不需要重新编译,这样就大大减轻了客户端的负担,且有效的提高了系统执行的效率。4.当然,在实习的过程中也存在一些问题。由于需求分析阶段的工作完成的不是很充分,在后面的设计过程中,前后时常会出现矛盾,不一致现象,因此要反复的修改前面的结果,导致整个工作进行的不是很顺利。9.存在的问题及建议1.我觉得在这次课程设计中,需求分析阶段是致关重要的,但由于同学们都是第一次做这样的系统设计,都不是很熟悉需求分析的主要方法和主要任务,所以都很盲目,认为随便从网上搜点相关的知识就可以了,但其实,这直接影响着后面的各个阶段的工作的进行。所以希望老师在实习前能给我们对需求分析阶段的工作进行一定的指导。2.在实习过程中,虽然我们每个班都配备了两到三名指导老师,可各指导老师轮流上班,当我们遇到问题时,有时在身边找不到老师,而浪费了一些宝贵的时间,或者是本班的指导老师在给别班的学生指导,所以也可能会耗费一定的等待时间。3.但总的说来,这次实习的各个指导老师都是知识渊博,经验丰富,并且十分热情的,我们请教的任何问题,老师都会耐心而认真的为我们解决,老师不但帮我们解决了问题,同时也教会了我们解决此类问题的方法,这对我们今后的学习是十分有益的。致谢在这次数据库课程设计的整个过程中,都受到了指导教师杨丽丽老师、陈勇老师、武苏里老师细心的指导和关怀,同时蔚继承老师、杨晓辉老师、孙建敏老师也给予了我很大的帮助。对此,表示忠心的感谢!没有老师的耐心指导,我根本不可能顺利完成此次课程设计的任务。在这里,我尤其要真诚的感谢杨丽丽老师和蔚继承老师,两位老师丰富的知识和编程经验帮我解决了不少的难题,同时也给我传授了不少新的知识和技巧。同时也感谢给过我帮助和鼓励的同学,是他们的帮助与鼓励,在我遇到困难时,为我点亮了希望的灯塔;在我灰心丧气时,带给我力量和信心。参考文献[1]萨师煊王珊,数据库系统概论(第三版),北京:高教出版社,2000[2]软件开发与指导;人民邮电出版社[3]Delpehi数据库开发毕业设计指导及实例;机械工业出版社,2004附录1存储过程定义1.Book_Insert的定义:CREATEPROCEDUREBook_Insert@BookID@BookNochar(9),char(20),@BookNamechar(50),@BookWriterchar(30),@BookPublishchar(20),@BookPrice@BookDate@BookClass@BookMain@BookPrim@BookCopy@BookState@BookRNochar(7),datetime,char(20),char(200),char(30),char(5),char(10),char(5)asinsertintoBookvalues(@BookID,@BookNo,@BookName,@BookWriter,@BookPublish,@BookPrice,@BookDate,@BookClass,@BookMain,@BookPrim,@BookCopy,@BookState,@BookRNo);2.Reader_Insert的定义:CREATEPROCEDUREReader_Insert@ReaID@ReaName@ReaSex@ReaNo@ReaLBID@ReaType@ReaDep@ReaGrade@ReaPref@ReaDateaschar(9),char(10),char(2),char(9),char(5),char(20),char(20),char(5),char(20),DatetimeinsertintoReadervalues(@ReaID,@ReaName,@ReaSex,@ReaNo,@ReaLBID,@ReaType,@ReaDep,@ReaGrade,@ReaPref,@ReaDate);3.Maneger_Insert的定义:CREATEPROCEDUREManeger_Insert@MIDchar(10),@MNamechar(10),@MSexchar(2),@Mpwdchar(8),@MAuthchar(40),@MTelephchar(15),@MAddrechar(30)asinsertintoManegeralues(@MID,@MName,@MSex,@Mpwd,@MAuth,@MTeleph,@MAddre);4.Borrow_Insert的定义:CREATEPROCEDUREBorrow_Insert@BookIDchar(9),@ReaIDchar(9),@OutdateDatetime,@YHdateDatetime,@IndateDatetime,@Finechar(5),@CLStatechar(8),@MIDchar(10)asinsertintoBorrowvalues(@BookID,@ReaID,@Outdate,@YHdate,@Indate,@Fine,@CLState,@MID);5.Query_Reader_R的定义:createprocedureQuery_Reader_R@ReaIDchar(9)asselect*fromReaderviewwhere编号=ltrim(@ReaID);6.Query_Reader_M的定义:createprocedureQuery_Reader_Masselect*fromReaderview7.Query_Book_Writer的定义:createprocedureQuery_Book_Writer@BookWriterchar(50)asselect*fromBookviewwhere作者like'%'+ltrim(@BookWriter)+'%';8.Query_Book_Name_Publish的定义:createprocedureQuery_Book_Name_Publish@BookNamechar(50),@BookPublishchar(20)asselect*fromBookviewwhere书名=ltrim(@BookName)and出版社=ltrim(@BookPublish);9.Delete_Reader的定义:createprocedureDelete_Reader@ReaNochar(9)asdeletefromReaderwhereReaNo=ltrim(@ReaNo);10.Delete_Book的定义:createprocedureDelete_Book@BookIDchar(9)asdeletefromBookwhereBookID=ltrim(@BookID);附录2数据查看和存储过程功能的验证1.基本表的数据查看(基于视图查询):1)查看Reader(读者信息表)表中的数据2)查看Bookview(图书信息)表中的数据:3)查看Borrow(借阅信息)表中的数据:4)查看Maneger(管理员信息表)表中的数据5)查看Room(馆室信息表)表中的数据:6)查看Borrowview(当前借阅信息)视图中的数据:7)查看Historyview(借阅历史信息)视图的数据:8)查看Fineview(罚款信息)视图的基本数据:2.存储过程功能的验证:1)存储过程Query_Reader_R功能的验证:(按ReaID匹配查询读者信息)---2)存储过程Query_Book_Writer功能的验证:(按BookWriter模糊查询图书信息)3)存储过程Query_Book_Nmae_Publish功能的验证:(按书名和出版社查询图书信息)4)存储过程Query_Reader_M功能的验证:(以管理员身份查询读者信息)5)存储过程Reader_Insert功能的验证:(插入一条读者信息记录)6)存储过程Borrow_Insert功能的验证:(插入一条借阅信息记录)7)存储过程Delete_Reader功能的验证:(按ReaNo删除相应的读者记录)(注:由于篇幅限制,这里仅给出了其中几个存储过程功能的验证)3.触发器功能的验证:(在Borrow表中插入一条记录,触发Book表将图书由“可借”状态改为“不可借”状态)createdatabaseBook;createtableReaderType(LBIDLBNameLBnumLBbqxLBqx)char(5)primarykey,char(20)notnull,char(5)notnull,char(4)notnull,char(3)notnull,createtableManeger(MIDchar(10)primarykey,MNamechar(10)notnull,MSexchar(2),Mpwdchar(8)notnull,MAuthchar(40)notnull,MTelephchar(15),MAddrechar(30),check(MSex='男'orMSex='

温馨提示

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

评论

0/150

提交评论