还剩54页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
信息工程学院《数据库应用系统开发》课程设计论文题目图书管理系统数据库设计学号09204040专业班级信管04级
(2)班姓名魏金风指导老师陈勇完成日期2007-1-26摘要在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,往往是投入了大量的人力和财力却得不到高效的管理效率为了便于图书资料的管理需要有效的图书管理软件,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,达到提高图书借阅信息管理效率的目的采用数据库技术生成的图书馆借阅管理系统将会极大地方便借阅者并简化图书馆管理人员和工作人员的劳动,使工作人员从繁忙、复杂的工作进入到一个简单、高效的工作中基于这个问题,开发了大学图书馆借阅系统系统采用C/S模式,实现了借还书的方便、高效性、有效性和及时性本文通过作者设计和开发一个中小型高校图书馆管理系统的实践,阐述了高校图书管理软件中所应具有的基本功能、设计、实现关键字图书借阅;人员管理;图书维护;目录TOC\o1-4\h\z\u1.引言
12.需求分析阶段
22.1引言
22.2需求分析阶段的目标与任务
22.
2.1处理对象
22.
2.2处理功能及要求
32.
2.
3.安全性和完整性要求
32.3需求分析阶段成果33概念设计阶段
93.1引言
93.2任务与目标
103.3阶段结果104.逻辑设计阶段
124.1逻辑设计的任务和目标
124.2数据组织
124.
2.1将E-R图转换为关系模型
124.
2.2模型优化
134.
2.3数据库模式定义
134.
2.4用户子模式定义
154.3数据处理165.物理设计阶段
175.1物理设计阶段的目标与任务
175.2数据存储方面
175.3系统功能模块
175.
3.1读者基本信息的查询和更新模块
175.
3.2图书基本信息的查询和更新模块186.数据库实施阶段
196.1建立数据库、数据表、视图、索引
196.
1.1建立数据库
196.
1.2建立数据表
196.
1.3建立视图
216.
1.4建立索引
216.
1.5建立触发器
226.2数据入库
226.3创建各个功能的存储过程227.系统调试和测试238.实习心得239.存在的问题及建议23致谢25参考文献25附录1存储过程定义26附录2数据查看和存储过程功能的验证29附录3所有的SQL运行语句341.引言随着社会信息量的与日俱增,职场竞争的日趋激烈,越来越多的人更关注知识的积累、能力的培养作为信息存储的主要媒体之一图书,数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要使用方便而有效的方式来管理自己的书籍在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,为了便于图书资料的管理需要有效的图书管理软件对于日益扩大的图书馆,查找特定的书目总是借阅者或工作人员劳神费力,有时还没有结果因此往往是投入了大量的人力和财力却得不到高效的管理效率为了缩短借阅者的等待时间,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,从而达到提高图书借阅信息管理效率的目的,采用数据库技术生成的图书馆借阅管理系统将会极大地方便借阅者并简化图书馆管理人员和工作人员的劳动,使工作人员从繁忙、复杂的工作进入到一个简单、高效的工作中本文以高校图书馆管理系统管理系统开发过程为背景,全文分为目录、需求分析、概要设计、逻辑设计、物理设计,以及系统的实现等全过程在程序设计与调试上采用了自上而下,逐步细化,逐步完善的原则采用结构化的功能模块设计系统功能,可读性好,易于扩充基本功能全面,系统可读性好,易于维护、更新,安全性好
2.需求分析阶段
2.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.
3.3图书管理系统数据流程图顶层数据流图第2层数据流图(读者借阅,读者还书,读者查询,管理员查询,管理员修改)第3层数据流图(读者借阅)第3层数据流图(读者还书)第3层数据流图(查询图书信息,查询读者信息,查询借阅历史,查询罚款信息)第3层数据流图(管理员添加、删除、修改图书信息)第3层数据流图(管理员添加、删除、修改读者信息)第3层数据流图(管理员添加、删除、修改系统用户信息)
2.
3.4图书管理系统数据字典(a)数据项系统涉及的数据项有44项表
1.1数据项列表数据项编号数据项名数据项含义与其它数据项的关系存储结构别名DI-1BookID图书条码号char9条码号DI-2BookNo图书索书号char10索书号DI-3BookName图书名char20书名DI-4BookWriter图书作者char8作者DI-5BookPublish图书出版社char20出版社DI-6BookPrice图书单价char7单价DI-7BookDate图书出版日期Date出版日期DI-8BookClass图书分类char20类别DI-9BookMain图书摘要char200摘要DI-10BookPrim图书关键字char30关键字DI-11BookCopy图书副本数char5副本数DI-12BookState图书是否可借char10状态DI-13BookRNo所属馆室号同RoomNochar5馆室号DI-14ReaID读者条码号char9条码号DI-15ReaName读者姓名char10姓名DI-16ReaSex读者性别char2性别DI-17ReaNo读者学号char9学号DI-18ReaLBID读者类别编号同LBIDchar5类别编号DI-19ReaType读者类型(职务)char20类型DI-20ReaDep读者所在学院char20学院DI-21ReaGrade读者所属年级char5年级DI-22ReaPre读者所读专业char20专业DI-23ReaDate读者办证时间Date办证时间DI-24OutDate借阅日期Date借阅时间DI-25InDate归还日期Date归还时间DI-26YHDate应还日期Date应还时间DI-27Fine罚款金额char3罚款金额DI-28CLState是否交纳罚金char8处理状态DI-29LBID类别编号同ReaLBIDchar5类别编号DI-30LBName读者类别名char20类别名DI-31LBnum允许最多借书数量char5借阅数量DI-32LBbqx允许最长持有时间char4借阅期限DI-33LBqx借阅卡有效期char3有效期限DI-34MID管理员编号同RoomMIDchar10编号DI-35MName管理员姓名char10姓名DI-36MSex管理员性别char2性别DI-37Mpwd管理员口令char8口令DI-38MAuth管理员权限级别char4权限级别DI-39MTeleph管理员电话char15电话DI-40MAddre管理员地址char30住址DI-41RoomNo馆室号同BookRNochar5馆室号DI-42RoomMID馆室管理员编号同MIDchar10编号DI-43RoomNum馆室内图书数目char5数量DI-44RoomAddre馆室地址char20地址(b)数据结构表
1.2数据结构列表数据结构编号数据结构名数据结构含义组成DS-1Book馆藏图书信息BookIDBookNoBookNameBookWriterBookPublishBookPriceBookDateBookClassBookMainBookPrimBookCopyBookStateBookRNoDS-2Reader读者信息ReaIDReaNameReaSexReaNoReaLBIDReaTypeReaDepReaGradeReaPrefReaDateDS-3Borrow借阅信息BookIDReaIDBookNameBookWriterOutdateYHdateDS-4History借阅历史BookIDReaIDBookNameBookWriterOutdateIndateDS-5Fine罚款信息BookIDReaIDBookNameOutdateIndateFineCLState,MIDDS-6ReaderType读者类别LBIDLBNameLBnumLBbqxLBqxDS-7Maneger管理员信息MIDMNameMSexMpwdMAuthMTelephMAddreDS-8Room馆室信息RoomNORoomMIDRoomNumRoomAddre
2.
3.5处理逻辑描述表
1.3处理逻辑列表处理编号处理功能处理过程PR-1判断读者查询涉及的功能模块馆藏图书信息模块、读者信息模块、读者类别信息模块、借阅信息模块、借阅历史信息模块、罚款信息模块、管理员模块、馆室信息模块先确定查询所涉及的功能模块;然后,根据要查询的内容,确定查询数据流向;最后显示查询结果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.
53.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图各实体的属性如下所示图书BookBookIDBookNoBookNameBookWriterBookPublishBookPriceBookDateBookClassBookMainBookPrimBookCopyBookStateBookRN读者ReaderReaIDReaNameReaSexReaNoReaLBIDReaTypeReaDepReaGradeReaPrefReaDate管理员ManegerMIDMNameMSexMpwdMAuthMTelephMAddre馆室RoomRoomNoRoomMIDRoomNumRoomAddre读者类别ReaderTpyeLBIDLBNameLBnumLBbqxLBqx各E-R图中联系的属性如下所示借阅信息BorrowBookIDReaderIDBookNameBookWriterOutdateYHdate借阅历史HistoryBookIDReaderIDBookNameBookWriterOutdateIndate罚款信息FineBookIDReaderIDBookNameOutdateIndateFineCLStateMID4.逻辑设计阶段
4.1逻辑设计的任务和目标以上的概念设计阶段是独立于任何一种数据模型的,但是逻辑设计阶段就与选用的DBMS产品发生关系了,系统逻辑设计的任务就是将概念设计阶段设计好的基本E-R图转换为选用DBMS产品所支持的数据模型相符合的逻辑结构具体内容包括数据组织(将E-R图转换成关系模型、模型优化、数据库模式定义、用户子模式设计)、数据处理(画出系统功能模块图)两大任务
4.2数据组织
4.
2.1将E-R图转换为关系模型实体型转换为关系模式实体的属性就是关系的属性,实体的码就是关系的码对于实体间的联系则有以下不同的情况一个m n联系转换为一个关系模式与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合一个1n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码一个11联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并三个或三个以上实体间的一个多元联系可以转换为一个关系模式与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合具有相同码的关系模式可合并由于读者类别与读者、馆室与图书的联系方式是1:n(一对多),可以将其之间的联系与n端实体读者、图书合并,管理员与图书之间的维护联系也是1:n(一对多),同样也将其之间的联系与n端实体合并,而读者与图书之间的借阅和归还联系方式则是n:m(多对多),这样要把它们之间的联系转化为独立的关系模式,读者与管理员之间的罚款联系是m:n(多对多),将其联系也转化成独立的关系模式,具体的基本E-R图向关系模型的转化如下图书BookBookIDBookNoBookNameBookWriterBookPublishBookPriceBookDateBookClassBookMainBookPrimBookCopyBookStateBookRNo读者ReaderReaIDReaNameReaSexReaNoReaLBIDReaTypeReaDepReaGradeReaPrefReaDate管理员ManegerMIDMNameMSexMpwdMAuthMTelephMAddre读者类别ReaderTpyeLBIDLBNameLBnumLBbqxLBqx馆室RoomRoomNoRoomMIDRoomNumRoomAddre借阅信息BorrowBookIDReaderIDBookNameBookWriterOutdateYHdate借阅历史HistoryBookIDReaderIDBookNameBookWriterOutdateIndateYHdate罚款信息FineBookIDReaderIDBookNameOutdateIndateFineCLStateMID(注标有直线下划线的为主属性,标有波浪线下划线的是外键属性,主属性与外键属性一起构成主码)
4.
2.2模型优化关系模式BookReaderRoomReaderTypeManeger不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF,但是借阅关系模式、借阅历史关系模式、罚款关系模式(BorrowHistoryFine)中存在着一些数据冗余,现将三个关系模型进行合并,消除冗余,优化为借阅信息:BorrowBookIDReaderIDBookNameBookWriterOutdateIndateYHdateFineCLStaerMID
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用户子模式定义表
2.7用户子模式定义编号用户子模式View作用共性提供数据保密和安全保护机制V-1BookView便于查询和修改图书的基本信息V-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的一属性ReaIDBookID,经常在查询条件中出现,考虑在其之上建立聚簇索引;
4.罚款信息基本表Fine的一属性ReaIDBookID,经常在查询条件中出现,考虑在其之上建立聚簇索引;
5.3系统功能模块
5.
3.1读者基本信息的查询和更新模块将实现对读者基本信息的查询和更新(修改、添加、删除)操作,用于新生入学,毕业生离校,以及读者补办借阅证或更改信息的情况,具体的功能模块图如下
5.
3.2图书基本信息的查询和更新模块将完成对图书基本信息的查询、更新(修改、添加、删除)操作,用于读者对图书信息的查询及管理员添加新书、删除淘汰的旧书,具体的功能模块图如下所示6.数据库实施阶段
6.1建立数据库、数据表、视图、索引
6.
1.1建立数据库createdatabaseBook;
6.
1.2建立数据表
(1)读者类别信息表的建立createtableReaderTypeLBIDchar5primarykeyLBNamechar20notnullLBnumchar5notnullLBbqxchar4notnullLBqxchar3notnull
(2)管理员基本信息表的建立createtableManegerMIDchar10primarykeyMNamechar10notnullMSexchar2Mpwdchar8notnullMAuthchar40notnullMTelephchar15MAddrechar30checkMSex=男orMSex=女
(3)图书馆室基本信息表的建立createtableRoomRoomNochar5primarykeyRoomMIDchar10notnullRoomnumchar5RoomAddrechar20foreignkeyRoomMIDreferencesManegerMID
(4)馆藏图书基本信息表的建立createtableBookBookIDchar9primarykeyBookNochar20notnullBookNamechar50notnullBookWriterchar30notnullBookPublishchar20notnullBookPricechar7BookDatedatetimeBookClasschar20BookMainchar200BookPrimchar30BookCopychar5BookStatechar10notnullBookRNochar5notnullforeignkeyBookRNoreferencesRoomRoomNo
(5)读者基本信息表的建立createtableReaderReaIDchar9primarykeyReaNamechar10notnullReaSexchar2notnullReaNochar9notnullReaLBIDchar5notnullReaTypechar20ReaDepchar20ReaGradechar5ReaPrefchar20ReaDateDatetimeforeignkeyReaLBIDreferencesReaderTypeLBIDcheckReaSex=男orReaSex=女
(6)借阅基本信息表的建立createtableBorrowBookIDchar9ReaIDchar9OutdateDatetimenotnullYHdateDatetimenotnullIndateDatetimeFinechar5CLStatechar8MIDchar10notnullprimarykeyBookIDReaIDforeignkeyMIDreferencesManegerMID
6.
1.3建立视图
(1)用于查询图书基本信息的视图定义如下createviewBookview索书号书名作者出版社图书状态asselectBookNoBookNameBookWriterBookPublishBookStatefromBook
(2)用于读者基本信息查询的视图定义如下createviewReaderview读者姓名类型学院专业办证日期asselectReaNameReaTypeReaDepReaPrefReaDatefromReader
(3)用于显示当前借阅基本信息的视图定义如下createviewBorrowview读者编号书名作者借阅日期到期日期asselectReaIDBookNameBookWriterOutdateYHdatefromBorrowBookwhereBorrow.BookID=Book.BookIDandBorrow.Indateisnull
(4)用于借阅历史信息查询的视图定义如下createviewHistoryview读者编号书名借阅日期归还日期asselectReaIDBookNameOutdateIndatefromBorrowBookwhereBorrow.BookID=Book.BookIDandBorrow.Indateisnotnull
(5)用于查询罚款信息的视图定义如下createviewFineview读者编号书名借阅日期归还日期罚款处理状态asselectReaIDBookNameOutdateIndateFineCLStatefromBorrowBookwhereBorrow.BookID=Book.BookIDandFineisnotnull
6.
1.4建立索引createclusteredindexBookPublishonBookBookPublish;createclusteredindexReaDeponReaderReaDep;
6.
1.5建立触发器1.当删除Reader表中某一读者基本信息时,触发Borrow表,删除相应的记录createtriggerReader_deleteonReaderfordeleteasdeleteBorrowfromdeletedwhereBorrow.ReaID=deleted.ReaID2.当在中增加一条借阅记录时,使该图书的状态由“可借”变为“不可借”createtriggerBorrow_insert1onBorrowforinsertasdeclare@BookIDchar9select@BookID=BookIDfrominsertedupdateBooksetBookState=不可借whereBookID=@BookID
6.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_Book详见附录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中按书名和出版社查询(其它表的查询、修改、删除与以上各表的存储过程定义大致相同,这里不再具体列出)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@BookIDchar9@BookNochar20@BookNamechar50@BookWriterchar30@BookPublishchar20@BookPricechar7@BookDatedatetime@BookClasschar20@BookMainchar200@BookPrimchar30@BookCopychar5@BookStatechar10@BookRNochar5asinsertintoBookvalues@BookID@BookNo@BookName@BookWriter@BookPublish@BookPrice@BookDate@BookClass@BookMain@BookPrim@BookCopy@BookState@BookRNo;
2.Reader_Insert的定义:CREATEPROCEDUREReader_Insert@ReaIDchar9@ReaNamechar10@ReaSexchar2@ReaNochar9@ReaLBIDchar5@ReaTypechar20@ReaDepchar20@ReaGradechar5@ReaPrefchar20@ReaDateDatetimeasinsertintoReadervalues@ReaID@ReaName@ReaSex@ReaNo@ReaLBID@ReaType@ReaDep@ReaGrade@ReaPref@ReaDate;
3.Maneger_Insert的定义:CREATEPROCEDUREManeger_Insert@MIDchar10@MNamechar10@MSexchar2@Mpwdchar8@MAuthchar40@MTelephchar15@MAddrechar30asinsertintoManegeralues@MID@MName@MSex@Mpwd@MAuth@MTeleph@MAddre;
4.Borrow_Insert的定义:CREATEPROCEDUREBorrow_Insert@BookIDchar9@ReaIDchar9@OutdateDatetime@YHdateDatetime@IndateDatetime@Finechar5@CLStatechar8@MIDchar10asinsertintoBorrowvalues@BookID@ReaID@Outdate@YHdate@Indate@Fine@CLState@MID;
5.Query_Reader_R的定义createprocedureQuery_Reader_R@ReaIDchar9asselect*fromReaderviewwhere编号=ltrim@ReaID;
6.Query_Reader_M的定义createprocedureQuery_Reader_Masselect*fromReaderview
7.Query_Book_Writer的定义createprocedureQuery_Book_Writer@BookWriterchar50asselect*fromBookviewwhere作者like%+ltrim@BookWriter+%;
8.Query_Book_Name_Publish的定义createprocedureQuery_Book_Name_Publish@BookNamechar50@BookPublishchar20asselect*fromBookviewwhere书名=ltrim@BookNameand出版社=ltrim@BookPublish;
9.Delete_Reader的定义createprocedureDelete_Reader@ReaNochar9asdeletefromReaderwhereReaNo=ltrim@ReaNo;
10.Delete_Book的定义createprocedureDelete_Book@BookIDchar9asdeletefromBookwhereBookID=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表将图书由“可借”状态改为“不可借”状态)附录3所有的SQL运行语句createdatabaseBook;createtableReaderTypeLBIDchar5primarykeyLBNamechar20notnullLBnumchar5notnullLBbqxchar4notnullLBqxchar3notnullcreatetableManegerMIDchar10primarykeyMNamechar10notnullMSexchar2Mpwdchar8notnullMAuthchar40notnullMTelephchar15MAddrechar30checkMSex=男orMSex=女createtableRoomRoomNochar5primarykeyRoomMIDchar10notnullRoomnumchar5RoomAddrechar20foreignkeyRoomMIDreferencesManegerMIDcreatetableBookBookIDchar9primarykeyBookNochar20notnullBookNamechar50notnullBookWriterchar30notnullBookPublishchar20notnullBookPricechar7BookDatedatetimeBookClasschar20BookMainchar200BookPrimchar30BookCopychar5BookStatechar10notnullBookRNochar5notnullforeignkeyBookRNoreferencesRoomRoomNocreatetableReaderReaIDchar9primarykeyReaNamechar10notnullReaSexchar2notnullReaNochar9notnullReaLBIDchar5notnullReaTypechar20ReaDepchar20ReaGradechar5ReaPrefchar20ReaDateDatetimeforeignkeyReaLBIDreferencesReaderTypeLBIDcheckReaSex=男orReaSex=女createtableBorrowBookIDchar9ReaIDchar9OutdateDatetimenotnullYHdateDatetimenotnullIndateDatetimeFinechar5CLStatechar8MIDchar10notnullprimarykeyBookIDReaIDforeignkeyMIDreferencesManegerMIDcreateclusteredindexBookPublishonBookBookPublish;createclusteredindexReaDeponReaderReaDep;createviewBookview索书号书名作者出版社图书状态asselectBookNoBookNameBookWriterBookPublishBookStatefromBookcreateviewReaderview编号读者姓名类型学院专业办证日期asselectReaIDReaNameReaTypeReaDepReaPrefReaDatefromReadercreateviewBorrowview读者编号书名作者借阅日期到期日期asselectReaIDBookNameBookWriterOutdateYHdatefromBorrowBookwhereBorrow.BookID=Book.BookIDandBorrow.IndateisnullcreateviewHistoryview读者编号书名借阅日期归还日期asselectReaIDBookNameOutdateIndatefromBorrowBookwhereBorrow.BookID=Book.BookIDandBorrow.IndateisnotnullcreateviewFineview读者编号书名借阅日期归还日期罚款处理状态asselectReaIDBookNameOutdateIndateFineCLStatefromBorrowBookwhereBorrow.BookID=Book.BookIDandFineisnotnullcreatetriggerReader_deleteonReaderfordeleteasdeleteBorrowfromdeletedwhereBorrow.ReaID=deleted.ReaIDcreatetriggerBorrow_insert1onBorrowforinsertasdeclare@BookIDchar9select@BookID=BookIDfrominsertedupdateBooksetBookState=不可借whereBookID=@BookID南京理工大学《数据库系统》实验报告课程数据库系统院系计算机学院班级08065802成绩学号0806580242姓名张治国指导教师李波日期2010年6月12日目录TOC\o1-3\h\z\u1数据库设计
31.1需求分析
31.2概念模式设计
31.3关系模式设计32数据库编程
32.1表的创建
32.2数据的修改
32.3查询
42.4统计
42.5视图及索引
42.6约束及触发器43应用程序设计(选做)44小结41数据库设计
1.1需求分析本次设计的图书管理系统主要是模仿图书馆的工作系统,功能包括:读者信息,图书信息,增闪读者和图书,借阅图书,归还图书,图书丢失和罚款问题,毕业生归还图书,查询逾期未还图书、读者情况,及图书热度排行榜等
1.2概念模式设计
1.3关系模式设计Reader表属性名数据类型是否主键是否允许为空缺省值说明numberintYesNOTNULL00000000证件号码namevarchar255NoNULL姓名kindvarchar255NoNULL类型teleintNoNull联系方式graduallyvarchar255NoNOTNull否是否毕业生lostvarchar255NoNOTNULL否是否挂失moneyintNoNOTNULL0金额numintNoNOTNULL8最大借书量Book表属性名数据类型是否主键是否允许为空缺省值说明IDintYesNOTNULL00000000图书编号namevarchar255NoNULL书名writervarchar255NoNULL作者pprintvarchar255NoNull出版社kindvarchar255NoNull书籍类型pdatedatetimeNoNULL出版日期locatevarchar255NoNULL馆藏地numberintNoNULL馆藏数numintNoNOTNULL0借出次数Cutmoney表属性名数据类型是否主键是否允许为空缺省值说明numintYesNOTNULL00000000罚款编号IDintNoNULL图书编号numberintNoNULL读者编号moneyintNoNull罚款金额rmakevarchar255NoNOTNull否是否交款Bookborrow表属性名数据类型是否主键是否允许为空缺省值说明numintYesNOTNULL00000000借阅编号numberintNoNULL读者编号IDintNoNULL图书编号bdatedatetimeNoNull借阅时间rdatedatetimeNoNull应还时间Bookreturn表属性名数据类型是否主键是否允许为空缺省值说明numintYesNOTNULL00000000归还编号numberintNoNULL读者编号IDintNoNULL图书编号rdatedatetimeNoNull归还时间rreturnvarchar255NoNOTNull否是否归还overtimevarchar255NoNOTNull否是否过期lostvarchar255NoNOTNull否是否丢失2数据库编程
2.1表的创建Reader表CREATETABLEReadernumberintnamevarchar255kindvarchar255teleintgraduallyvarchar255lostvarchar255moneyintnumintPRIMARYKEYnumber;Book表CREATETABLEBookIDintnamevarchar255writevarchar255pprintvarchar255kindvarchar255pdatedatetimelocatevarchar255numberintnumintPRIMARYKEYID;Cutmoney表CREATETABLECutmoneynumintIDintREFERENCESBookIDnumberintREFERENCESReadernumbermoneyintPRIMARYKEYnum;Bookborrow表CREATETABLEBookborrownumintnumberintREFERENCESReadernumberIDintREFERENCESBookIDbdatedatetimerdatedatetimePRIMARYKEYnum;Bookreturn表CREATETABLEBookreturnnumintnumberintREFERENCESReadernumberIDintREFERENCESBookIDrdatedatetimerreturnvarchar255overtimevarchar255lostvarchar255PRIMARYKEYnum;
2.2数据的修改1)读者信息的修改(添加、删除、修改)添加:INSERTINTOReadernumbernamekindtelegraduallylostmoneynumVALUES00000001依鹄本科生88888888否否108;删除:DELETEFROMReaderWHEREnumber=00000001;修改:UPTATEReaderSETavaible=无效WHEREnumber=00000001;2)借书证的挂失、补办、充值挂失UPTATEReaderSETlost=是WHEREnumber=00000001;补办UPTATEReaderSETlost=是WHEREnumber=00000001;充值UPTATEReaderSETmoney=20WHEREnumber=00000001;3)书籍信息的修改增加新书:INSERTINTOBookIDnamewritepprintkindpdatelocatenumbernumVALUES88888888依鹄依鹄依鹄工作室小说2008-8-8第一图书馆55;增加已有书UPTATEBookSETnumber=6WHEREID=00000001;报废某本书UPTATEBookSETnumber=4WHEREID=00000001;4)馆藏位置的修改(增加新的阅览室或书架)修改馆藏位置UPTATEBookSETlocate=第二阅览室WHEREID=00000001;5)图书的借阅及归还借阅INSERTINTOBookborrownumnumberIDbdaterdateVALUES000100000001888888882010-05-012010-05-30;归还INSERTINTOBookreturnnumnumberIDrdaterreturnovertimelostVALUES000100000001888888882010-05-10是否否;6)图书损坏或丢失的处理罚款UPTATECutmoneyReaderSETBook.money=Book.money-Cutmoney.moneyWHEREnumber=00000001;
2.3查询1读者信息查询SELECT*FROMReaderWHEREnumber=000000012读者当前借阅明细查询(包括当前借阅书籍的条码号、书名、借阅日期、应还日期、馆藏地)SELECTBookborrow.numBook.IDBook.nameReader.numberReader.namebdateBookborrow.rdatelocaterreturnFROMBookborrowReaderBookBookreturnWHEREReader.number=00000001ANDrreturn=否3读者历史借阅明细查询(包括历史上所有借阅书籍的条码号、书名、借阅日期、归还日期、馆藏地)SELECTBookborrow.numBook.IDBook.nameReader.numberReader.namebdateBookreturn.rdatelocaterreturnFROMBookborrowReaderBookBookreturnWHEREReader.number=00000001ANDrreturn=是4过期未还的图书及相关读者信息的查询SELECTBookborrow.numBook.IDBook.nameReader.numberReader.namebdatelocaterreturnovertimeFROMBookborrowReaderBookBookreturnWHEREovertime=是5读者的图书遗失记录查询SELECTBookborrow.numBook.IDBook.nameReader.numberReader.namebdatelocateBookreturn.lostFROMBookborrowReaderBookBookreturnWHEREBookreturn.lost=是6书籍的各类检索(包括书籍的类型、书名、作者、出版社、出版年份、馆藏数量、在馆数量,且得出结果根据某属性排序)SELECT*FROMBookWHEREkind=小说7所有毕业生应归还图书情况查询SELECTBookborrow.numBook.IDBook.nameReader.numberReader.namebdatelocateBookreturn.rreturnReader.graduallyFROMBookborrowReaderBookBookreturnWHEREgradually=是
2.4统计12010年5月每日图书借出册数selectnamecountBookborrow.numAStheNumOfBorrowedfromBookborrowBookwherebdate=2010-5-1groupbynameorderbytheNumOfBorrowedDESC22010年5月热借图书排行榜selectnamecountBookborrow.numAStheNumOfBorrowedfromBookborrowBookwherebdate=2010-05-30ANDbdate=2010-05-01groupbynameorderbytheNumOfBorrowedDESC3orderbytheNumOfBorrowedDESC各类读者平均持有(借而未还)图书数量selectkindcountBookborrow.numAStheNumOfBorrowedfromBookborrowReadergroupbykindorderbytheNumOfBorrowedDESC
2.5视图及索引索引createindexkindindexonReaderkindcreateindexpdateindexonBookpdate视图在关系reader上创建一个视图,createviewxueshengasSelectnamenumFromReaderWherekind=’本科生’;在关系book上创建一个视图CreateviewlibobookasSelectnameIDFromBookWherewriter=’舞者书’;
2.6触发器Reader表CREATETABLEReadernumberintnamevarchar255kindvarchar255teleintgraduallyvarchar255lostvarchar255moneyintnumintPRIMARYKEYnumber;定义一个触发器来将读者借阅书刊限制为8本createtriggernumafterupdateofnumonReaderwhennew.num8updateReadersetnum=8wherenumber=newtuple.numberend3应用程序设计(选做)4小结未着手做这个实验之前,感觉很棘手,不知如何下手,后来看了一遍书之后,开始着手做,发现并非那样难,拼了一个通宵之后,设计逐渐成形,然后开始实现各种功能,此时碰到了很多问题,基本上每个表都有很大修改,发现很多问题,本身设计就是初步设计和不断修改到成熟的过程,期间到图书馆借阅了一些书籍作参考,经过几天的修改,实现了各项功能当然由于各种原因,书本知识并没有理解很透彻,可能实验还有很大不足和错误,请老师不吝指正,知道错误才能不断提高自己水平,为下面学习数据库打下良好基础由于时间和本人学习能力等原因,并没有做应用程序设计编程,将数据库真正用DELPHI或JAVA语言实现出来,在大三上学期学习中,我一定不足这个缺陷,将本实验更加完善图
2.1业务流程图图
2.2顶层数据流姓名证件号码读者类型联系方式读者信息是否挂失是否毕业生金额最大借书量借阅时间书名书籍条形码出版日期作者出版社图书信息馆藏地馆藏数书籍类型借出次数图书编号罚款金额读者编号图书罚款罚款编号是否交款应还时间读者编号借阅编号图书借阅信息图书编号借阅时间归还编号归还时间是否过期图书归还信息读者编号是否丢失借阅时间图书编号图书借阅信息读者信息图书图书归还信息图书罚款。