




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
重庆工商大学计算机科学和技术专业数据库原理课程设计教学试验指导书 关键课程数据库原理教研组.1数据库原理课程设计教学试验指导SQLServer课程设计教学试验指导A.1综合试验本课程教学试验分为两部分:第一部分是根据试验指导书所要求试验在计算机上完成;第二部分是作完上述试验后根据本课程设计教学试验指导书做一个综合性试验。经过教学试验可使读者较系统、全方面地掌握相关教学内容和必需上机操作。下面给出三个试验课题,其中第一个课题还附有参考答案。期望读者在了解题意基础上发挥自己创新精神,有创意地完成教学试验。假如认为有参考答案可能会束缚自己思维,也可选作第二或第三个试验课题.。总而言之,因时间关系,只要求每个读者任选一个课题。若有时间,有爱好,可考虑另外两个课题,也会有所收益.A.1.1试验一零件交易中心管理系统(试验目标]经过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过程,深入了解和掌握本书中所讲解内容。(试验简述)零件交易中心管理系统关键提供用户和供给商之间完成零件交易功效,其中包含供给商信息、用户信息和零件信息。供给商信息包含供给商号、供给商名、地址、电话、介绍;用户信息包含用户号,用户名、地址、电话;零件信息包含零件号、零件名、重量、颜色、介绍等。此系统能够让供给商增加、删除和修改所提供零件产品,还能够让用户增加、删除和修改所需求零件。交易员能够利用用户提出需求信息和供给商提出供给信息来提出交易提议,由供给商和用户进行确定后即完成这笔交易。(试验要求)完成该系统数据库设计:用SQl实现数据库设计,并在SQLServer上调试经过.A.1.2试验三民航售票系统(试验目标)经过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过程,深入了解和掌握本书中所讲解内容。··(试验简述]民航订票系统关键分为机场、航空企业和用户三方服务。航空企业提供航线和飞机资料,机场则对在本机场起飞和降落航班和机票进行管理,而用户能得到服务应该有航班线路和剩下票数.查询,和网上订票等功效。用户又能够分为两类,一类是一般用户,对于一般用户只有一般查询功效和订票功效,没有对应机票优惠,另一个是常常旅客,需要办理注册手续,但增加了里程积分功效和积分优惠政策。机场还要有紧急应对方法,在航班出现延误时,要发送对应信息。(试验要求)完成该系统数据库设计;用SQL、实现数据库设计,并在SQlServcr上调试经过。A.1.3试验二图书管理系统(试验目标)经过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过程,深入了解和掌握本书中所讲解内容.[试验简述]一个简单图书管理系统包含图书馆内书籍信息、学校在校学生信息和学生借阅信息。此系统功效分为面向学生和面向管理员两部分,其中学生能够进行借阅、续借、归还和查询书籍等操作,管理员能够完成书籍和学生增加,删除和修改和对学生,借阅、续借、归还确实定.[试验要求]完成该系统数据库设计;用SQL实现数据库设计,并在SQSQLServer上调试经过.A.2零件交易中心管理系统试验汇报(参考答案)(试验目标)经过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过程,深入了解和掌握本书中所讲解内容。(试验简述)零件交易中心管理系统关键提供用户和供给商之间完成零件交易功效,其中包含供给商信息、用户信息和零件信息。此系统能够让供给商增加、删除和修改所提供零件产品,还能够让用户增加、删除和修改所需求零件。交易员能够利用用户提出需求信息和供给商提出供给信息来提出交易提议,由供给商和用户进行确定后即完成这笔交易。[课程设计全过程]1需求分析:(实际具体调查)2数据库设计:(SQLServer设计)概念(模型)设计(实际到概念)逻辑设计(逻辑推导)物理设计(理论到实现)SQL编程、调试(测试验证)(实践反复检验)3应用程序编程、调试、测试(用人机交互前台开发工具VB.NET开发windows和Web应用程序)[需求分析](具体地调查分析系统对象、功效、性能等需求)l供给商供给商操作步骤图图A1所表示。增加供给项增加供给项修改供给项删除供给项修改个人信息供给项注册注销图A1供给商操作分类表2.用户用户地位和供给商几乎是对称,所以功效分类上也很相同.用户操作步骤图图A2示所。增加需求项增加需求项修改需求项删除需求项修改个人信息用户注册注销图A2用户操作分类表3.交易员交易员工作就是提出交易和完成交易。这里需要仔细考虑问题是:一个交易怎样产生,并怎样达成,能够用图A3来说明这个问题.我们在处理交易时候可能面临以下问题:(1)一个交易只能在交易双方全部同意情况下才能够进行,所以数据库中供求信息只能作为达成某个交易基础;(2)交易双方可能不一样时使用这个系统,所以需要系统提供一个双方交换信息方法;交易员协议书草案交易员协议书草案供给商和用户签字正式签字交易员签发完成交易供给商提出交易用户提出交易申请交易员提出交易提议图A.3交易员操作图[概念模型设计](从实践概括抽象出理论模型E/R)数据库需要表述信息有以下多个:(1)零件信息(2)供给商信息(3)用户信息(4)供给商集和零件集之间联络(供给)M:NM:N零件颜色零件号零件名重量介绍供给商名供给商供给商号地址电话介绍供给数量价格图A.4供给商和零件之间联络(供给)E/R模型(5)用户集和零件集之间联络(求购)M:NM:N零件颜色零件号零件名重量介绍用户电话用户号用户名地址求购数量价格图A.5用户和零件之间联络(求购)E/R模型(6)交易(三元联络)能够用E/R模型表述该模型设计,E/R图图A7所表示。供给商供给商交易价格数量求购数量价格供给商号供给商名地址电话介绍供给数量价格零件颜色零件号零件名重量介绍用户电话用户号用户名地址图A.7全局E/R模型[逻辑设计](从理论‘E/R模型’到理论‘关系模型’整理转换)经过E/R模型到关系模型转化,能够得到以下关系模式:(1)零件实体集转换为关系:Part(ID,Color,Name,Weight,Intro)(2)供给商实体集转换为关系Provider(ID,Name,Addtess,Tel,Intro)(3)用户实体集转换为关系Customer(ID,Name,Addtess,Tel)(4)供给联络转换为关系Supply(PartlD,ProviderlD,Price,Quantity)(5)求购联络转换为关系OfferToBuy(CustomerlD,PartID,Price,Quantity)(6)交易联络转换为关系Business(CustomerlD,ProviderlD,PartID,Price,Quantity)每个关系模式主键码全部用下划线标出。同时,对于从联络导出关系Supply(供给),OfferToBuy(求购)和Business(交易),使用和之相联络实体集主健码作为自己键码,必需符合外键码约束。对于Customer(用户),Provider(供给商)和Part(零件)之间,不存在直接约束,所以能够存在没有供给商供给同时也没有用户求购零件。[物理设计](从理论‘关系模型’到实现\实施‘数据库建立’)(物理文件安排和建立索引)1为了提升在表中搜索元组速度,在实际实现时候应该基于键码建立索引是各表中建立索引表项:(1)part(ID)(2)Provider(ID)(3)Customer(ID)(4)Supply(PartID,ProviderID>(5)OfferTOBuy(CustomerID,PartID)(6)Business(CustomerlD,ProviderID,PartID)2[用SQL实现设计]实现该设计环境为WindowsPerfessinal+MSSQLServer.01.建立Part表CREATETABLEPart(IDsmallintIDENTITY(1,1)PRIMARYKEYCLUSTERED,Colorvarchar(20),Namevarchar(20)NOTNULL,WeightintDEFAULT0,Introtext)2.建立Provider表CREATETABLEProvider(IDsmallintIDENTITY(1,1)PRIMARYKEYCLUSTERED,Namevarchar(20)NOTNULL,passwordvarchar(8)NOTNULL,Addressvarchar(30),Telvarchar(20),Introtext)3.建立Customer表CREATETABLECustomer(IDSmallintIDENTITY(1,1)PRIMARYKEYCLUSTERED,Namevarchar(20)NOTNULL,Addressvarchar(30),TeLVarchar(20))4.建立Supply表CREATETABLESupply(PartIDSmallint,ProviderIDsmallint,Priceint,QUantityint,CONSTRAINTPK_SUPPLYPRIMARYKEYCLUSTERED(PartID,ProviderID),CONSTRAINTFK_SUPPLY_PARTIDFOREIGNKEY(PartID)REFERENCESPart(ID),CONSTRAINTFK_SUPPLY_PROVIDERIDFOREIGNKEY(ProviderID)REFERENCESProvider(ID))5.建立OfferToBuy表CREATETABLEOfferToBuy(CustomerIDsmallint,PartIDSmallint,Priceint,Quantityint,CONSTRAINTPK_OFFERTOBUYPRIMARYKEYCLUSTERED(CustomerID,PartID),CONSTRAINTFK_OFFERTOBUY_CUSTOMERIDFOREIGNKEY(CustomerID)REFERENCESCustomer(ID),CONSTRAINTFK_OFFERTOBUYFOREIGNKEY(PartID)REFERENCESPart(ID))6.建立Business表CREATETABLEBusiness(CustomerIDsmallint,ProviderIDsmallint,PartIDSmallint,Priceint,Quantityint,CONSTRAINTPK_BUSINEssPRIMARYKEYClUSTERED(CuscomerID,ProviderID,PartID),CONSTRAINTFK_BUSINESS_CUSTOMERIDFOREIGNKEY(CustomerID)REFERENCESCustomer(ID),CONSTRAINTFK_BUSINESS_PROVIDERlDFOREIGNKEY(ProviderID)REFERENCESProvider(ID),CONSTRAINTFK_BUSINESS_PARTIDFOREIGNKEY(PartID)REFERENCESPart(ID))7.供给商操作(1)注册(register)INSERTINTOProvider(Name,password,Address,TeI,Intro)VALUES(#Name,#password,#Address,#Tel,#Intro)在登记操作后,供给商得到一个唯一ID,能够依据这个ID采查询和修改供给商数据。(2)注销(unregister)DELETEProviderWHERE(ID=#ID);(3)修改个人馆息(update)UPdateProviderSet(Name=#Name,Address=#Address,Tel=#Tel,Intro=#Intro)WHERE(ID=#ID);(4)增加供给项(add_supply_item)INSERTINTOSupply(PartID,Providerid,Price,Quantity)VALUES(#PartID,#ProvderlD,#Price;#Quantily);(5)删除供给项(delete_supply_item)DELETESupPlyWHERE(PartlD=#PartIDANDProvideID=#ProviderlD);(6)修改供给项(update_supply_item)UPDATESupplySET(Price=#Price,Quantity=#Quantity)WHERE(PartlD=#PartIDANDProviderID=#ProviderID)‘很显著,系统并没有提供面向供给商修改零件信息接口,所以供给商提供零件必需已经在零件表中存在;能够这祥假设,交易所管理员负责更新零件信息,而供给商能够向交易所申请增加某种零件信息.实际上用户也能够提出这么要求。8.用户操作‘(1)注册(register)INSERTINTOCustomer(Name,Address,Tel)VALUES(#Name,#Address,#Tel);在登记操作后,用户得到一个唯一ID,能够依据这个ID来查询和修改用户数据.(2)注销(unregister)DELETECustomerWHERE<ID=#ID);(3)修改个人信息(update)UPDATECustomerSet(Name=#Name,Address=#Address,Tel=#Tel)WHERE(1D=#ID);(4)增加需求项(add_OfferToBuy_item)INSERTINTOOfferToBuy(PartID,CustomeriD,Price,Quantity)VALUES(#PartID,#CustomerID,#Price,#Quantity)'(5)删除需求项(delete_OfferToBuy_iterm)DELETEOfferToBuyWHERE(PartlD=#PartlDANDCustomerlD=#CustomerID);(6)修改需求项(叩date_OfferToBuy_item)UPDATEOfferToBuySET(Price=#Price,Quantity=#QuantityWHERE(PartlD=#PartIDANDCustomeriD=#CustomerID)9.交易员针对需求分析中提出问题,我们提出了“协议书”处理方案,方案说明以下:(1)每个交易在达成以前全部作为协议书保留在数据库中,协议书含有和交易一样完备信息,能够在条件成熟情况下转为一个达成交易;(2)协议书只有在供给商和用户全部签字情况下才有效;有效协议书由交易员签发,协议书一经签发,就生效,表明一个交易达成,数据库中数据将同时给予修改;(3)协议书能够由供给商、用户或交易员中任意一个人提出申请。当协议书在双方没有全部签字前,协议双方或交易员全部能够删除这个协议书;不过,当协议书签字完成后,协议书就不得删除(修改),只能由交易员进行处理;(4)协议书有可能在转成交易过程中失败,因为在交易达成以前,数据库中数据有可能因为其它交易而改变,一个协议书可能失效,这是许可。依据以上分析,对数据库模型作部分修改,增加协议书表,其关系模式以下:Agreement(CustomerlD,ProviderID,PartID,Price,Quantity,CustomerSign,ProviderSign)对应SQL描述为:CREATETABLEAgreement(Customermsmallint,ProviderlDsmallint,PartlDsmallint,Priceint,Quantityint,CustomerSignint,ProviderSignint,·CONSTRAINTPK_AGREEMENTPRIMARYKEYCLUSTERED(CustomerID,ProviderID,PartID),CONSTRAINTFK_AGREEMENT_CUSTOMERIDFOREIGNKEY(CustomerID)REFERENCESCustomer(ID),CONSTRAINTFK_AGREEMENT_PROVlDERIDFOREIGNKEY(ProviderID)REFERENCESProvider(ID),CONSTRAINTFK_AGREEMENT_PARTIDFOREIGNKEY(PartID)REFERENCESPart(ID))和上述其它操作相比,对交易操作对数据完整性要求比较高,其中需要注意地方是;要预防同一用户(供给商,用户)数据因两个交易而同时修改;需要同时对供给数据库(Supply)、需求数据库(OfferToBuy)、交易数据库(Business)和协议数据库(Agreement)作出修改,而且需要保持这些修改原子性;很显然,这些要求正是对于一个事务(transaction)要求,所以能够用一个事务来完成签发一个协议操作。事务描述以下:CREATEPROCPASS_AGREEMENT@providerIDint,@customeridint,@partlDintASDECLARE@TransNameVARCHAR(20)SELECT@TransName='Pass_Agreement'BEGINTRANSACTION@TransNameDEClARE@priceINT,@qUANTITYintSELECT@price=price,@quantity=quantityFROMAgreementWHEREprIVIderID=@providerIDANDcustomerID=@customerIDANDPanID=@partID1NSERTINTOBusiness(ProviderID,CustomerID,PartID,Price,Quantity)VALues(@providerid,@customerID,@PartID,@price,@quantity)UPDATESupplySETquantity=quantity-@quantityWHEREProviderID=@prividerIDANDpartID=@partIDIF(SELECTquantityFROMSupplyWHEREProiderid=@providerANDpartID=@PartID)<0ROLLBACKTRANSACTlON@TranSNameDELETEFROMSupplyWHEREquantity=0UPDATEOfferToBuySETquantity=quanttity-@quantityWHERECustomerID=@customeridANDpartlD=@partIDIF(SELECTquandtityFROMOfferToBuyWHERECustomerID=@CustomerIDANDpartID=@partlD)<0ROLLBACKTRANSACTION@TransNameDELETEFROMOfferToBuyWHEREquantity=0COMMITTRANSACTION@TransName为了使用方便,这里定义了一个存贮过程;功效是完成从Agreementt一个元组到Business一个元组转化工作。这里考虑到了删除空Suppiy和OfferTOBUY项,愈加关键是,这里考虑到了非法Agreement情况,在一段时间后,因为供给商或用户修改数据,Agreement可能就非法,这时就需要把这个事务废除,所以,这里检验了Supply表和OfferToBuy表中数据,确保数据仍然正确。另外交易员,或说交易所必需负担一项任务是更新零件列表。这里在考虑用户和供给商时候÷并没有给她们修改零件列表权利,所以她们必需依据数据库中已经有项更新自己供求信息。因为这个数据库实际上愈加偏重于模型化,而不是一个实际环境中数据库,所以在实现应用模型时候我们还需要对这个数据库模型作部分修改。因为本试验在模型设计上使用了MicrosoftTransact-SQL语法,所以以上数据库操作全部是在SQLSERVER上测试经过。[试验数据示例:测试阶段](1.试验方案设计2.测试,查找错误校正错误,检验是否符适用户功效性能要求)1.试验方案设计(1)输入数据设计:1)插入零件信息;insertintoPart(Color,Name,Weight,Intro)values('black','stick','30','ofsteel');显示刚插人零件id:selectidfromPartwherename='stick';id----1(1row(s)affected)(不一样试验,id值可能不一样。以后对应操作要保持前后一致就能够丁。)2)插入供给商信息:insertintoProvider(Name,password,Address,Tel,Intro)values('coml','1234','北京',6543210,'nothing');显示刚插入供给商id:selectidfromProviderwherename='coml';id---1(1row(s)affected)3)插入用户信息:insertintoCustomer(Name,Address,Tel)values('cusl','北京','6666666')'显示刚插入用户id:selectidfromCustomerwherenameid---1(1row(S)affected)4)插入供给商供给信息:insertintoSupply(PartID,ProviderlD,Price,Quantity)values(1,1,20,100);5)插入用户需求信息:insertintoOfferToBuy(PartlD,CustomerID,Priee,Quantity)values(1,1,20,50);6)插入协议信息:insertintoAgreement(CustomerID,ProviderID,PartlD,Price,Quantity,CustomerSign,ProviderSign)values(1,1,1,20,30,1,1);(2)实施交易操作设计:1)实施交易存放过程PASS_AGREEMENT,参数为:1,1,1:PASS_AGREEMENT1,1,1;(后面三个参数分别对应前面选择出供给商ID、用户ID和零件ID。)2)结果:显示交易后供给信息和需求信息:selectQuantityfromSupplywherePartlD=1andProviderlD=1;Quantity----70(1row(s)affected)selectQuantityfromOfferToBuywherePartlD=landCustomerID;Quantity-----20(1row(s)affected)3)分析结果:首先,保留在Supply表中1D为1零件供给量为100(参见Supply表Insert语句),保留在OfferToBuy表中ID为1零件需求量为50(参见OFFERToBuy表Insert语句)。在Agreement表中指出ID为1供给商和ID为1用户要交易30个ID为1零件。当实施存放过程PASS_AGREEMENT以后,Supply和OfferToBuy表中对应数量全部降低了30,交易成功。4)再次实施交易操作:deletefromBusiness;附录:交易系统另一个SQL语言(数据表建立):/*MicrosoftSQLServer-Scripting *//*Server:7523TEACHER *//*Database:商品交易系统 *//*CreationDate02-10-189:46:43 */CREATETABLE[dbo].[customer]( [id][smallint]IDENTITY(1,1)NOTNULL, [name][varchar](20)NOTNULL, [address][varchar](30)NULL, [Intro][text]NULL)GOALTERTABLE[dbo].[customer]WITHNOCHECKADD CONSTRAINT[PK_customer]PRIMARYKEYCLUSTERED ( [id] )ON[PRIMARY]GOCREATETABLE[dbo].[part]( [id][smallint]IDENTITY(1,1)NOTNULL, [color][varchar](20)NULL, [name][varchar](20)NOTNULL, [weight][int]NULL, [Intro][text]NULL)GOALTERTABLE[dbo].[part]WITHNOCHECKADD CONSTRAINT[PK_part]PRIMARYKEYCLUSTERED ( [id] )ON[PRIMARY]GOCREATETABLE[dbo].[provider]( [id][smallint]IDENTITY(1,1)NOTNULL, [name][varchar](20)NOTNULL, [password][varchar](8)NOTNULL, [address][varchar](30)NULL, [Tel][varchar](20)NULL, [Intro][text]NULL)GOALTERTABLE[dbo].[provider]WITHNOCHECKADD CONSTRAINT[PK_provider]PRIMARYKEYCLUSTERED ( [id] )ON[PRIMARY]GOCREATETABLE[dbo].[supply]( [partid][smallint]NOTNULL, [providerid][smallint]NOTNULL, [price][smallint]NULL, [quantity][int]NULL)GOCREATETABLE[dbo].[bussiness]( [customerID][smallint]NOTNULL, [partid][smallint]NOTNULL, [providerid][smallint]NOTNULL, [price][smallint]NULL, [quantity][int]NULL)GOCREATETABLE[dbo].[offertobuy]( [customerID][smallint]NOTNULL, [partid][smallint]NOTNULL, [price][smallint]NULL, [quantity][int]NULL)ALTERTABLE[dbo].[bussiness]WITHNOCHECKADDCONSTRAINT[PK_bussiness]PRIMARYKEYCLUSTERED( [customerID], [partid], [providerid] )ON[PRIMARY]GOALTERTABLE[dbo].[offertobuy]WITHNOCHECKADD CONSTRAINT[PK_offertobuy]PRIMARYKEYCLUSTERED ( [customerID], [partid] )ON[PRIMARY]GOALTERTABLE[dbo].[supply]WITHNOCHECKADD CONSTRAINT[PK_supply]PRIMARYKEYCLUSTERED ( [partid], [providerid] )ON[PRIMARY]GOALTERTABLE[dbo].[bussiness]ADDCONSTRAINT[FK_bussiness_customer]FOREIGNKEY([customerID])REFERENCES[dbo].[customer]([id]),CONSTRA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年探讨物业租赁合同发展趋势
- 2025年深入探讨我国合同解除制度相关问题
- 2025【机械设备购销合同】机械设备购销合同范本
- 2025年碲镉汞(MCT)红外探测器项目发展计划
- 2025年会议电视图像保密机项目合作计划书
- 2025年碾磨谷物及谷物加工品合作协议书
- 2025年城市规划与设计专业考试试题及答案
- 2025年干气制乙苯催化剂项目合作计划书
- 矿山静态施工方案
- 2025执业医师资格考试重点试题带答案
- 甲油胶行业报告
- 医务人员职业暴露与防护讲课
- 山东省莱西市2024-2025学年高一语文下学期3月月考试题含解析
- 康复科人员岗位考核制度(3篇)
- 实验动物生物样本质量控制规范
- 智能机器人配送行业现状分析及未来三至五年行业发展报告
- 群团工作职责
- 炎症性肠病的外科治疗
- 复变函数与积分变换课程教案讲义
- BEC商务英语初级考试历年真题及答案6套
- 消除“艾梅乙”医疗歧视-从我做起
评论
0/150
提交评论