全球旧事资料 分类
ALUESPartID,CustomerID,Price,Qua
tity
⑤删除需求项delete_OfferToBuy_iterm
DELETEOfferToBuyWHEREPartlDPartlDANDCustomerlDCustomerID;
⑥修改需求项date_OfferToBuy_item
UPDATEOfferToBuySETPricePrice,Qua
tityQua
tityWHEREPartlDPartIDANDCustomeriDCustomerID
(9)交易员针对需求分析中提出的问题,我们提出了“协议书”的解决方案,方案的说明如下:①每个交易在达成以前都作为协议书保存在数据库中,协议书具有和交易一样的完备信息,可以在条件成熟的情况下转为一个达成的交易;②协议书只有在供应商和顾客都签字的情况下才有效;有效的协议书由交易员签发,协议书一经签发,就生效,表明一个交易的达成,数据库中的数据将同时予以修改;③协议书可以由供应商、顾客或者交易员中的任意一个人提出申请。当协议书在双方没有都签字前,协议的双方或者交易员都可以删除这个协议书;但是,当协议书签字完毕后,协议书就不得删除修改,只能由交易员进行处理;④协议书有可能在转成交易的过程中失败,因为在交易达成以前,数据库中的数据有可能因为其他交易而变化,一个协议书可能失效,这是允许的。根据以上分析,对数据库的模型作一些修改,增加协议书表,其关系模式如下:
Agreeme
ttCustomerlDAgreeme
tCustomerlD,ProviderID,PartID,Price,Qua
tity,CustomerSig
,ProviderSig

f《数据库原理及应用》课程设计指导书数据库原理及应用》2008级计算机科学与技术专业
第15页共20页
对应的SQL描述为:
CREATETABLEAgreeme
tCustomermsmalli
t,ProviderlDsmalli
t,PartlDsmalli
t,Pricei
tQua
tityi
t,CustomerSig
i
t,ProviderSig
i
t,CONSTRAINTPK_AGREEMENTPRIMARYKEYCLUSTEREDCustomerID,ProviderID,PartID,CONSTRAINTFK_AGREEMENT_CUSTOMERIDFOREIGNKEYCustomerIDREFERENCESCustomerID,CONSTRAINTFK_AGREEMENT_PROVlDERIDFOREIGNKEYProviderIDREFERENCESProviderID,CONSTRAINTFK_AGREEMENT_PARTIDFOREIGNKEYPartIDREFERENCESPartID
与上述其他操作相比,对交易的操作对数据完整性要求比较高,其中需要注意的地方是;要防止同一用户供应商,顾客的数据因两个交易而同时修改;需要同时对供应数据库Supply、需求数据库OfferToBuy、交易数据库Busi
ess和协议数据库Agreeme
t作出修改,而且需要保持这些修改的原子性;很显然,这些要求正是对于一个事务tra
sactio
的要求,所以可以用一个事务来完成签发一个协议的操作。事务的描述如下:
CREATEPROCPASS_AGREEMENTproviderIDi
t,customeridi
t,partlDi
tASDECLARETra
sNameVARCHAR20SELECTTra
sNamePass_Agreeme
tBEGINTRANSACTIONTra
sNamer
好听全球资料 返回顶部