ImageVerifierCode 换一换
格式:DOC , 页数:13 ,大小:90KB ,
资源ID:1501821      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-1501821.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据库课程设计零件管理系统Word下载.doc)为本站会员(wj)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

数据库课程设计零件管理系统Word下载.doc

1、图2-2 顾客操作分类表3交易员交易员的工作就是提出交易和完成交易。这里需要仔细考虑的问题是:一个交易如何产生,并如何达成,可以用图2-3来说明这个问题我们在处理交易的时候可能面临如下问题:(1)一个交易只能在交易双方都同意的情况下才可以进行,所以数据库中的供求信息只能作为达成某个交易的基础;(2)交易的双方可能不同时使用这个系统,因此需要系统提供一个双方交换信息的方式;(3)系统需要提供一种方便系统(交易员)向用户提出建议来促成交易的途径,并在保证数据库数据完整性的情况下达成交易。交易员协议书草案供应商以及顾客签字正式签字交易员签发完成交易供应商提出交易顾客提出交易申请交易员提出交易建议图2

2、-3 交易员操作图2.概念模型设计数据库需要表述的信息有以下几种:零件信息、供应商信息、顾客信息及供应商集和零件集之间的联系(供应)。1. 供应商集和零件集之间的联系(供应)M 零件颜色零件号零件名重量简介供应商名供应商号地址电话供应数量价格N 图3-1供应商和零件之间的联系(供应) E-R模型2.顾客集和零件集之间的联系(求购)M 顾客号顾客名求购N图3-2 顾客和零件之间的联系(求购) E-R模型3.交易(三元联系)可以用E-R模型表述该模型的设计,E-R图如图3-3所示。交易图3-3 全局E-R模型3.逻辑设计通过E/R模型到关系模型的转化,可以得到如下关系模式:(1)零件实体集转换为关

3、系: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) 每

