数据库课程设计零件管理系统.doc
《数据库课程设计零件管理系统.doc》由会员分享,可在线阅读,更多相关《数据库课程设计零件管理系统.doc(13页珍藏版)》请在冰豆网上搜索。
数据库原理课程设计
题目零件交易中心管理系统
学院信息工程学院
专业计算机科学与技术
班级计科072
学号
学生姓名
指导教师
编写日期2010-03-02
1.需求分析 3
2.概念模型设计 4
3.逻辑设计 5
4.物理设计 5
5.测试阶段 10
6.总结 13
1.需求分析
1.供应商
供应商的操作流程图如图2-1所示。
增加供应项
修改供应项
删除供应项
修改个人信息
供应项
注册
注销
图2-1供应商操作分类表
2.顾客
顾客的地位和供应商几乎是对称的,所以功能分类上也很相似.顾客的操作流程图如图2-2所示。
增加需求项
修改需求项
删除需求项
修改个人信息
顾客
注册
注销
图2-2顾客操作分类表
3.交易员
交易员的工作就是提出交易和完成交易。
这里需要仔细考虑的问题是:
一个交易如何产生,并如何达成,可以用图2-3来说明这个问题.
我们在处理交易的时候可能面临如下问题:
(1)一个交易只能在交易双方都同意的情况下才可以进行,所以数据库中的供求信息只能作为达成某个交易的基础;
(2)交易的双方可能不同时使用这个系统,因此需要系统提供一个双方交换信息的方式;
(3)系统需要提供一种方便系统(交易员)向用户提出建议来促成交易的途径,并在保证数据库数据完整性的情况下达成交易。
交易员
协议书草案
供应商以及顾客签字
正式签字
交易员签发
完成交易
供应商
提出交易
顾客提出
交易申请
交易员提出
交易建议
图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)零件实体集转换为关系:
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(零件)之间,不存在直接的约束,所以可以存在没有供应商供应同时也没有顾客求购的零件。
4.物理设计
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实现设计
实现该设计的环境为Windows2000Perfessinal+MSSQLServer2000.
(1)建立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)供应商操作
①注册(register)
INSERTINTOProvider(Name,password,Address,TeI,Intro)
VALUES(#Name,#password,#Address,#Tel,#Intro)
在登记操作后,供应商得到一个唯一的ID,可以根据这个ID采查询和修改供应商的数据。
②注销(unregister)
DELETEProviderWHERE(ID=#ID);
③修改个人馆息(update)
UPdateProviderSet(Name=#Name,Address=#Address,Tel=#Tel,Intro=#Intro)
WHERE(ID=#ID);
④增加供应项(add_supply_item)
INSERTINTOSupply(PartID,Providerid,Price,Quantity)
VALUES(#PartID,#ProvderlD,#Price;#Quantily);
⑤删除供应项(delete_supply_item)
DELETESupPly
WHERE(PartlD=#PartIDANDProvideID=#ProviderlD);
⑥修改供应项(update_supply_item)
UPDATESupplySET(Price=#Price,Quantity=#Quantity)
WHERE(PartlD=#PartIDANDProviderID=#ProviderID)‘
很明显,系统并没有提供面向供应商修改零件信息的接口,所以供应商提供的零件必须已经在零件表