1、仓库管理系统数据库的设计与实现SQLserver实验题目:仓库管理系统数据库的设计与实现 描述:设计一个仓库管理系统,实现下列功能:零件信息登记(包括种类,名称和库存数量等信息);零件进库登记(包括种类,名称和库存数量等信息);零件出库登记(包括种类,名称和库存数量等信息);实验代码和实验结果和实验总结: 在实验代码中分别应用了相关实验操作的结果,通过上一个结果截图与其随后的结果截图和相关代码对比课已看出相关代码的作用(主要是各个触发器的作用)。-数据库的创建createdatabase仓库管理系统数据库onprimary(name=仓库管理系统数据库_data,filename=E:仓库管理
2、系统数据库_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,库存数量intdefault 0)createtable零件进库登记(零件代号c
3、har(10)foreignkeyreferences零件信息登记(零件代号),进货代号int,进货人工作号char(10),名称char(10)notnull,种类char(10)notnull,价格numeric(10,2)notnull,进库数量intnotnulldefault 0,存放位置char(10)notnull,进库时间datetime,primarykey (零件代号,进货代号)createtable零件出库登记(零件代号char(10)foreignkeyreferences零件信息登记(零件代号),出货代号int,出货人工作号char(10)notnull,名称char
4、(10)notnull,种类char(10)notnull,价格numeric(10,2)notnull,出库数量intnotnulldefault 0,取货单号char(10)notnull,出库时间datetime,primarykey(零件代号,出货代号)-通过存储过程来实现表中数据的输入createprocedurepro_ins1(nochar(20),namechar(20),classchar(20),snumeric(10,2),numint)asinsertinto零件信息登记values(no,name,class,s,num)createprocedurepro_ins2
5、(nochar(20),jnoint,wnochar(10),namechar(20),classchar(20),snumeric(10,2),numint,mchar(20)asdeclaretimedatetimesettime=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)asd
6、eclaretimedatetimesettime=getdate()insertinto零件出库登记values(no,jno,wno,name,class,s,num,m,time)createprocedurepro_selectasbeginselect*from零件信息登记select*from零件进库登记select*from零件出库登记end-通过第一个存储过程来实现零件的信息登录execpro_ins120112001,螺栓,金属,5.2,50execpro_ins120112002,龙头,金属,9.3,70execpro_ins120112003,水杯,塑料,36.8,80e
7、xecpro_ins120112004,书包,布料,52,150execpro_ins120112005,电视,电子,4000,50-当零件进库时通过下面的触发器来实现数据的完整性createtriggertri_统一零件管理on零件进库登记insteadofinsertasbeginif(exists(select零件代号from零件信息登记where零件代号=(select零件代号frominserted)beginprint在库里已经此零件,并且放置成功update零件信息登记set库存数量=库存数量+(select进库数量frominserted)where零件代号=(select零件
8、代号frominserted)endif(notexists(select零件代号from零件信息登记where零件代号=(select零件代号frominserted)beginprint库里不存在此零件,已经把此零件加入零件信息登记中insertinto零件信息登记select零件代号,名称,种类,价格,进库数量frominsertedinsertinto零件进库登记select零件代号,进货代号,进货人工作号,名称,种类,价格,进库数量,存放位置,进库时间frominsertedendEnd-对触发器“tri_统一零件管理”的相关验证信息execpro_selectexecpro_ins
9、220112002,1120,c2011a,龙头,金属,9.3,70,一排号execpro_ins220112009,1122,c2011b,电池,金属,8.3,150,一排号execpro_ins220112012,1132,c2011c,水桶,塑料,7.9,130,二排号execpro_ins220112013,1134,a2012d,饮料,食品,54,200,二排号execpro_select-drop trigger tri_统一零件出库-当零件出库时通过下面的触发器来实现数据的完整性createtriggertri_统一零件出库on零件出库登记insteadofinsertasife
10、xists(select零件代号from零件信息登记where零件代号=(select零件代号frominserted)beginprint次零件存在ifexists(select零件代号from零件信息登记where零件代号=(select零件代号frominserted)and库存数量=(select出库数量frominserted)beginbeginprint零件库存够出售update零件信息登记set库存数量=库存数量-(select出库数量frominserted)where零件代号=(select零件代号frominserted)endinsertinto零件出库登记select
11、零件代号,出货代号,出货人工作号,名称,种类,价格,出库数量,取货单号,出库时间frominsertedendelsebeginprint零件库存数量不够,不能出售!endendelsebeginprint仓库里没有此零件,请通知公司end-对触发器“tri_统一零件管理”的相关验证信息execpro_ins320112002,1120,f112a,龙头,金属,9.3,10,东华理工execpro_ins320112004,1143,f113a,书包,布料,52,1000,南昌execpro_ins320112045,1220,f114b,铅笔,用具,9.3,10,江西execpro_ins3
12、20112046,1128,g112a,锁,金属,9.3,10,云南execpro_select-对“零件进库登记”数据更改是触发对“零件信息登记”的更改-同时防止对“零件进库登记”信息的非法更改createtriggertri_up零件进库on零件进库登记afterupdateasifexists(select零件代号fromdeletedwhere零件代号=(select零件代号frominserted)and进货代号=(select进货代号frominserted)and进库数量(select进库时间frominserted)update零件信息登记set库存数量=库存数量+(selec
13、t进库数量frominserted)-(select进库数量fromdeleted)elseifexists(select零件代号fromdeletedwhere零件代号=(select零件代号frominserted)and进货代号=(select进货代号frominserted)and进库数量=(select进库时间frominserted)update零件信息登记set库存数量=库存数量+(select进库数量frominserted)-(select进库数量fromdeleted)elsebeginprint修改不正确end-对触发器“tri_up零件进库”的相关验证信息update零
14、件进库登记set进库数量= 120where零件代号=20112002and进货代号=1120update零件进库登记set进库数量= 5000where零件代号=20112002and进货代号=2187execpro_select-对“零件出库登记”数据更改是触发对“零件信息登记”的更改-同时防止对“零件进库登记”信息的非法更改createtriggertri_up零件出库on零件出库登记afterupdateasifexists(select零件代号fromdeletedwhere零件代号=(select零件代号frominserted)and出货代号=(select出货代号fromins
15、erted)and出库数量(select出货代号frominserted)update零件信息登记set库存数量=库存数量+(select出库数量frominserted)-(select出库数量fromdeleted)elsebeginprint修改不正确end-对触发器“tri_up零件出库”的相关验证信息update零件出库登记set出库数量= 20where零件代号=20112002and出货代号= 1120update零件出库登记set出库数量= 120where零件代号=20112004update零件出库登记set出货代号=620where零件代号=20112004execpro
16、_select-一下代码为创建相关规则、试图、用户并授权,来完成数据库的完整性和安全性-相关的验证信息省略createruleru_零件数量asnum=0execsp_bindruleru_零件数量,零件信息登记.库存数量execsp_bindruleru_零件数量,零件进库登记.进库数量execsp_bindruleru_零件数量,零件出库登记.出库数量execpro_ins120112011,龙头,金属,9.3,-10 execpro_ins220112012,龙头,金属,9.3,-100,东华理工-execpro_ins320112013,龙头,金属,9.3,-100,东华理工createviewview_零件进出库(零件代号,进库数量,出库数量)asselect零件进库登记.零件代号,进库数量,出库数量from零件进库登记,零件出库登记where零件进库登记.零件代号=零件出库登记.零件代号createviewview_零件库存情况asselect零件代号,库存数量from零件信息登记select*fromview_零件进出库select*fromview_零件库存情况
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1