仓库管理系统数据库的设计与实现SQLserver.docx

上传人:b****5 文档编号:3547983 上传时间:2022-11-23 格式:DOCX 页数:13 大小:302.25KB
下载 相关 举报
仓库管理系统数据库的设计与实现SQLserver.docx_第1页
第1页 / 共13页
仓库管理系统数据库的设计与实现SQLserver.docx_第2页
第2页 / 共13页
仓库管理系统数据库的设计与实现SQLserver.docx_第3页
第3页 / 共13页
仓库管理系统数据库的设计与实现SQLserver.docx_第4页
第4页 / 共13页
仓库管理系统数据库的设计与实现SQLserver.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

仓库管理系统数据库的设计与实现SQLserver.docx

《仓库管理系统数据库的设计与实现SQLserver.docx》由会员分享,可在线阅读,更多相关《仓库管理系统数据库的设计与实现SQLserver.docx(13页珍藏版)》请在冰豆网上搜索。

仓库管理系统数据库的设计与实现SQLserver.docx

仓库管理系统数据库的设计与实现SQLserver

●实验题目:

仓库管理系统数据库的设计与实现

描述:

设计一个仓库管理系统,实现下列功能:

①零件信息登记(包括种类,名称和库存数量等信息);

②零件进库登记(包括种类,名称和库存数量等信息);

③零件出库登记(包括种类,名称和库存数量等信息);

实验代码和实验结果和实验总结:

在实验代码中分别应用了相关实验操作的结果,通过上一个结果截图与其随后的结果截图和相关代码对比课已看出相关代码的作用(主要是各个触发器的作用)。

--------------------------------------

--数据库的创建

createdatabase仓库管理系统数据库

on

primary

(name=仓库管理系统数据库_data,

filename='E:

\仓库管理系统数据库_Data.MDF',

size=50,

maxsize=500,

filegrowth=5)

logon

(name=仓库管理系统数据库_log,

filename='E:

\仓库管理系统数据库_Log.LDF',

size=10,

maxsize=200,

filegrowth=5)

----------------------------------------

--数据表的创建

use仓库管理系统数据库

createtable零件信息登记

(零件代号char(10)primarykey,

名称char(10)notnull,

种类char(10)notnull,

价格numeric(10,2)notnull,

库存数量intdefault0)

createtable零件进库登记

零件代号char(10)foreignkeyreferences零件信息登记(零件代号),

进货代号int,

进货人工作号char(10),

名称char(10)notnull,

种类char(10)notnull,

价格numeric(10,2)notnull,

进库数量intnotnulldefault0,

存放位置char(10)notnull,

进库时间datetime,

primarykey(零件代号,进货代号))

createtable零件出库登记

零件代号char(10)foreignkeyreferences零件信息登记(零件代号),

出货代号int,

出货人工作号char(10)notnull,

名称char(10)notnull,

种类char(10)notnull,

价格numeric(10,2)notnull,

出库数量intnotnulldefault0,

取货单号char(10)notnull,

出库时间datetime,

primarykey(零件代号,出货代号))

----------------------------------------

--通过存储过程来实现表中数据的输入

createprocedurepro_ins1

(@nochar(20),@namechar(20),@classchar(20),@snumeric(10,2),@numint)

as

insertinto零件信息登记

values(@no,@name,@class,@s,@num)

createprocedurepro_ins2

(@nochar(20),@jnoint,@wnochar(10),@namechar(20),@classchar(20),@snumeric(10,2),@numint,@mchar(20))

as

declare@timedatetime

set@time=getdate()

insertinto零件进库登记

values(@no,@jno,@wno,@name,@class,@s,@num,@m,@time)

createprocedurepro_ins3

(@nochar(20),@jnoint,@wnochar(10),@namechar(20),@classchar(20),@snumeric(10,2),@numint,@mchar(20))

as

declare@timedatetime

set@time=getdate()

insertinto零件出库登记

values(@no,@jno,@wno,@name,@class,@s,@num,@m,@time)

createprocedurepro_select

as

begin

select*

from零件信息登记

select*

from零件进库登记

select*

from零件出库登记

end

----------------------------------------------------------

--通过第一个存储过程来实现零件的信息登录

execpro_ins1'20112001','螺栓','金属',5.2,50

execpro_ins1'20112002','龙头','金属',9.3,70

execpro_ins1'20112003','水杯','塑料',36.8,80

execpro_ins1'20112004','书包','布料',52,150

execpro_ins1'20112005','电视','电子',4000,50

-

--------------------------------------------------

--当零件进库时通过下面的触发器来实现数据的完整性

createtriggertri_统一零件管理

on零件进库登记

insteadofinsert

as

begin

if(exists(select零件代号from零件信息登记where零件代号=(select零件代号frominserted)))

begin

print'在库里已经此零件,并且放置成功'

update零件信息登记

set库存数量=库存数量+(select进库数量frominserted)

where零件代号=(select零件代号frominserted)

end

if(notexists(select零件代号from零件信息登记where零件代号=(select零件代号frominserted)))

begin

print'库里不存在此零件,已经把此零件加入零件信息登记中'

insertinto零件信息登记

select零件代号,名称,种类,价格,进库数量

frominserted

insertinto零件进库登记

select零件代号,进货代号,进货人工作号,名称,种类,价格,进库数量,存放位置,进库时间