4、个关系模式的主键码都用下划线标出。同时,对于从联系导出的关系Supply(供应),OfferToBuy(求购)和Business(交易),使用与之相联系的实体集的主健码作为自己的键码,必须符合外键码约束。对于Customer(顾客),Provider(供应商)和Part(零件)之间,不存在直接的约束,所以可以存在没有供应商供应同时也没有顾客求购的零件。4.物理设计1为了提高在表中搜索元组的速度,在实际实现的时候应该基于键码建立索引是各表中建立索引的表项: (1)part(ID) (2)Provider(ID) (3)Customer(ID) (4)Supply(PartID,ProviderI

5、D (5)OfferTOBuy(CustomerID,PartID)(6)Business(CustomerlD,ProviderID,PartID)2用SQL实现设计实现该设计的环境为Windows 2000 Perfessinal+MSSQLServer 2000.(1)建立Part表 CREATE TABLE Part( ID smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED, Color varchar(20), Name varchar(20) NOT NULL, Weight int DEFAULT 0, Intro text)(2)建立Pr

6、ovider表 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), Intro text)(3)建立Customer表CREATE TABLE Customer(ID Smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED,Name varchar(20) NOT NULL, Add

7、ress varchar(30),TeL Varchar(20) )(4)建立Supply表CREATE TABLE Supply(PartID Smallint,ProviderID smallint,Price int,QUantity int,CONSTRAINT PK_SUPPLY PRIMARY KEY CLUSTERED(PartID,ProviderID),CONSTRAINT FK_SUPPLY_PARTID FOREIGN KEY(PartID) REFERENCES Part(ID),CONSTRAINT FK_SUPPLY_PROVIDERID FOREIGN KEY(P

8、roviderID) REFERENCES Provider(ID)(5)建立OfferToBuy表CREATE TABLE OfferToBuy(CustomerID smallint,PartID Smallint,Price int,Quantity int,CONSTRAINT PK_OFFERTOBUY PRIMARY KEY CLUSTERED(CustomerID,PartID),CONSTRAINT FK_OFFERTOBUY_CUSTOMERID FOREIGN KEY(CustomerID) REFERENCES Customer(ID),CONSTRAINT FK_OFF

9、ERTOBUY FOREIGN KEY(PartID) REFERENCES Part(ID) (6)建立Business表CREATE TABLE Business(CONSTRAINT PK_BUSINEss PRIMARY KEY ClUSTERED(CuscomerID,ProviderID,PartID),CONSTRAINT FK_BUSINESS_CUSTOMERID FOREIGN KEY(CustomerID) REFERENCES Customer(ID),CONSTRAINT FK_BUSINESS_PROVIDERlD FOREIGN KEY(ProviderID) R

10、EFERENCES Provider(ID),CONSTRAINT FK_BUSINESS_PARTID FOREIGN KEY(PartID)REFERENCES Part(ID)(7)供应商操作注册(register)INSERT INTO Provider(Name,password,Address,TeI,Intro)VALUES(#Name,#password,#Address,#Tel,#Intro)在登记操作后,供应商得到一个唯一的ID,可以根据这个ID采查询和修改供应商的数据。注销(unregister) DELETE Provider WHERE(ID=#ID);修改个人馆息

11、(update)UPdate Provider Set(Name=#Name,Address=#Address,Tel=#Tel,Intro=#Intro)WHERE(ID#ID);增加供应项(add_supply_item) INSERT INTO Supply(PartID,Providerid,Price,Quantity) VALUES(#PartID,#ProvderlD,#Price;#Quantily);删除供应项(delete_supply_item) DELETE SupPly WHERE(PartlD=#PartID AND ProvideID=#ProviderlD);修

12、改供应项(update_supply_item) UPDATESupplySET(Price=#Price,Quantity=#Quantity) WHERE(PartlD=#PartID AND ProviderID=#ProviderID)很明显,系统并没有提供面向供应商修改零件信息的接口,所以供应商提供的零件必须已经在零件表中存在;可以这祥假设,交易所的管理员负责更新零件信息,而供应商可以向交易所申请增加某种零件的信息事实上顾客也可以提出这样的要求。(8)顾客操作INSERT INTO Customer(Name,Address,Tel)VALUES(#Name,#Address,#Te

13、l);在登记操作后,顾客得到一个唯一的ID,可以根据这个ID来查询和修改顾客的数据。DELETE Customer WHEREID=#ID);修改个人信息(update) UPDATE Customer Set(Name=#Name,Address=#Address,Tel=#Tel) WHERE(1D=#ID);增加需求项(add_OfferToBuy_item)INSERT INTO OfferToBuy(PartID,CustomeriD,Price,Quantity)VALUES(#PartID,#CustomerID,#Price,#Quantity)删除需求项(delete_Off

14、erToBuy_iterm)DELETE OfferToBuyWHERE(PartlD=#PartlD AND CustomerlD=#CustomerID);修改需求项(date_OfferToBuy_item)UPDATE OfferToBuy SET(Price=#Price,Quantity=#QuantityWHERE(PartlD=#PartID AND CustomeriD=#CustomerID)(9)交易员针对需求分析中提出的问题,我们提出了“协议书”的解决方案,方案的说明如下:每个交易在达成以前都作为协议书保存在数据库中,协议书具有和交易一样的完备信息,可以在条件成熟的情况

15、下转为一个达成的交易;协议书只有在供应商和顾客都签字的情况下才有效;有效的协议书由交易员签发,协议书一经签发,就生效,表明一个交易的达成,数据库中的数据将同时予以修改;协议书可以由供应商、顾客或者交易员中的任意一个人提出申请。当协议书在双方没有都签字前,协议的双方或者交易员都可以删除这个协议书;但是,当协议书签字完毕后,协议书就不得删除(修改),只能由交易员进行处理;协议书有可能在转成交易的过程中失败,因为在交易达成以前,数据库中的数据有可能因为其他交易而变化,一个协议书可能失效,这是允许的。根据以上分析,对数据库的模型作一些修改,增加协议书表,其关系模式如下: Agreement(Custo

16、merlD,ProviderID,PartID,Price,Quantity,CustomerSign,ProviderSign)对应的SQL描述为:CREATE TABLE Agreement(Customerm smallint,ProviderlD smallint,PartlD smallint,Price int,Quantity int,CustomerSign int,ProviderSign int, CONSTRAINT PK_AGREEMENT PRIMARY KEY CLUSTERED(CustomerID,ProviderID,PartID),CONSTRAINT FK

17、_AGREEMENT_CUSTOMERID FOREIGN KEY(CustomerID) REFERENCES Customer(ID),CONSTRAINT FK_ AGREEMENT_PROVlDERID FOREIGN KEY(ProviderID) REFERENCES Provider(ID),CONSTRAINT FK_AGREEMENT_PARTID FOREIGN KEY(PartID)REFERENCES Part(ID)与上述其他操作相比,对交易的操作对数据完整性要求比较高,其中需要注意的地方是;要防止同一用户(供应商,顾客)的数据因两个交易而同时修改; 需要同时对供应数

18、据库(Supply)、需求数据库(OfferToBuy)、交易数据库(Business)和协议数据库(Agreement)作出修改,而且需要保持这些修改的原子性;很显然,这些要求正是对于一个事务(transaction)的要求,所以可以用一个事务来完成签发一个协议的操作。事务的描述如下:CREATE PROC PASS_AGREEMENTproviderID int,customerid int,partlD intASDECLARE TransName VARCHAR(20)SELECT TransName=Pass_AgreementBEGIN TRANSACTION TransNameD

19、EClARE price INT,qUANTITY intSELECT price=price,quantity=quantity FROM AgreementWHERE prIVIderID=providerID AND customerID=customerID AND PanID=partID1NSERT INTO Business(ProviderID,CustomerID,PartID,Price,Quantity)VALues(providerid,customerID,PartID,price,quantity)UPDATE Supply SET quantity=quantit

20、y-quantityWHERE ProviderID=prividerID AND partID=partIDIF (SELECT quantity FROM SupplyWHERE Proiderid=provider AND partID=PartID) ROLLBACK TRANSACTlON TranSNameDELETE FROM Supply WHERE quantity=0UPDATE OfferToBuy SET quantity=quanttity-quantityWHERE CustomerID=customerid AND partlD=partIDIF(SELECT q

21、uandtity FROM OfferToBuyWHERE CustomerID=CustomerID AND partID=partlD)ROLLBACK TRANSACTION TransNameDELETE FROM OfferToBuy WHERE quantity=0COMMIT TRANSACTION TransName为了使用方便,这里定义了一个存贮过程;功能是完成从Agreementt的一个元组到Business的一个元组的转化工作。这里考虑到了删除空的Suppiy和OfferTOBUY项,更加重要的是,这里考虑到了非法的Agreement的情况,在一段时间后,由于供应商或者顾

22、客修改数据,Agreement可能就非法,这时就需要把这个事务废除,所以,这里检查了Supply表和OfferToBuy表中的数据,确保数据仍然正确。另外交易员,或者说交易所必须承担的一项任务是更新零件列表。这里在考虑顾客和供应商的时候并没有给予他们修改零件列表的权利,所以他们必须根据数据库中已有的项更新自己的供求信息。由于这个数据库实际上更加偏重于模型化,而不是一个实际环境中的数据库,所以在实现应用模型的时候我们还需要对这个数据库的模型作一些修改。由于本实验在模型设计上使用了Microsoft Transact-SQL的语法,因此以上的数据库操作都是在SQLSERVER2000上测试通过的。

23、5.测试阶段1输入数据设计(1)插入零件信息; create procedure insert_ljasinsert into Part(Color,Name,Weight,Intro)values(black,stick30of steel)显示刚插人的零件id: exec insert_lj id - 1 (1 row(s) affected)(不同的实验,id值可能不同。以后相应操作要保持前后一致就可以丁。(2)插入供应商信息: create procedure insert_gysinsert into Provider(Name,password,Address,Tel,Intro)

24、coml1234北京,6543210,nothing显示刚插入的供应商id: exec insert_gys id - - - 1 (1 row(s) affected)(3)插入顾客信息: create procedure insert_gkinsert into Customer(Name,Address,Tel)cusl6666666显示刚插入的顾客id: exec insert_gk id - - - (1 row(S)affected)(4)插入供应商供应信息: create procedure insert_gysgy insert into Supply(PartID,Provi

25、derlD,Price,Quantity) values(1,1,20,100);(5)插入顾客需求信息: create procedure insert_gkxq insert into OfferToBuy(PartlD,CustomerID,Priee,Quantity) values(1,1,20,50);(6)插入协议信息:create procedure insert_xyxx insert into Agreement(CustomerID,ProviderID,PartlD,Price,Quantity,CustomerSign,ProviderSign) values(1,1

26、,1,20,30,1,1);2.执行交易操作设计(1)执行交易存储过程PASS_AGREEMENT,参数为:1,1,1:PASS_AGREEMENT 1,1,1; (后面的三个参数分别对应前面选择出的供应商ID、顾客ID和零件ID。(2)结果:显示交易后供应信息和需求信息: create procedure 交易后供应信息PartID int(8)ProviderID int(8)select Quantity from SUpply where PartID=PartID and ProviderID=ProviderID exec 交易后供应信息Quantity - - - - 70 (1 row(s) affected)create procedure 交易后需求信息PartI

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2