《2022年数据库原理简单的数据库系统设计——图书管理系统董迎顺知识 .pdf》由会员分享,可在线阅读,更多相关《2022年数据库原理简单的数据库系统设计——图书管理系统董迎顺知识 .pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、长春大学计算机学院网络工程专业数据库原理实验报告实验名称:实验五简单的数据库系统设计图书管理系统班级:网络五班姓名:董迎顺学号:041440516 实验地点:机房日期:2015-12-7 一、实验目的:通过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过程,进一步理解和掌握数据库的设计过程及方法。二、实验内容、要求和环境:【实验要求】注:将完成的实验报告重命名为:班级+学号+姓名+(实验五),(如:041340538张三(实验五),发邮件到:。提交时限:本次实验后24小时之内。1.实验课要携带教材、学习辅导、老师下发的实验报告文档等。2.课前要对实验内容和步骤部分进行预习。【实验环境
2、】1.SQL SERVER 2005/2008;2.KingBase ES V7.0,人大金仓。【实验内容和步骤】一个简单的图书管理系统包括图书馆内书籍的信息、学校在校学生的信息以及学生的借阅信息。此系统功能分为面向学生和面向管理员两部分,其中面向学生部分可以进行借阅、续借、归还和查询书籍等操作;面向管理员部分可以完成书籍和学生的增加、删除和修改以及对学生借阅、续借、归还的确认。参照附录的实验报告参考实例,完成如下内容:1.需求分析(1)借阅人基本信息的查询,输入,插入,修改,删除。包括借阅人的图书证号,姓名,班级,电话,已借书目,能否能借书。(2)图书基本信息的查询,输入,插入,修改,删除。
3、包括图书的图书编号,书名,书号,类别,定价,入库时间,库存量等。(3)借阅的基本信息的查询,输入,插入,修改,删除。包括借阅的借书时间,应还时间,图书证号,图书编号,是否续借等。(4)借阅书籍基本信息的查询,输入,插入,修改,删除。包括借阅书籍的图书编号,图书证号,书名等。(5)归还书籍基本信息的查询,输入,插入,修改,删除。包括归还书籍的图书编号,图书证号,书名等。(6)管理基本信息的查询,输入,插入,修改,删除。包括管理的图书编号,图书证号,登记借书日期,是否在库,存放位置等。名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 13 页 -(7)管理员基本信息的查询,输入,插入,
4、修改,删除。包括管理员的编号,姓名,性别,值日时间,联系方式等。2.概念结构设计(E-R 图)实体:图书信息,借阅书籍,归还书籍,借阅人,管理员联系:借阅信息,管理信息。m m 3.逻辑结构设计通过 E-R 图,写出关系模式的逻辑结构。借阅人(图书证号【主码】,姓名,班级,电话,已借书目,能否能借书)图书基本信息(图书编号【主码】,书名,书号,类别,定价,入库时间,库存量)借阅的基本信息(图书证号,图书编号【外码】,借书时间【主码】,应还时间,是否续借)借阅书籍基本信息(图书编号【外码】,图书证号【外码】,书名)归还书籍基本信息(图书编号【外码】,图书证号【外码】,书名)管理基本信息(图书编号
5、【外码】,图书证号【外码】,登记借书日期【外码】,是否在库,存放位置)管理员基本信息(编号【主码】,姓名,性别,值日时间,联系方式)4.物理设计图书信息图书编号书名类别书号定价入库时间库存量借 阅信息管理图书编号借书时间借书时间应还时间存放位置登记日期图书编号是否在库图书证号归还书籍借阅书籍借阅人图书编号图书证号书名姓名班级图书证号已借书目电话能否能借书管理员姓名性别编号值日时间联系方式图书编号图书证号姓名名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 13 页 -1.图书基本信息属性数据类型长度主码/外码图书编号char 10 主码书名char 10 书号char 10 类别c
6、har 10 定价money 入库时间date 库存量int 3.借阅人基本信息属性数据类型长度主码/外码姓名char 10 电话char 10 班级char 10 图书证号char 10 主码已借书目int 能否能借书char 2 4.借阅的基本信息属性数据类型长度主码/外码图书证号char 10 图书编号char 10 外码借书时间date 主码应还时间date 是否续借char 2 5.借阅书籍基本信息属性数据类型长度主码/外码图书编号char 10 外码图书证号char 10 外码书名char 10 6 管理基本信息属性数据类型长度主码/外码图书编号char 10 外码图书证号char
7、 10 外码登记借书日期date 外码是否在库char 2 存放位置char 10 7 管理员基本信息属性数据类型长度主码/外码姓名char 10 性别char 2 编号char 10 主码值日时间date 联系方式char 10 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 13 页 -5.用 SQL 实现数据库的设计,并在SQL Server 上调试通过。(1)建表(考虑完整性约束)/*图书基本信息*/createtable 图书基本信息(图书编号char(10)primary key,书名char(10),书号char(10),类别char(10),定价money,入库时
8、间date,库存量int)/*借阅人基本信息*/createtable 借阅人(图书证号char(10)primary key,姓名char(10),班级char(10),电话char(10),已借书目int,能否能借书char(2),)/*借阅基本信息*/createtable借阅的基本信息(图书证号char(10),图书编号char(10)references 图书基本信息(图书编号),借书时间dateprimary key,应还时间date,是否续借char(10),)/*借阅书籍基本信息*/createtable借阅书籍基本信息(图书编号char(10)references图书基本信息
9、(图书编号),图书证号char(10)references借阅人(图书证号),书名char(10)/*归还书籍基本信息*/createtable 归还书籍基本信息(图书编号char(10)references图书基本信息(图书编号),图书证号char(10)references借阅人(图书证号),书名char(10)/*管理基本信息*/createtable 管理基本信息(名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 13 页 -图书编号char(10)references图书基本信息(图书编号),图书证号char(10)references借阅人(图书证号),登记借书日期da
10、tereferences借阅的基本信息(借书时间),是否在库char(2),存放位置char(10)/*管理员基本信息*/createtable 管理员基本信息(姓名char(10),性别char(2),编号char(10)primary key,值日时间date,联系方式char(10)(2)学生、图书以及借阅信息的输入、删除和修改。/*借阅人信息输入*/insertinto借阅人values(20151214,张三,网络五班,1234564789,3,能)insertinto借阅人values(20151216,王五,网络五班,1434564789,1,能)insertinto借阅人val
11、ues(20151217,董六,网络五班,1534564789,2,能)insertinto借阅人values(20151218,孙七,网络五班,1634564789,3,能)/*图书基本信息输入*/insertinto 图书基本信息values(000001,英语,b001,语言类,30,2015-12-01,150)insertinto 图书基本信息values(000002,线性代数,b011,几何类,34,2015-11-01,100)insertinto 图书基本信息values(000003,数据库,b101,计算机类,40,2015-12-11,90)insertinto 图书基
12、本信息values(000004,近代史,b111,历史类,25,2015-10-01,50)名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 13 页 -/*借阅的基本信息输入*/insertinto 借阅的基本信息values(20151214,000001,2015-12-11,2016-01-11,否)insertinto 借阅的基本信息values(20151216,000002,2015-11-11,2015-12-11,否)insertinto 借阅的基本信息values(20151217,000003,2015-12-12,2016-01-12,否)insertin
13、to 借阅的基本信息values(20151218,000004,2015-12-10,2016-01-10,否)三、思考题:对数据库设计的过程有了哪些进一步的理解?答;通过这次的课程设计,我对数据库有了进一步的了解,我熟练的掌握了数据库的一些基本语法,比如如何建表,以及添加,删除,查找,更新等操作。我也练习了创建E-R 图和从 E-R 图得到关系图,通过设计物理结构,来创建一个图书管理系统。马上就要期末考试了,这次课程设计,帮助了我复习以前的知识。五、教师评语:实验成绩:教师:(签名)年月日附:实验报告参考示例零件交易中心管理系统实验报告一、实验目的通过完成从用户需求分析、数据库设计到上机编
14、程、调试和应用等全过程,进一步理解和掌握数据库的设计过程及方法。二、实验内容零件交易中心管理系统主要提供顾客和供应商之间完成零件交易的功能,其中包括供应商信息、顾客信息以及零件信息。供应商信息包括供应商、供应商号、地址、电话、简介;顾客信息包括顾客号、顾客名、地址、电话;零件信息包括零件号、零件名、重量、颜色、简介等。此系统可以让供应商增加、删除和修改所提供的零件产品,还可以让顾客增加、删除和修改所需求的零件。交易员可以利用顾客提出的需求信息和供应商提出的供应信息来提出交易的建议,由供应商和顾客进行确认后完成交易。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 13 页 -三、实
15、验过程1 需求分析(1)供应商供应商的操作流程如图1 所示。图 1(2)顾客顾客的地位和供应商几乎是对称的,所以功能分类上也很相似。顾客的操作流程如图2 所示:图 2(3)交易员交易员的工作就是提出交易和完成交易。需要仔细考虑的问题是:一个交易如何产生,并如何达成。这可以用图3来说明。图 3 处理交易的时候可能面临如下问题:a.一个交易只能在交易双方都同意的情况下才可以进行,所以数据库中的供求信息只能作为达成某个交名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 13 页 -易的基础;b.交易的双方可能不同时使用这个系统,因此需要系统提供一个双方交换信息的方式;c.系统需要提供一种
16、方便系统(交易员)向用户提出建议来促成交易的途径,并在保证数据库数据完整性的情况下达成交易。2概念模型设计数据库需要表述的信息有以下几种:(1)零件信息;(2)供应商信息;(3)顾客信息;(4)供应商零件之间的联系(供应)(5)顾客和零件之间的联系(求购);(6)交易(三元联系)用 E-R 模型表述该模型的设计,E-R 图如图 4 所示。图 4 3逻辑设计通过 E-R 模型到关系模型的转化,可以得到如下关系模式:(1)零件关系:part(ID,color,name,weight,intro)(2)供应商关系:provider(ID,name,address,tele,intro)(3)顾客关系
17、:customer(ID,name,address,tele)(4)供应关系:supply(partID,provideID,price,quantity)(5)求购关系:after(customerID,partID,price,quantity)(6)交易关系:Business(customerID,provideID,partID,price,quantity)每个关系模式的主码都用下划线标出。同时,对于从联系导出的关系供应,求购和交易,使用与之相联系的实体集的码作为自己的主码,必须符合外码的约束。对于顾客,供应商和零件之间,不存在直接的约束,所以可以存在没有供应商供应同时也没有顾客求购
18、的零件。4物理设计为了提高在表中搜索元组的速度,在实际实现的时候应该基于码建立索引。下面是各表中建立索引的表项。part(ID)provider(ID)customer(ID)supply(partID,provideID)after(customerID,partID)Business(customerID,provideID,partID 5用 SQL 实现设计实现该设计的环境为Windows 2000 Professional+MS SQL Server 2000。(1)建立各表建立零件表CREATE TABLE Part(ID smallint identity(1,1)PRIMARY
19、 KEY CLUSTERED,Color varchar(20),Name varchar(20)NOT NULL,名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 13 页 -Weight int default 0,Intro text);建立 Provider 表CREATE TABLE Provider(ID smallint identity(1,1)PRIMARY KEY CLUSTERED,Name varchar(20)NOT NULL,Password varchar(8)NOT NULL,Address varchar(30),Tel varchar(20),I
20、ntro text);建立 Customer 表CREATE TABLE Customer(ID smallint identity(1,1)PRIMARY KEY CLUSTERED,Name varchar(20)NOT NULL,Password varchar(8)NOT NULL,Address varchar(30),Tel varchar(20);建立 Supply 表CREATE TABLE Supply(PartID smallint,ProvideID smallint,Price int,Quantity int,CONSTRAINT PK_SUPPL Y PRIMARY
21、 KEY CLUSTERED(PartID,ProvideID),CONSTRAINT PK_SUPPL Y_PARTID FOREIGN KEY(PartID)REFERENCES Part(ID),CONSTRAINT PK_SUPPL Y_PROVIDERID FOREIGN KEY(ProvideID)REFERENCES Provider(ID);建立 After 表CREATE TABLE After(CustomerID,smallint,PartID smallint,Price int,Quantity int,CONSTRAINT PK_AFTER PRIMARY KEY
22、CLUSTERED(CustomerID,PartID),CONSTRAINT PK_AFTER_CUSTOMERID FOREIGN KEY(CustomerID)REFERENCES Customer(ID),CONSTRAINT PK_AFTER_PARTID FOREIGN KEY(PartID)REFERENCES Part(ID);建立 Business 表CREATE TABLE Business(CustomerID,smallint,PartID smallint,ProvideID smallint,Price int,Quantity int,CONSTRAINT PK_
23、BUSSINESS PRIMARY KEY CLUSTERED(CustomerID,ProvideID,PartID),CONSTRAINT PK_ BUSSINESS _CUSTOMERID FOREIGN KEY(CustomerID)REFERENCES Customer(ID),CONSTRAINT PK_BUSSINESS_PROVIDERID FOREIGN KEY(ProvideID)REFERENCES Provider(ID);CONSTRAINT PK_BUSSINESS_PARTID FOREIGN KEY(PartID)REFERENCES Part(ID);供应商操
24、作名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 13 页 -a.注册(Register)INSERT INTO Provider(Name,Address,Tel,Intro)VALUES(#Name,#Address,#Tel,#Intro)在登记操作后,供应商得到一个惟一的ID,可以根据这个ID 来查询和修改供应商的数据。b.注销(UnRegister)DELETE Provider WHERE ID=#ID;c.修改个人信息(Update)UPDATE Provider Set Name=#Name,Address=#Address,Tel=#Tel,Intro=#Int
25、ro WHERE ID=#ID d.增加供应项(Add_Supply_Item)INSERT INTO Supply(PartID,ProviderID,Price,Quantity)VALUES(#PartID,#ProviderID,#Price,#Quantity)e.删除供应项(Delete_Supply_Item)DELETE Supply WHERE PartID=#PartID and ProvideID=#ProvideID);f.修改供应项(Update_Supply_Item)UPDATE Supply SET Price=#Price,Quantity=#Quantity
26、)WHERE PartID=#PartID and ProvideID=#ProvideID;很明显,系统并没有提供商品面向供应商修改零件信息的接口,所以供应商提供的零件必须已经在零件表中存在;可以这样假设,交易所的管理员负责更新零件信息,而供应商可以向交易所申请增加某种零件的信息。事实上顾客也可提出这样的要求。顾客a.注册(Register)INSERT INTO Customer(Name,Address,Tel)VALUES(#Name,#Address,#Tel)在登记操作后,供应商得到一个惟一的ID,可以根据这个ID 来查询和修改供应商的数据。b.注销(UnRegister)DELE
27、TE Customer WHERE ID=#ID;c.修改个人信息(Update)UPDATE Customer Set Name=#Name,Address=#Address,Tel=#Tel WHERE ID=#ID d.增加需求项(Add_After_Item)INSERT INTO After(PartID,CustomerID,Price,Quantity)VALUES(#PartID,#ProviderID,#Price,#Quantity)e.删除需求项(Delete_After_Item)DELETE After WHERE PartID=#PartID and Custome
28、rID=#CustomerID);f.修改需求项(Update_After_Item)UPDATE After SET Price=#Price,Quantity=#Quantity)WHERE PartID=#PartID and CustomerID=#CustomerID;交易员针对需求分析中提出的问题,提出了“协议书”的解决方案,方案的说明如下:每个交易在达成以前都作为协议书保存在数据库中,协议书具有和交易一样的完备信息,可以在条件成熟的情况下转为一个达成的交易;协议书只有在供应商和顾客都签字的情况下才有效;有效的协议书由交易员签发,协议书一经签发,就生效,表明一个交易的达成,数据库中
29、的数据将同时予以修改;协议书可以由供应商、顾客或者交易员中的任意一个人提出申请。当协议书在双方没有都签字前,协议的双方或者交易员都可以删除这个协议书;但是,当协议书签字完毕后,协议书就不得删除(修改),只能由交易员进行处理;名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 13 页 -协议书有可能在转成交易的过程中失败,因为在交易达成以前,数据库中的数据有可能因为其他交易而变化,一个协议书可能失败,这是允许的。根据以上分析,对数据库的模型作一些修改,增加协议书表,其关系模式如下:Agreement(CustomerID,ProviderID,PartID,Price,Quanti
30、ty,CustomerSign,ProviderSign)对应的 SQL 描述为:CREATE TABLE Agreement(CustomerID,smallint,PartID smallint,ProvideID smallint,Price int,Quantity int,CustomerSign int,ProviderSign int,CONSTRAINT PK_AGREEMENT PRIMARY KEY CLUSTERED(CustomerID,ProvideID,PartID),CONSTRAINT PK_ AGREEMENT_CUSTOMERID FOREIGN KEY(C
31、ustomerID)REFERENCES Customer(ID),CONSTRAINT PK_ AGREEMENT_PROVIDERID FOREIGN KEY(ProvideID)REFERENCES Provider(ID);CONSTRAINT PK_ AGREEMENT_PARTID FOREIGN KEY(PartID)REFERENCES Part(ID);与上述其他操作相比,交易的操作对数据完整性要求比较高,其中需要注意的地方是:要防止同一用户(供应商,顾客)的数据因两个交易而同时修改;需要同时对供应数据库(S upply)、需求数据库(After)、交易数据库(Busines
32、s)和协议数据库(Agreement)作出个性而且需要保持这些修改的原子性;很显然,这些要求正是对一个事务(Transaction)的要求,所以可以用一个事务来完成签发一个协议的操作。事务的描述如下:CREATE PROC PASS_AGREEMENT providerID int,customerID int,partID int AS DECLARE TransName V ARCHAR(20)SELECT TransName=Pass_AgreementBEGIN TRANSACTION TransName DECLARE price int quantity int SELECT pr
33、ice=price,quantity=quantity FROM Agreement WHERE provideID=providerID and customerID=customerID AND partID=partID INSERTINTOBusiness(ProviderID,customerID,PartID,Price,Quantity)VALUES(ProviderID,CustomerID,PartID,Price,Quantity)UPDATE Supply SET quantity=quantity-quantity WHERE ProviderID=ProviderID
34、 AND partID=partID IF(SELECT quantity FROM Supply 名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 13 页 -WHERE provideID=providerID AND partID=partID)9 ROLLBACK TRANSACTION TransName DELETE FROM Supply WHERE quantity=0 UPDATE after SET quantity=quantity-quantity WHERE CustomerID=CustomerID AND partID=partID If(SELEC
35、T quantity FROM After WHERE CustomerID=CustomerID AND partID=partID)0 ROLLBACK TRANSACTION TransName DELETE FROM A fter WHERE quantity=0 COMMIT TRANSACTION TransShow GO 为了使用方便,这里定义了一个存储过程,功能是完成从Agreement 的一个元组到期Business 的每个元组的转化工具。这里考虑到了删除空的Supply 和 After 项,更加重要的是,这里考虑到了非法的Agreement的情况,在一段时间后,由于供应商式
36、或者顾客修改数据,Agreement 可能就非法,这时就需要把这个事务废除,所以这里检查Supply 表和 After 表中的数据,确保数据仍然正确。另外,交易员,或者说交易所必须承担的一项任务是更新零件列表,这里在考虑顾客和供应商的时候,并没有给予他们修改零件列表的权利,他们必须根据数据库中已有的项实现应用模式的供应信息。由于这个数据库实际上更加偏重于模型化,而不是一个实际环境中的数据库,所以在实现应用模型的时候还需要对这个数据库的模型作一些修改。6实验数据示例插入零件信息:INSERT INTO part(color,name,weight,intro)VALUES(black,stick
37、,30,of steel);显示插入的零件ID:select id from part where name=stick ;以下操作同上,信息自定:插入供应商信息:INSERT INTO provider(name,password,address,tel,intro)VALUES(com1,1234,北京 ,86784012,noting );显示供应商ID:select id from provider where name=com1;插入顾客信息:INSERT INTO customer(name,address,tel)VALUES(cus1,北京 ,67584612);显示顾客ID
38、select id from provider where name=cus1;插入供应商供应信息INSERT INTO supply(partID,provideID,price,quantity)VALUES(1,1,20,100);插入顾客需求信息INSERT INTO after(customerID,partID,price,quantity)VALUES(1,1,20,50)插入协议信息名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 13 页 -INSERT INTO Agreement(CustomerID,ProviderID,PartID,Price,Quan
39、tity,CustomerSign,ProviderSign)VALUES(1,1,1,20,30,1,1)执行交易操作PASS_AGREEMENT 1,1,1(后面 3 个参数分别前面选择出的供应商ID,顾客 ID 和零件 ID)显示交易后供应信息:select quantity from supply where pardID=1 and providerID=1 需求信息:select quantity from after where pardID=1 and customerID=1 分析上面的结果:首先,保存在supply 表中的 ID 的零件供应量为100,保存在 after 表中 ID 为 1 的零件需求量为50。在Agreement 表中指出ID 为 1 的顾客要交易30 人 ID 为 1 的零件。当执行存储过程PASS_AGREEMENT之后,supply 和 after 表中相应的数量都减少了30,交易成功。7实验总结通过此次实验,完成从用户需求分析、数据库设计到上机的编程、调试和应用等全过程,进一步理解和掌握了数据库的各方面知识,并提高了实践能力。名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 13 页 -