frominserted

end

End

--------------------------------------------------------------

--对触发器“tri_统一零件管理”的相关验证信息

execpro_select

execpro_ins2'20112002',1120,'c2011a','龙头','金属',9.3,70,'一排号'

execpro_ins2'20112009',1122,'c2011b','电池','金属',8.3,150,'一排号'

execpro_ins2'20112012',1132,'c2011c','水桶','塑料',7.9,130,'二排号'

execpro_ins2'20112013',1134,'a2012d','饮料','食品',54,200,'二排号'

execpro_select

--droptriggertri_统一零件出库

---------------------------------------------------------------------

--当零件出库时通过下面的触发器来实现数据的完整性

createtriggertri_统一零件出库

on零件出库登记

insteadofinsert

as

ifexists(select零件代号from零件信息登记where零件代号=(select零件代号frominserted))

begin

print'次零件存在'

ifexists(select零件代号from零件信息登记where零件代号=(select零件代号frominserted)

and库存数量>=(select出库数量frominserted))

begin

begin

print'零件库存够出售'

update零件信息登记

set库存数量=库存数量-(select出库数量frominserted)

where零件代号=(select零件代号frominserted)

end

insertinto零件出库登记

select零件代号,出货代号,出货人工作号,名称,种类,价格,出库数量,取货单号,出库时间

frominserted

end

else

begin

print'零件库存数量不够,不能出售!

'

end

end

else

begin

print'仓库里没有此零件,请通知公司'

end

--对触发器“tri_统一零件管理”的相关验证信息

execpro_ins3'20112002',1120,'f112a','龙头','金属',9.3,10,'东华理工'

execpro_ins3'20112004',1143,'f113a','书包','布料',52,1000,'南昌'

execpro_ins3'20112045',1220,'f114b','铅笔','用具',9.3,10,'江西'

execpro_ins3'20112046',1128,'g112a','锁','金属',9.3,10,'云南'

execpro_select

-----------------------------------------------------------------

--对“零件进库登记”数据更改是触发对“零件信息登记”的更改

--同时防止对“零件进库登记”信息的非法更改

createtriggertri_up零件进库

on零件进库登记

afterupdate

as

ifexists(select零件代号fromdeletedwhere零件代号=(select零件代号frominserted)

and进货代号=(select进货代号frominserted)

and进库数量>(select进库时间frominserted))

update零件信息登记

set库存数量=库存数量+(select进库数量frominserted)-(select进库数量fromdeleted)

elseifexists(select零件代号fromdeletedwhere零件代号=(select零件代号frominserted)

and进货代号=(select进货代号frominserted)

and进库数量<=(select进库时间frominserted))

update零件信息登记

set库存数量=库存数量+(select进库数量frominserted)-(select进库数量fromdeleted)

else

begin

print'修改不正确'

end

---------------------------------------------------------------------

--对触发器“tri_up零件进库”的相关验证信息

update零件进库登记

set进库数量=120

where零件代号='20112002'and进货代号=1120

update零件进库登记

set进库数量=5000

where零件代号='20112002'and进货代号=2187

execpro_select

--------------------------------------------------------

--对“零件出库登记”数据更改是触发对“零件信息登记”的更改

--同时防止对“零件进库登记”信息的非法更改

createtriggertri_up零件出库

on零件出库登记

afterupdate

as

ifexists(select零件代号fromdeletedwhere零件代号=(select零件代号frominserted)

and出货代号=(select出货代号frominserted)

and出库数量<=(select出库时间frominserted))

update零件信息登记

set库存数量=库存数量+(select出库数量frominserted)-(select出库数量fromdeleted)

elseifexists(select零件代号fromdeletedwhere零件代号=(select零件代号frominserted)

and出货代号=(select出货代号frominserted)

and出库数量>(select出货代号frominserted))

update零件信息登记

set库存数量=库存数量+(select出库数量frominserted)-(select出库数量fromdeleted)

else

begin

print'修改不正确'

end

--------------------------------------------------------------------

--对触发器“tri_up零件出库”的相关验证信息

update零件出库登记

set出库数量=20

where零件代号='20112002'and出货代号=1120

update零件出库登记

set出库数量=120

where零件代号='20112004'

update零件出库登记

set出货代号=620

where零件代号='20112004'

execpro_select

--------------------------------------------------------------------

--一下代码为创建相关规则、试图、用户并授权,来完成数据库的完整性和安全性

---相关的验证信息省略

createruleru_零件数量

as

@num>=0

execsp_bindrule'ru_零件数量','零件信息登记.库存数量'

execsp_bindrule'ru_零件数量','零件进库登记.进库数量'

execsp_bindrule'ru_零件数量','零件出库登记.出库数量'

execpro_ins1'20112011','龙头','金属',9.3,-10

execpro_ins2'20112012','龙头','金属',9.3,-100,'东华理工'

-execpro_ins3'20112013','龙头','金属',9.3,-100,'东华理工'

createviewview_零件进出库(零件代号,进库数量,出库数量)

as

select零件进库登记.零件代号,进库数量,出库数量

from零件进库登记,零件出库登记

where零件进库登记.零件代号=零件出库登记.零件代号

createviewview_零件库存情况

as

select零件代号,库存数量

from零件信息登记

select*

fromview_零件进出库

select*

fromview_零件库存情况

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1