重庆工商学计算机科学技术专业
数库原理
课
程
设
计
教学实验指导书
重点课程数库原理教研组
20041
数库原理课程设计教学实验指导
SQL Server2000课程设计教学实验指导
A.1 综合实验
课程教学实验分两局部:
第局部实验指导书求实验计算机完成
第二局部作完述实验课程设计教学实验指导书做综合性实验通教学实验读者较系统全面掌握相关教学容必机操作
面出三实验课题中第课题附参考答案希读者理解题意根底发挥创新精神创意完成教学实验果觉参考答案会束缚思维选作第二第三实验课题.
总时间关系求读者选课题假设时间兴趣考虑外两课题会收益.
A.1.1 实验 零件交易中心理系统
(实验目]
通完成户需求分析数库设计机编程调试应等全程进步解掌握书中讲解容
(实验简述)
零件交易中心理系统提供顾客供商间完成零件交易功中包括
供商信息顾客信息零件信息
供商信息包括供商号供商名址 简介
顾客信息包括顾客号顾客名址
零件信息包括零件号零件名重量颜色简介等
系统供商增加删修改提供零件产品
顾客增加删修改需求零件
交易员利顾客提出需求信息供商提出供信息提出交易建议供商顾客进行确认完成笔交易
(实验求)
完成该系统数库设计:
SQl实现数库设计SQLServer调试通.
A.1.2 实验三 民航售票系统
(实验目)
通完成户需求分析数库设计机编程调试应等全程进步解掌握书中讲解容 · ·
(实验简述]
民航订票系统分机场航空公司客户三方效劳航空公司提供航线飞机资料机场机场起飞降落航班机票进行理客户效劳应该航班线路剩余票数.查询网订票等功客户分两类类普通客户普通客户普通查询功订票功没相应机票优惠种常旅客需办理注册手续增加里程积分功积分优惠政策机场紧急应措施航班出现延误时发送相应信息
(实验求)
完成该系统数库设计
SQL实现数库设计SQlServcr调试通
A.1.3 实验二 图书理系统
(实验目)
通完成户需求分析数库设计机编程调试应等全程进步解掌握书中讲解容.
[实验简述]
简单图书理系统包括图书馆书籍信息学校校学生信息学生阅信息系统功分面学生面理员两局部中学生进行阅续查询书籍等操作理员完成书籍学生增加删修改学生阅续确实认.
[实验求]
完成该系统数库设计
SQL实现数库设计SQ SQLServer调试通.
A.2 零件交易中心理系统实验报告
(参考答案)
(实验目)
通完成户需求分析数库设计机编程调试应等全程进步解掌握书中讲解容
(实验简述)
零件交易中心理系统提供顾客供商间完成零件交易功
中包括供商信息顾客信息零件信息
系统供商增加删修改提供零件产品
顾客增加删修改需求零件
交易员利顾客提出需求信息供商提出供信息提出交易建议供商顾客进行确认完成笔交易
[课程设计全程]
1需求分析:〔实际详细调查〕
2数库设计:(SQL Server 2000设计)
概念(模型)设计 〔实际概念〕
逻辑设计 〔逻辑推导〕
物理设计 〔理实现〕
SQL编程调试〔测试验证〕 〔实践反复检验〕
3应程序编程调试测试 (机交互前台开发工具VBNET开发windowsWeb应程序 )
[需求分析]
〔详细调查分析系统象功性等需求〕
l供商
供商操作流程图图A1示
增加供项
修改供项
删供项
修改信息
供项
注册
注销
图A1 供商操作分类表
2.顾客
顾客位供商称功分类相似.顾客操作流程图图A2示
增加需求项
修改需求项
删需求项
修改信息
顾客
注册
注销
图A2 顾客操作分类表
3.交易员
交易员工作提出交易完成交易里需仔细考虑问题:交易产生达成图A3说明问题.
处理交易时候面问题:
(1)交易交易双方意情况进行数库中供求信息作达成某交易根底
(2)交易双方时系统需系统提供双方交换信息方式
交易员
协议书草案
供商顾客签字
正式签字
交易员签发
完成交易
供商
提出交易
顾客提出
交易申请
交易员提出
交易建议
(3)系统需提供种方便系统(交易员)户提出建议促成交易途径保证数库数完整性情况达成交易
图A.3 交易员操作图
[概念模型设计]
〔实践概括抽象出理模型ER〕
数库需表述信息种:
(1)零件信息
(2)供商信息
(3)顾客信息
(4)供商集零件集间联系(供)
M N
零件
颜色
零件号
零件名
重量
简介
供商名
供商
供商号
址
简介
供
数量
价格
图A.4供商零件间联系(供) ER模型
(5)顾客集零件集间联系(求购)
M N
零件
颜色
零件号
零件名
重量
简介
顾客
顾客号
顾客名
址
求购
数量
价格
图A.5 顾客零件间联系(求购) ER模型
(6)交易(三元联系)
ER模型表述该模型设计ER图图A7示
供商
交易
价格
数量
求购
数量
价格
供商号
供商名
址
简介
供
数量
价格
零件
颜色
零件号
零件名
重量
简介
顾客
顾客号
顾客名
址
图A.7 全局ER模型
[逻辑设计]
(理ER模型’理关系模型’整理转换)
通ER模型关系模型转化关系模式:
(1)零件实体集转换 关系:Part(IDColorNameWeightIntro)
(2)供商实体集转换 关系Provider(IDNameAddtessTelIntro)
(3)顾客实体集转换 关系Customer(IDNameAddtessTel)
(4)供联系转换 关系Supply(PartlDProviderlDPriceQuantity)
(5)求购联系转换 关系OfferToBuy(CustomerlDPartIDPriceQuantity)
(6)交易联系转换 关系Business(CustomerlDProviderlDPartIDPriceQuantity)
关系模式键码划线标出
时联系导出关系Supply(供)OfferToBuy(求购)Business(交易)相联系实体集健码作键码必须符合外键码约束
Customer(顾客)Provider(供商)Part(零件)间存直接约束存没供商供时没顾客求购零件
[物理设计]
〔理关系模型’实现\实施数库建立’〕
〔物理文件安排建立索引〕
1 提高表中搜索元组速度实际实现时候应该基键码建立索引表中建立索引表项:
(1)part(ID)
(2)Provider(ID)
(3)Customer(ID)
(4)Supply(PartIDProviderID>
(5)OfferTOBuy(CustomerIDPartID)
(6)Business(CustomerlDProviderIDPartID)
2[SQL实现设计]
实现该设计环境Windows 2000 Perfessinal+MSSQLServer 20000
1.建立Part表
CREATE TABLE Part(
ID smallint IDENTITY(11) PRIMARY KEY CLUSTERED
Color varchar(20)
Name varchar(20) NOT NULL
Weight int DEFAULT 0
Intro text)
2.建立Provider表
CREATE TABLE Provider(
ID smallint IDENTITY(11) 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(11) PRIMARY KEY CLUSTERED
Name varchar(20) NOT NULL
Address varchar(30)
TeL Varchar(20) )
4.建立Supply表
CREATE TABLE Supply(
PartID Smallint
ProviderID smallint
Price int
QUantity int
CONSTRAINT PK_SUPPLY PRIMARY KEY CLUSTERED(PartIDProviderID)
CONSTRAINT FK_SUPPLY_PARTID FOREIGN KEY(PartID) REFERENCES Part(ID)
CONSTRAINT FK_SUPPLY_PROVIDERID FOREIGN KEY(ProviderID) REFERENCES Provider(ID))
5.建立OfferToBuy表
CREATE TABLE OfferToBuy(
CustomerID smallint
PartID Smallint
Price int
Quantity int
CONSTRAINT PK_OFFERTOBUY PRIMARY KEY CLUSTERED(CustomerIDPartID)
CONSTRAINT FK_OFFERTOBUY_CUSTOMERID FOREIGN KEY(CustomerID)
REFERENCES Customer(ID)
CONSTRAINT FK_OFFERTOBUY FOREIGN KEY(PartID)
REFERENCES Part(ID))
6.建立Business表
CREATE TABLE Business(
CustomerID smallint
ProviderID smallint
PartID Smallint
Price int
Quantity int
CONSTRAINT PK_BUSINEss PRIMARY KEY ClUSTERED(CuscomerIDProviderIDPartID)
CONSTRAINT FK_BUSINESS_CUSTOMERID FOREIGN KEY(CustomerID)
REFERENCES Customer(ID)
CONSTRAINT FK_BUSINESS_PROVIDERlD FOREIGN KEY(ProviderID)
REFERENCES Provider(ID)
CONSTRAINT FK_BUSINESS_PARTID FOREIGN KEY(PartID)
REFERENCES Part(ID))
7.供商操作
(1)注册(register)
INSERT INTO Provider(NamepasswordAddressTeIIntro)
VALUES(#Name#password#Address#Tel#Intro)
登记操作供商唯ID根ID采查询修改供商数
(2)注销(unregister)
DELETE Provider WHERE(ID#ID)
(3)修改馆息(update)
UPdate Provider Set(Name#NameAddress#AddressTel#TelIntro#Intro)
WHERE(ID=#ID)
(4)增加供项(add_supply_item)
INSERT INTO Supply(PartIDProvideridPriceQuantity)
VALUES(#PartID#ProvderlD#Price#Quantily)
(5)删供项(delete_supply_item)
DELETE SupPly
WHERE(PartlD#PartID AND ProvideID#ProviderlD)
(6)修改供项(update_supply_item)
UPDATESupplySET(Price#PriceQuantity#Quantity)
WHERE(PartlD#PartID AND ProviderID#ProviderID)
明显系统没提供面供商修改零件信息接口供商提供零件必须已零件表中存祥假设交易理员负责更新零件信息供商交易申请增加某种零件信息.事实顾客提出样求
8.顾客操作
(1)注册(register)
INSERT INTO Customer(NameAddressTel)
VALUES(#Name#Address#Tel)
登记操作顾客唯ID根ID查询修改顾客数.
(2)注销(unregister)
DELETE Customer
WHERE
UPDATE Customer Set(Name#NameAddress#AddressTel#Tel)
WHERE(1D#ID)
(4)增加需求项(add_OfferToBuy_item)
INSERT INTO OfferToBuy(PartIDCustomeriDPriceQuantity)
VALUES(#PartID#CustomerID#Price#Quantity)'
(5)删需求项(delete_OfferToBuy_iterm)
DELETE OfferToBuy
WHERE(PartlD#PartlD AND CustomerlD#CustomerID)
(6)修改需求项(叩date_OfferToBuy_item)
UPDATE OfferToBuy SET(Price#PriceQuantity#Quantity
WHERE(PartlD#PartID AND CustomeriD#CustomerID)
9.交易员
针需求分析中提出问题提出协议书〞解决方案方案说明:
(1)交易达成前作协议书保存数库中协议书具交易样完备信息条件成熟情况转达成交易
(2)协议书供商顾客签字情况效效协议书交易员签发协议书签发生效说明交易达成数库中数时予修改
(3)协议书供商顾客者交易员中意提出申请协议书双方没签字前协议双方者交易员删协议书协议书签字完毕协议书删(修改)交易员进行处理
(4)协议书转成交易程中失败交易达成前数库中数交易变化协议书失效允许
根分析数库模型作修改增加协议书表关系模式:
Agreement(CustomerlDProviderIDPartIDPriceQuantityCustomerSignProviderSign)
应SQL描述:
CREATE TABLE Agreement(
Customerm smallint
ProviderlD smallint
PartlD smallint
Price int
Quantity int
CustomerSign int
ProviderSign int ·
CONSTRAINT PK_AGREEMENT PRIMARY KEY CLUSTERED(CustomerIDProviderIDPartID)
CONSTRAINT FK_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))
述操作相交易操作数完整性求拟高中需注意方
防止户(供商顾客)数两交易时修改
需时供数库(Supply)需求数库(OfferToBuy)交易数库(Business)
协议数库(Agreement)作出修改需保持修改原子性
显然求正事务(transaction)求事务完成签发协议操作事务描述:
CREATE PROC PASS_AGREEMENT
@providerID int
@customerid int
@partlD int
AS
DECLARE @TransName VARCHAR(20)
SELECT @TransName'Pass_Agreement'
BEGIN TRANSACTION @TransName
DEClARE @price INT@qUANTITY int
SELECT @priceprice@quantityquantity FROM Agreement
WHERE prIVIderID@providerID AND customerID@customerID AND PanID@partID
1NSERT INTO Business(ProviderIDCustomerIDPartIDPriceQuantity)
VALues(@providerid@customerID@PartID@price@quantity)
UPDATE Supply SET quantityquantity@quantity
WHERE ProviderID@prividerID AND partID@partID
IF (SELECT quantity FROM Supply
WHERE Proiderid@provider AND partID@PartID)<0
ROLLBACK TRANSACTlON @TranSName
DELETE FROM Supply WHERE quantity0
UPDATE OfferToBuy SET quantityquanttity@quantity
WHERE CustomerID@customerid AND partlD@partID
IF(SELECT quandtity FROM OfferToBuy
WHERE CustomerID@CustomerID AND partID@partlD)<0
ROLLBACK TRANSACTION @TransName
DELETE FROM OfferToBuy WHERE quantity0
COMMIT TRANSACTION @TransName
方便里定义存贮程功完成Agreementt元组Business元组转化工作里考虑删空SuppiyOfferTOBUY项更加重里考虑非法Agreement情况段时间供商者顾客修改数Agreement非法时需事务废里检查Supply表OfferToBuy表中数确保数然正确
外交易员者说交易必须承项务更新零件列表里考虑顾客供商时候÷没予修改零件列表权利必须根数库中已项更新供求信息
数库实际更加偏重模型化实际环境中数库实现应模型时候需数库模型作修改
实验模型设计Microsoft TransactSQL语法数库操作SQLSERVER2000测试通
[实验数例:测试阶段]
(1实验方案设计 2测试查找错误校正错误检查否符合户功性求)
1.实验方案设计
〔1〕输入数设计:
1〕插入零件信息
insert into Part(ColorNameWeightIntro)
values('black''stick''30''of steel')
显示刚插零件id:
select id from Part where name'stick'
id
1
(1 row(s) affected)
(实验id值相应操作保持前致丁)
2〕插入供商信息:
insert into Provider(NamepasswordAddressTelIntro)
values('coml''1234''北京'6543210'nothing')
显示刚插入供商id:
select id from Provider where name'coml'
id
1
(1 row(s) affected)
3〕插入顾客信息:
insert into Customer(NameAddressTel)
values('cusl''北京''6666666')'
显示刚插入顾客id:
select id from Customer where name
id
1
(1 row(S)affected)
4〕插入供商供信息:
insert into Supply(PartIDProviderlDPriceQuantity)
values(1120100)
5〕插入顾客需求信息:
insert into OfferToBuy(PartlDCustomerIDPrieeQuantity)
values(112050)
6〕插入协议信息:
insert into Agreement(CustomerIDProviderIDPartlDPriceQuantityCustomerSignProviderSign)
values(111203011)
〔2〕执行交易操作设计:
1〕执行交易存储程PASS_AGREEMENT参数:111:
PASS_AGREEMENT 111
(面三参数分应前面选择出供商ID顾客ID零件ID)
2〕结果:显示交易供信息需求信息:
select Quantity from Supply where PartlD=1 and ProviderlD1
Quantity
70
(1 row(s) affected)
select Quantity from OfferToBuy where PartlDl and CustomerID
Quantity
20
(1 row(s) affected)
3〕分析结果:
首先保存Supply表中1D1零件供量100(参见Supply表Insert语句)保存OfferToBuy表中ID1零件需求量50(参见OFFERToBuy表Insert语句)Agreement表中指出ID1供商ID1顾客交易30ID1零件执行存储程PASS_AGREEMENTSupplyOfferToBuy表中相应数量减少30交易成功
4〕次执行交易操作:
delete from Business
附录:交易系统种SQL语言(数表建立):
* Microsoft SQL Server Scripting *
* Server 7523TEACHER *
* Database 商品交易系统 *
* Creation Date 021018 94643 *
CREATE TABLE [dbo][customer] (
[id] [smallint] IDENTITY (1 1) NOT NULL
[name] [varchar] (20) NOT NULL
[address] [varchar] (30) NULL
[Intro] [text] NULL )
GO
ALTER TABLE [dbo][customer] WITH NOCHECK ADD
CONSTRAINT [PK_customer] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
GO
CREATE TABLE [dbo][part] (
[id] [smallint] IDENTITY (1 1) NOT NULL
[color] [varchar] (20) NULL
[name] [varchar] (20) NOT NULL
[weight] [int] NULL
[Intro] [text] NULL )
GO
ALTER TABLE [dbo][part] WITH NOCHECK ADD
CONSTRAINT [PK_part] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
GO
CREATE TABLE [dbo][provider] (
[id] [smallint] IDENTITY (1 1) NOT NULL
[name] [varchar] (20) NOT NULL
[password] [varchar] (8) NOT NULL
[address] [varchar] (30) NULL
[Tel] [varchar] (20) NULL
[Intro] [text] NULL )
GO
ALTER TABLE [dbo][provider] WITH NOCHECK ADD
CONSTRAINT [PK_provider] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
GO
CREATE TABLE [dbo][supply] (
[partid] [smallint] NOT NULL
[providerid] [smallint] NOT NULL
[price] [smallint] NULL
[quantity] [int] NULL )
GO
CREATE TABLE [dbo][bussiness] (
[customerID] [smallint] NOT NULL
[partid] [smallint] NOT NULL
[providerid] [smallint] NOT NULL
[price] [smallint] NULL
[quantity] [int] NULL )
GO
CREATE TABLE [dbo][offertobuy] (
[customerID] [smallint] NOT NULL
[partid] [smallint] NOT NULL
[price] [smallint] NULL
[quantity] [int] NULL )
ALTER TABLE [dbo][bussiness] WITH NOCHECK ADD
CONSTRAINT [PK_bussiness] PRIMARY KEY CLUSTERED
(
[customerID]
[partid]
[providerid]
) ON [PRIMARY]
GO
ALTER TABLE [dbo][offertobuy] WITH NOCHECK ADD
CONSTRAINT [PK_offertobuy] PRIMARY KEY CLUSTERED
(
[customerID]
[partid]
) ON [PRIMARY]
GO
ALTER TABLE [dbo][supply] WITH NOCHECK ADD
CONSTRAINT [PK_supply] PRIMARY KEY CLUSTERED
(
[partid]
[providerid]
) ON [PRIMARY]
GO
ALTER TABLE [dbo][bussiness] ADD
CONSTRAINT [FK_bussiness_customer] FOREIGN KEY
(
[customerID]
) REFERENCES [dbo][customer] (
[id]
)
CONSTRAINT [FK_bussiness_part] FOREIGN KEY
(
[partid]
) REFERENCES [dbo][part] (
[id]
)
CONSTRAINT [FK_bussiness_provider] FOREIGN KEY
(
[providerid]
) REFERENCES [dbo][provider] (
[id]
)
GO
ALTER TABLE [dbo][offertobuy] ADD
CONSTRAINT [FK_offertobuy_customer] FOREIGN KEY
(
[customerID]
) REFERENCES [dbo][customer] (
[id]
)
CONSTRAINT [FK_offertobuy_part] FOREIGN KEY
(
[partid]
) REFERENCES [dbo][part] (
[id]
)
GO
ALTER TABLE [dbo][supply] ADD
CONSTRAINT [FK_supply_part] FOREIGN KEY
(
[partid]
) REFERENCES [dbo][part] (
[id]
)
CONSTRAINT [FK_supply_provider] FOREIGN KEY
(
[partid]
) REFERENCES [dbo][provider] (
[id]
)
GO
ALTER TABLE [dbo][part] WITH NOCHECK ADD
CONSTRAINT [DF__part__weight__1FCDBCEB] DEFAULT (0) FOR [weight]
GO
CREATE TABLE [dbo][agreement] (
[customerID] [smallint] NOT NULL
[partid] [smallint] NOT NULL
[providerid] [smallint] NOT NULL
[price] [smallint] NULL
[quantity] [int] NULL
[customersign] [int] NULL
[providersign] [int] NULL )
GO
ALTER TABLE [dbo][agreement] WITH NOCHECK ADD
CONSTRAINT [PK_agreement] PRIMARY KEY CLUSTERED
(
[customerID]
[partid]
[providerid]
) ON [PRIMARY]
GO
ALTER TABLE [dbo][agreement] ADD
CONSTRAINT [FK_agreement_customer] FOREIGN KEY
(
[customerID]
) REFERENCES [dbo][customer] (
[id]
)
CONSTRAINT [FK_agreement_part] FOREIGN KEY
(
[partid]
) REFERENCES [dbo][part] (
[id]
)
CONSTRAINT [FK_agreement_provider] FOREIGN KEY
(
[providerid]
) REFERENCES [dbo][provider] (
[id]
)
GO
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档