资源描述
信息工程学院数据库课程设计论文题 目:图书租赁管理系统数据库设计学 号:专业班级:姓 名:指导老师:完成日期:图书租赁管理系统数据库设计学生姓名:摘 要随着科学的发展,人类知识的范围在不断增长,书籍一直是人们获取并增长知识的主要途径,而各类书店在人们的学习生活中也逐渐占据了重要的位置。摆脱传统的人工管理方式,实现科学、有效地管理书店不仅能提高书店自身的发展,也能极大的方便各类读者的需求。因此,开发一个完善的图书租赁管理系统是十分必要的。本文介绍了在SQL Server2008和ORACLE环境下,设计开发一个图书租赁管理系统的星系过程。本系统采用自顶向下地分析与设计,自下而上地应用开发的策略,实现如下功能:对书籍信息的管理,对借阅者类别及信息,借书、还书的管理。形成了一个比较全面系统的管理模式。关键字:图书租赁;SQL Sever2008;ORACLE;读者管理;书籍管理引言1开发背景1开发目标及意义11需求分析11.1处理对象及组织11.2信息处理及系统功能11.3数据库系统分析21.3.1数据库性能需求分析21.3.2 数据库系统开发环境需求22数据库结构设计22.1 概念设计22.1.1 分E-R图建立32.1.2 全局/整体E-R图62.2 逻辑设计62.2.1 建立关系模式72.2.2 关系模式规范化处理82.2.3 用户子模式建立82.2.4 关系模式逻辑结构定义83 数据库物理设计113.1 物理设计的内容113.2索引的建立114数据库实施与测试114.1 数据库实施124.1.1 数据库及数据库对象建立124.1.2 数据入库124.2 数据库测试125总结126附录13附录1 数据流程图13附录2 数据字典17附录3 数据库及数据库对象建立213.1 数据库及数据表的建立(SQL Server2008)213.2 数据库及数据表的建立(Oracle)233.3 数据表视图的建立(SQL Server2008)253.4数据表视图的建立(Oracle)28附录4 触发器及存储过程304.1 存储过程的定义(SQL Server2008)304.2存储过程的定义(Oracle)374.3 触发器的定义(SQL Server2008)394.4 触发器的定义(Oracle)41附录5 数据查询及存储过程功能验证435.1数据查询及存储过程运行截图(SQL Server2008)435.2数据查询及存储过程运行截图(Oracle)48参考文献522009级信管专业3班数据库应用系统课程设计课程论文引言开发背景随着科学的发展,人类知识的范围在不断增长,书籍一直是人们获取并增长知识的主要途径,而各类书店在人们的学习生活中也逐渐占据了重要的位置。摆脱传统的人工管理方式,实现科学、有效地管理书店不仅能提高书店自身的发展,也能极大的方便各类读者的需求。因此,开发一个完善的图书租赁管理系统是十分必要的。开发目标及意义该图书租赁管理系统基于计算机技术,实现查询、借阅、归还的操作以及对收入信息、读者信息管理和书籍信息管理的功能。可以满足中小型书店的租书业务的顺利有效的进行。保证了数据的实时更新,不仅方便了书店工作人员对系统的管理,也利于人们更好的借阅书籍,归还书籍,满足读者的不同的需要。1需求分析需求分析就是分析用户的要求,通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。1.1处理对象及组织系统要处理的对象包括书籍信息、读者信息(主要是会员信息)、借阅信息、归还信息及收入信息等六个方面。(各个对象包括的详细信息见附录三数据字典)1.2信息处理及系统功能该图书租赁管理系统大体上分为四个部分书籍信息管理系统、读者信息管理系统,借阅归还系统和收入管理系统。书籍信息管理系统:实现书籍信息的更新和查询;读者信息管理系统:主要实现会员信息的更新,查询;借阅归还系统:实现不同类别读者的借阅和归还图书的管理;收入管理系统:实现不同情况下书店的收入情况(详情见附录一中的数据流程图和数据字典)1.3数据库系统分析1.3.1数据库性能需求分析该图书租赁管理系统可以提供书籍信息的查询和更新、读者信息(主要是会员信息)的查询和更新、借阅和归还书籍信息的查询和更新以及收入情况的查询和更新。1.3.2 数据库系统开发环境需求该数据库系统是在SQL Server2008的数据库应用软件环境下开发的,用数据库DDL语言定义数据库及数据库对象,用DML语言实现数据库中数据的查询和更新操作。2数据库结构设计主要包括概念设计和逻辑设计两个部分。概念结构设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型;而逻辑结构设计是将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化。2.1 概念设计概念设计主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型),它是整个数据库设计的关键,包括概念模型设计和新系统流程两个阶段。设计概念结构通常有四类方法:自顶向下。即首先定义全局概念结构的框架,然后逐步细化。自底向上。即首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构。逐步扩张。首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构。混合策略。即将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略中设计的各局部概念结构。2.1.1 分E-R图建立根据某个系统的具体情况,在多层的数据流图中选择一个适当层次的数据流图,作为设计分E-R图的出发点,让这组图中每一部分对应一个局部应用。先选择好局部应用后,对每一个局部应用逐一设计分ER图。将局部应用所包含的数据从数据字典中抽取出来,参照数据流图,标定局部应用中的实体、实体的属性、标识实体的码,确定实体之间的联系及其类型。(如图1到图3)图1 借阅归还系统分E-R图图2 读者信息管理系统分E-R图图3书籍信息管理系统分E-R图图4收入信息管理系统分E-R图各分E-R图每个实体的属性如下所示:收入信息:(Mno,Ddate,Trent,Efine,Bdfine,Lfine,DIncomeSum)书籍信息:(Bsno,Bname,Bprice,Bwriter,Bsort,Bscount,Bnowcount,Bnewcount)系统管理员:( Mno,Mname,Mphno)会员信息:( Vno,Vname,Vsex,Vphno ,Vwexpired,Vfee,Vacount,Vbcount,Waexit,Vmdate)2.1.2 全局/整体E-R图图5图书租赁管理系统总E-R图2.2 逻辑设计逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。逻辑结构设计一般要分3步进行:(1) 将概念结构转换为一般的关系、网状、层次模型;(2) 将转换来的关系、网状、层次模型向特定的DBMS支持下的数据模型转换;(3) 对数据模型进行优化。阐述逻辑设计阶段目标、任务和方法,重点介绍逻辑设计的主要内容。2.2.1 建立关系模式将E-R图向关系模型的转换一般遵循如下原则:(1) 一个实体型转换为一个关系模式;(2) 实体的属性就是关系的属性;(3) 实体的码就是关系的码。对于实体型间的联系有以下不同情况:(1) 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一段对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性转换为关系的属性,每个实体的码均是该关系的候选码。如果与某一端实体对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。(2) 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并,如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。(3) 一个m:n联系转换为一个关系模式。与该联系相连的各实体的码以及本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。(4) 3各或3个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。(5) 具有下沟通吗的关系模式可合并。关系模式表示形式为 R(U,F)由E-R图转换得到的关系模式如下:书籍信息(书的店内编号,书名,书的定价,书的作者,书的类别,书的总数量,目前库存量,新进书数量)会员信息(会员卡编号,会员姓名,会员性别,会员联系电话,会员费,会员允许借书最大量,会员已借册数,会员到期日期)会员借书(书的店内编号,会员卡编号,借出日期,应还日期)非会员借书(书的店内编号,非会员联系电话,借出日期,应还日期 ,押金)会员还书(会员卡编号,书的店内编号,应还日期,归还日期,是否过期,过期罚款,书受损罚款,书丢失赔偿金)非会员还书(书的店内编号,非会员联系电话,应还日期,归还日期,是否过期,非会员租金,过期罚款,书受损罚款,书丢失赔偿金) 系统管理员(管理员工号,管理员姓名,管理员联系电话)收入管理(管理员工号,管理日期,非会员租金,过期罚款,书受损罚款,书丢失赔偿金,当天收入总计)2.2.2 关系模式规范化处理根据关系规范化理论,在关系数据库中,对关系模式的基本要求是满足第一范式。在一范式的基础上,消除非主属性对码的部分函数依赖就转换为二范式,在二范式的基础上再消除非主属性对码的传递函数依赖就转换为三范式。依次关系规范化理论分析,以上由E-R图转换得到的关系模式均满足三范式模式的要求。2.2.3 用户子模式建立根据需求分析,建立满足不同需求的用户子模式,子模式表示形式为如下:表1 用户子模式编号视图名称数据项简介V-1BookinfoBname,Bwriter,Bsno,Bnowcount查询书籍信息V-2VBBinfoBsno,Vno,Ldate查询非会员借阅信息V-3TRBinfoBsno, Tphno,Trent,Tdeposit,Bdfine,Efine查询会员还书信息V-4InmanagerInfoMname, Mno,Mphno,DIncomeSum,Ddate查询进行收入管理的系统管理员信息2.2.4 关系模式逻辑结构定义表1 Book编号名称含义类型长度取值范围DL-1Bname书名varchar20DL-2Bsno书的店内编号char10000000-111111DL-3Bwriter书的作者varchar20DL-4Bprice书的定价numeric10DL-5Bsort书的类别char10DL-6BScount书的总数量smallintDL-7Bnowcount目前库存量smallintDL-8Bnewcount新进书的数量smallint表2 Vip编号名称含义类型长度取值范围DL-10Vname会员姓名varchar20DL-11Vno会员卡编号char10000-999DL-12Vsex会员性别char10DL-13Vphno会员联系电话char15DL-14VMdate会员到期日期datetimeDL-15Vsort会员类别char10DL-16Vwexpired会员是否过期char2DL-17Waexit是否允许会员退会char2DL-18Vfee会员费smallintDL-19VBcount会员已借册数smallintDL-20VAcount会员允许借书最大量samllint表3 SystemManager编号名称含义类型长度取值范围DL-33Mno管理员工号char4DL-35Mname管理员姓名varchar20DL-36Mphno管理员联系电话char15表4 会员借书编号名称含义类型长度取值范围DL-2Bsno书的店内编号char10000000-111111DL-11Vno会员卡编号char10000-999DL-23Ldate借出日期datetimeDL-25Rdeadline应还日期datetime表5 非会员借书编号名称含义类型长度取值范围DL-2Bsno书的店内编号char10000000-111111DL-23Ldate借出日期datetimeDL-25Rdeadline应还日期datetimeDL-20Tphno非会员联系电话char15DL-21Tdeposit非会员押金smallint表6 会员还书编号名称含义类型长度取值范围DL-2Bsno书的店内编号char10000000-111111DL-10Vno会员卡编号char10000-999DL-19Wrexpired是否过期还书char2DL-24Rdate归还日期datetimeDL-25Rdeadline应还日期datetimeDL-26Efine过期还书的罚款numericDL-27Bdfine由于书籍损坏交的罚款smallintDL-28Lfine由于丢失而缴纳的赔偿金smallint表7 非会员还书编号名称含义类型长度取值范围DL-2Bsno书的店内编号char10000000-111111DL-19Wrexpired是否过期还书char2DL-24Rdate归还日期datetimeDL-25Rdeadline应还日期datetimeDL-26Efine过期还书的罚款numericDL-27Bdfine由于书籍损坏交的罚款smallintDL-28Lfine由于丢失而缴纳的赔偿金smallintDL-22Trent非会员租金smallint表8 收入信息编号名称含义类型长度取值范围DL-16Vfee会员费smallintDL-26Efine过期还书的罚款numeric(10,0)DL-27Bdfine由于书籍损坏交的罚款smallintDL-28Lfine由于丢失而缴纳的赔偿金smallintDL-22Trent非会员租金smallintDL-29Mno管理员工号char4DL-30Ddate管理日期datetime3 数据库物理设计数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于选定的数据库管理系统。为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是数据库的物理设计。3.1 物理设计的内容通常关系数据库物理设计的内容主要包括:1. 为关系模式选择存储方法;2. 设计关系、索引等数据库文件的物理存储结构数据库存储位置在SQL Server2008默认路径下,采用B+树索引方法作为数据库的存取方法。3.2索引的建立为了提高对书籍信息的查询速度,对书的店内编号建立聚簇索引;对会员卡号建立唯一索引。4数据库实施与测试完成数据库的物理设计之后,设计人员就要用RDBMS提供的数据定义语言和其他实用程序将数据库逻辑设计和物理设计结果严格描述出来,成为DBMS可以接受的源代码,再经过调试产生目标模式。然后就可以组织数据入库了,这就是数据库实施阶段。该阶段主要包括数据库实施和测试两个部分。4.1 数据库实施4.1.1 数据库及数据库对象建立主要包括:数据库、基本表、视图、索引、触发器以及存储过程;对于具体的DDL语句以及相关代码。(详见附录3)4.1.2 数据入库对各个主要数据表要录入20条以上的记录,方法可用EXCEL批量导入,也可以逐条录入。4.2 数据库测试主要内容是对建立的数据库及数据库对象进行测试(详见附录5及附录6)。5总结在此次数据库实习过程中,我开发的是一个图书租赁管理系统。当初最终选择这个题目的原因是多方面的,主要的有一点就是我以前有过类似的经历,所以觉得可能能设计出更合理的同时又符合设计要求的数据库系统。而万事开头难,在需求分析环节主要考虑了图书租赁模式中最主要的三个流水业务:书籍管理、借阅归还图书业务和读者信息管理业务。就整个系统的完成情况来看,在需求分析阶段设计的各个查询和更新操作均已通过存储过程和触发器实现。对该系统中的各个功能实现分为SQL实现和Oracle实现,其中,在SQL下,由于对于环境和语法结构比较熟悉,因此编写触发器和存储过程还算比较顺利。然而在Oracle下,刚开始简直寸步难行,Oracle的语法结构和SQL几乎完全不同,除了数据表的建立较为简单,在Oracle中写存储过程和触发器给我留下了很深的印象,特别是在调试的过程中出现了很多让我匪夷所思的错误,最后在老师和同学的帮助下算是基本上解决了。通过此次数据库实习,首先使我充分了解了开发数据库系统的基本流程,在各个环节的基本任务和基本方法,与此同时,我也体会到了在开发数据库系统的过程中,要养成书写文档的好习惯,随时记录项目开发的进度和内容,以便督促我们在规定的时间内完成规定的任务。除此之外,通过在不同的环境下编写存储过程和触发器,使我对这两者有了更深入的理解,能够用基本的查询和判断来实现复杂的功能,特别是SQl和Oracle中内置函数的调用。但是,在实习的过程中,不可避免的出现了很多错误,特别是需求分析阶段所做的数据流图、数据字典等,它们既是整个数据库开发的基础,也为后面实施各种结构设计提供参考,好多错误都是在进行到后面的结构设计时发现后又要返回重新定义需求分析。我觉得这次最大的收获除了知识的掌握和能力得到培养锻炼之外,懂得了一个道理,凡事细节决定了事情的成败,因为一个小小的错误却可能导致其他的问题需要重头来过。还有就是要抱着一颗虚心学习的心,对于不懂的问题要及时与老师和同学沟通,才能更好的促进学习。在这样学习的过程中,老师们总是耐心的为我们答疑解惑,非常感谢老师们。尤其是宋老师,从来都那么有耐心,无论我们的问题在老师看来是多么的简单,她都从来是耐心的为我们一一解答,谢谢宋老师。6附录附录1 数据流程图图1 顶层数据流程图表2 第一层数据流程图表3 第二层数据流程图书籍管理表4 第二层数据流程图读者信息管理表5 第二层数据流程图图书借阅表6 第二层数据流程图图书归还附录2 数据字典表1 数据项列表编号名称含义类型长度取值范围DL-1Bname书名varchar20DL-2Bsno书的店内编号char10000000-111111DL-3Bwriter书的作者varchar20DL-4Bprice书的定价numeric10DL-5Bsort书的类别char10DL-6BScount书的总数量smallintDL-7Bnowcount目前库存量smallintDL-8Bnewcount新进书的数量smallintDL-9Vname会员姓名varchar20DL-10Vno会员卡编号char10000-999DL-11Vsex会员性别char10DL-12Vphno会员联系电话char15DL-13VMdate会员到期日期datetimeDL-14Vwexpired会员是否过期char2DL-15Waexit是否允许会员退会char2DL-16Vfee会员费smallintDL-17VBcount会员已借册数smallintDL-18VAcount会员允许借书最大量samllintDL-19Wrexpired是否过期还书char2DL-20Tphno非会员联系电话char15DL-21Tdeposit非会员押金smallintDL-22Trent非会员租金smallintDL-23Ldate借出日期datetimeDL-24Rdate归还日期datetimeDL-25Rdeadline应还日期datetimeDL-26Efine过期还书的罚款numericDL-27Bdfine由于书籍损坏交的罚款smallintDL-28Lfine由于丢失而缴纳的赔偿金smallintDL-29Mno管理员工号char4DL-30Ddate管理日期datetimeDL-31Mname管理员姓名varchar20DL-32Mphno管理员联系电话char15表2 数据结构列表编号名称含义组成DS-1IBookRecord进书记录书的店内编号,书名,书的作者DS-2Reader读者读者类别,非会员联系电话,会员联系电话,会员编号DS-3SystemManager系统管理员管理员号,值班日期,联系电话表3 处理逻辑的描述19编号名称简述输入的数据流处理输出的数据流P1.1抽取书籍编号将外来的书籍进行分类,若有店内编号则为还回的书,否则是新进书书号在书号书的店内编号表中查找所给书号的店内编号书的店内编号P1.2登记入库将还回的书放回书籍流水找到书的店内编号的书号将找到书籍编号的书的信息放回书库书籍信息,S2借阅流水P1.3创建店内编号根据将要被编号的书籍的书的编号和书的类别赋予新的店内编号没有找到书的店内编号的书号为其创建店内编号新书的店内编号,S2借阅流水,S1书店台账P2.1检查书的状况管理员根据读者的将还的书的情况,以及是否过期,来决定是否需要罚款,然后进行更新借书记录读者即将还书的书的店内编号检查是否需要罚款罚款单,将还书的书目P2.2读者分类将书籍按照会员和非会员所借来却分,从而进行不同的还书操作。读者信息分类会员借书记录,和非会员借书记录P2.3会员还书会员还书时,只需消除该条借书记录,同时更新该书在书库的信息会员所借书的店内编号消除该条借书记录,并更新该书的书库信息书的信息,S2借阅流水P2.4非会员还书非会员还书时,除了消除该书的借阅记录,还需要收取租金,退回其押金。非会员所借书的店内编号消除该条借书记录,并更新该书的书库信息。同时,收取租金,和返回读者的押金。书的信息,租金,S2借阅流水P3.1分类根据系统管理员提供的借书记录,进行分类得到会员借书登记表和非会员借书登记表借书登记根据是否有会员卡编号,将借书记录分为会员的和非会员的会员借书记录,和非会员借书记录P3.2查询会员根据得到的会员借书登记表查询会员,从而得到会员借书信息会员借书登记表根据会员卡编号查询相应的会员借书信息某个会员的借书信息P3.3判断权限根据某个会员的借书信息,根据会员类别,已借册数决定是否还有权限再借,还可再借几本某个会员借书信息判断权限还可再借阅的册数P3.4允许借书从上一步完了之后得到的还可再借阅的册数进行借书登记还可再借阅的册数,借阅书的店内编号进行借阅登记 会员借书信息,S2借阅流水,S1书店台账P3.5非会员借书根据得到的非会员借书登记表,对非会员借书进行登记非会员借书登记表 登记非会员的借书信息非会员的借书信息,S2借阅流水,S1书店台账P3.6会员还书经过权限判断之后,如果会员想要再借,需要先将之前借的书还回,所以要进行会员还书的操作未还回的书目进行还书登记还回书的信息,S2借阅流水,S1书店台账P4.1查找通过系统管理员提供的读者信息,查找得到有借阅记录的读者信息,从而得到欲借书的非会员读者的信息读者信息按照是否有借阅历史来得到有借阅记录的读者信息有借阅记录的读者信息P4.2判断是否是会员根据给出的有借阅记录的读者信息中,根据是否有会员卡编号来判断是否是会员有借阅记录的读者信息判断是否是会员会员信息P4.3查看借书记录根据所得的会员借书记录,得到所借书目均已还回的会员的名单,和超出期限的会员的名单会员借书记录根据会员类别所决定的最大借书量,和已借册数的大小关系,判断得到所借书目均已还回的会员名单;根据会员到期日期,得到超出期限的会员名单所借书目均已还回的会员名单,超出期限的会员名单P4.4删除会员将超出期限的会员和允许退回的会员的会员信息从会员信息表中删除超出期限的会员信息,将要退会的会员的会员信息将所输入的可以退出的会员信息从会员信息表中删除删除相应会员信息后的会员信息,S3会员流水P4.5决定是否成为会员读者根据自己想要借书的情况,比如由于时间等的考虑,决定是否成为会员欲借书的非会员读者信息读者做选择选择入会的读者的信息P4.6获取会员号记录将入会的读者的信息,同时赋予其 会员卡编号,同时选择会员类别等入会者的信息赋予其会员卡编号,选择会员类别新会员的信息P4.7更新会员信息将新入会的读者的信息作为会员信息记录记入会员信息表中新会员的信息更新会员信息表添加会员后的会员信息,S3会员流水2009级信管专业3班数据库应用系统课程设计课程论文附录3 数据库及数据库对象建立3.1 数据库及数据表的建立(SQL Server2008)create database BBScreate table Book(Bsno char(15) primary key,Bname varchar (30)not null,Bprice numeric (10)not null,Bwriter varchar (20)unique,Bsort char (10)not null,BScount smallint not null,BNowcount smallint ,BNewcount smallint)create table Vip(Vno char (10) primary key,Vname varchar (20)unique,Vsex char (5)check(vsex=男or vsex=女),Vphno varchar(11)not null,Vwexpired char (2)check(vwexpired=是or vwexpired=否),Vfee smallint,VAcount smallint,VBcount smallint,Waexit char (10)check(waexit=允许or waexit=不允许),VMdate datetime )create table VBorrowBook(Bsno char(15)primary key,Vno char(10),Ldate datetime,Rdeadline datetime,foreign key(Vno)references Vip(Vno),foreign key(Bsno)references Book(Bsno)create table TBorrowBook(Bsno char(15),Tphno char(15),Ldate datetime,ReadLine datetime,Tdeposit smallint,primary key (Bsno,Tphno),foreign key(Bsno)references Book(Bsno)create table VReturnBook(Vno char(10),Bsno char(15),Rdeadline datetime,Rdate datetime,Wrexpired char(2),Bdfine smallmoney,Lfine smallmoney,Efine smallmoney,primary key(Bsno,Vno),foreign key(Vno)references Vip(Vno),foreign key(Bsno)references Book(Bsno)create table TReturnBook(Bsno char(15),Tphno char(15),Readline datetime,Rdate datetime,Wrexpired char(2),Trent smallint,Efine smallint,Bdfine smallint,Lfine smallint,primary key(Bsno,Tphno),foreign key(Bsno)references Book(Bsno)create table SystemManager(Mno char(4)primary key,Mname varchar(20),Mphno char(15)not null)create table Income(Mno char(4) primary key,Ddate datetime,Trent smallint,Efine smallint,Bdfine smallint,Lfine smallint,Vfee smallint,DIncomeSum smallint,foreign key(Mno)references SystemManager(Mno)3.2 数据库及数据表的建立(Oracle)create database BBScreate table Book(Bsno char(15) primary key,Bname varchar (30)not null,Bprice numeric (10)not null,Bwriter varchar (20)unique,Bsort char (10)not null,BScount smallint not null,BNowcount smallint ,BNewcount smallint)create table Vip(Vno char (10) primary key,Vname varchar (20)unique,Vsex varchar (5)check(vsex=男or vsex=女),Vphno varchar(11)not null,Vwexpired varchar (2)check(vwexpired=是or vwexpired=否),Vfee smallint,VAcount smallint,VBcount smallint,Waexit varchar (10)check(waexit=允许or waexit=不允许),VMdate date )create table VBorrowBook(Bsno varchar(15)primary key,Vno varchar(10),Ldate date,Rdeadline date,foreign key(Vno)references Vip(Vno),foreign key(Bsno)references Book(Bsno)create table TBorrowBook(Bsno varchar(15),Tphno varchar(15),Ldate date,ReadLine date,Tdeposit smallint,primary key (Bsno,Tphno),foreign key(Bsno)references Book(Bsno)create table VReturnBook(Vno varchar(10),Bsno varchar(15),Rdeadline date,Rdate date,Wrexpired varchar(2),Bdfine number,Lfine number,Efine number,primary key(Bsno,Vno),foreign key(Vno)references Vip(Vno),foreign key(Bsno)references Book(Bsno)create table TReturnBook(Bsno char(15),Tphno char(15),Readline date,Rdate date,Wrexpired char(2),Trent smallint,Efine smallint,Bdfine smallint,Lfine smallint,primary key(Bsno,Tphno),foreign key(Bsno)references Book(Bsno)create table SystemManager(Mno char(4)primary key,Mname varchar(20),Mphno char(15)not null)create table Income(Mno char(4) primary key,Ddate datet,Trent smallint,Efine smallint,Bdfine smallint,Lfine smallint,Vfee smallint,DIncomeSum smallint,foreign key(Mno)references SystemManager(Mno)3.3 数据表视图的建立(SQL Server2008)1. 查询会员所借书的信息表create view VBBinfo as select Book.Bsno,Vno,Bwriter,BnameFROM Book,VBorrowBook where Book.Bsno=VBorrowBook.Bsno2.查询非会员所借书的信息表 create view TBBinfo as select Book.Bsno,Tphno from Book,TBorrowBook where Book.Bsno=TBorrowBook.Bsno 3.查询进行收入管理的系统管理员的信息create view InmanagerInfoas select Mname,SystemManager.Mno,Mphno,DIncomeSum,Ddate from SystemManager,Income where SystemManager.Mno=Income.Mno3.4数据表视图的建立(Oracle)1.查询会员所借书的信息表create view VBBinfoasselect Book.Bsno,Vno,Bwriter,BnameFROM Book,VBorrowBookwhere Book.Bsno=VBorrowBook.Bsno2.查询非会员所借书的信息表create view TBBinfoasselect Book.Bsno,Tphnofrom Book,TBorrowBookwhere Book.Bsno=TBorrowBook.Bsno3.查询进行收入管理的系统管理员的信息create view InmanagerInfoasselect Mname,SystemManager.Mno,Mphno,DIncomeSum,Ddatefrom SystemManager,Incomewhere SystemManager.Mno=Income.Mno附录4 触发器及存储过程4.1 存储过程的定义(SQL Server2008)1.P1_Book_Insert create procedure P1_Book_Insert Bsno char(15) , Bname char (30), Bprice numeric (10), Bwriter char (20), Bsort char (10), BScount smallint, BNowcount smallint , BNewcount smallint as insert into Book values(Bsno,Bname,Bprice,Bwriter, Bsort,Bscount,Bnowcount,Bnewcount);2.P2_Vip_Insert create procedure P2_Vip_Insert Vno char (10) , Vname varchar (20), Vsex char (5), Vphno varchar(11), Vwexpired char (2), Vfee smallint, VAcount smallint, VBcount smallint, Waexit char (10), VMdate datetime as insert into Vip values(Vno,Vname,Vsex,Vphno,Vwexpired,vfee, Vacount,Vbcount,Waexit,Vmdate);3.P3_SystemManager_Insertcreate procedure P3_SystemManager_InsertMno char(4),Mname varchar(20),Mphno char(15)asinsert into SystemManagervalues(Mno,Mname,Mphno)4.P4_Income_Insertcreate procedure P4_Income_InsertMno char(4),Ddate datetime,Trent smallint,Efine smallint,Bdfine smallint,Lfine smallint,Vfee smallint,DIncomeSum smallintasinsert into Incomevalues(Mno,Ddate,Trent,Efine,Bdfine,Lfine,Vfee,DIncomeSum)5.P5_VBorrowBook_Insertcreate procedure P5_VBorrowBook_InsertBsno char(15),Vno char(10),Ldate datetime,Rdeadline datetimeasinsert into VBorrowBookvalues(Bsno,Vno,Ldate,Rdeadline)6.P6_VReturnBook_Insertcreate procedure P6_VReturnBook_InsertVno char(10),Bsno char(15),Rdeadline datetime,Rdate datetime,Wrexpired char(2),Bdfine smallmoney,Lfine smallmoney,Efine smallmoneyasinsert into VReturnBookvalues(Vno,Bsno,Rdeadline,Rdate,Wrexpired,Efine,Bdfine,Lfine)7.P7_TBorrowBook_Insertcreate procedure P7_TBorrowBook_InsertBsno char(15),Tphno char(15),Ldate datetime,ReadLine datetime,Tdeposit smallintasinsert into TBorrowBookvalues(Bsno,Tphno,Ldate,Readline,Tdeposit)8.P8_TReturnBook_Insertcreate procedure P8_TReturnBook_InsertBsno char(15),Tphno char(15),Readline datetime,Rdate datetime,Wrexpired char(2),Trent smallint,Efine smallint,Bdfine smallint,Lfine smallintasinsert into TReturnBookvalues(Bsno,Tphno,Readline,Rdate,Wrexpired,Trent,Efine,Bdfine,Lfine)9.P9_Book_Deletecreate procedure P9_Book_DeleteBname char(30)asdeletefrom Bookwhere Bname=RTRIM(LTRIM(Bname);10.P10_SystemManager_Deletecreate procedure P10_SystemManager_DeleteMno char(4)asdeletefrom SystemManagerwhere Mno=RTRIM(LTRIM(Mno);11.P11_Vip_Deletecreate procedure P11_Vip_DeleteVno char(10)asdeletefrom Vipwhere Vno=RTRIM(LTRIM(Vno);12.当某本书的信息被删除时,其对应的借阅信息也删除create procedure P1_del_borrowBname char(15)asdelete from Bookwhere Bname=Bname13.查询书籍信息,如果书库中还有该书可借,进行借阅,否则,出提示信息。create procedure book_canborrowBname varchar(30)asdeclareBscount smallint,Bnowcount smallint,Bprice numeric(10,0),Bsno char(15),Vno char(10),Ldate datetime,Readline datetime,Tdeposit smallint,Tphno char(15)/*从Book表中选出书的总量*
展开阅读全文