1、其中包括货物价格的变化、货物种类的变化等。3.数据流图 仓储管理0层数据流图 仓储管理1层数据流图货物入库管理1层数据流图货物出库1层数据流图货物库存1层数据流图仓库管理1层数据流图 各类编码1层数据流图4.数据字典分析数据流图,确定数据流的描述: “货物入库”数据流说明:货物入库的货物信息数据流来源:入库货物信息数据流去向:入库货物名单显示组成:入库货号,货名,时间 “货物出库“数据流登记出库货物的各种信息出库货物的货号名称出库货物的名单显示出库货号,货名,时间 “仓储货物“数据流登记存储货物信息输入:货物名,号码,数量输出:仓储货物表出库,入库的描述处理过程:货物出库,入库货主按所需提走货
2、物,按所需存储货物货物名称提取货物名,存储货物名称二概念结构设计1确定各实体之间的关系以及约束一个仓库可以存放多种货物,一中货物可以存放在多个仓库中一个仓库可以提取多个货物出库,新来的货物可以存入多个仓库中,一个货主可以拥有多种货物,2.各实体的属性仓库(仓库号,仓库名,负责人号,负责人姓名,仓位数,面积)货物(货物号,货物名,货物数量,仓库号,货物类型,单位,参考价格)货主(货主编号,货主姓名)审核(审核人,审核否,备注信息)联系:入库(入库数量,入库时间,入库编号)存储(货主姓名)3.仓库管理总E-R图4.仓库管理的CDM设计图三逻辑结构设计与物理结构设计1. 仓库管理的PDM设计图四仓储
3、管理数据库实施 在PowerDesigner中点击Createbase,Create Test Date,使其生成测试数据库和测试数据,然后在此基础上修改表表中数据,并在SQL Server 2000测试通过。修改过的源程序详见“源程序”文件夹五入库数量与仓位数转化的函数设计功能要求:将入库的货物按照入库的数量转换成所要占据的仓位数的功能。入口参数:入库数量 单位:吨返回:仓位数 单位:个仓位数的转换算法:仓位数=ceiling(入库数量/仓位数)脚本:AmountConvert.sqlcreate function AmountConvert(inputamount int ,wamount
4、 int)-inputmount:入库数量-wamount :仓位数returns intAsbegin return (ceiling(inputamount/10)endtest.sqlselect Good.Gname,dbo.AmountConvert(Intoamount,Wamount) 仓位数, Input.Intoamountfrom Good ,Input ,Warehouse六存储过程1.随机查看任意号码仓库的仓库信息,使用输入参数,创建一个存储过程源程序:Pro_2.testuse ccgo create procedure pro_2 wno char(2)as sel
5、ect a.Wno ,a.Gno ,a.Gname,c.Oname,b.Gamount,b.Gstyle,b.Gprice,b.Gunite from Warehouse a,Good b,Owner c where a.Gno=b.Gno and b.Oname=c.Oname and a.Gname=b.Gname and a.Wno=wnotest1.sqlexecute pro_2 AA七. 触发器1.实现修改现存货物数量的触发器实现功能:当货物出库时,在货物表中的剩余货物数量可以自动修改。t.sqlalter table Good add Rest int nullthe_rest.
6、sqlcreate trigger the_rest on Outt for insert,update,deletedeclare therest intdeclare Gno char(6),Gname varchar(10)-declare insert_cursor cursor for select Gno ,Gname from inserteddeclare delete_cursor cursor for select Gno ,Gname from deletedbeginopen delete_cursor fetch next from delete_cursor int
7、o Gno,Gnamewhile fetch_status=0 begin set therest=(select Good.Gamount-Outt.Oamount from Good,Outt where Good.Gno=Outt.Gno and Outt.Gno=Gno and Good.Gname=Gname ) update Good set Rest=therest where Gname=Gname and Gno=Gno fetch next from delete_cursor into Gno,Gnameclose delete_cursordeallocate dele
8、te_cursor/*if update(Oamount)open insert_cursorfetch next from insert_cursor into Gno,Gnameprint str(therest)+delete+mmm+Gno+Gnameupdate Good set Rest =therest where Gno=Gno and Gname=Gnameend close insert_cursor deallocate insert_cuosorend */execute1.sqlupdate Outtset Oamount =70where Wno=CC and Gn
9、o=CC2000 and Gname=钢铁execute2.sqlAA1000水泥2. 不准修改的货主姓名的触发器T2.sql/*不准修改的货主姓名的触发器*/create trigger 修改货主姓名 on Goodfor update if update(Oname)rollback transactionraiserror(不能修改货主姓名,16,10)test2.sqlupdate Good set Oname=王五where Gno=附录A:设计所用结构表1.Warehouse 仓库说明字段名称数据类型约束备注仓库号Wno Char(2)P货物号GnoChar(6)F货物名Gname
10、Varchar(10)仓库名WnameVarchar(16)Wamountint面积WareaNumeric(3,1)负责人编号RnoVarchar(8)负责人姓名Rname2.Goods货物前2位为仓库号,后4位物品编号审核人Checker货主姓名Oname货物数量GamountInt货物类型GstyleVarchar(20)单位GuniteChar(1)参考价格Gprice3.Owner 货主货主编号OwnnoChar(4)4.Input入库入库编号IntonoWnoP FP F 入库时间IntotimeDatetimeIntoamountInt 5. Out货物出库出库编号Ono出库时间
11、Otime出库数量Oamount6.Check审核审核否Ifcheck备注信息InfoVarchar(30)本次的设计中,用到了很多的知识点。经历了数据库设计的6个阶段,在每个阶段中都有其不同的任务,个人感觉第一阶段,需求分析是最繁琐的,所谓万事开头难,但只有将需求分析把握住了,后面的任务就简单了。这个数据库设计出来后,还要根据要求的功能编写函数,存储过程,触发器,在这部分是有点难度的,但通过仔细的读研书本后,本人编写了一个函数用来解决入库数量与仓位数转化,编写了一个存储过程用来查询仓库表中任意指定的仓库所有的信息,编写了2个触发器,本别用来解决实现修改现存货物数量和限制修改的货主姓名权限。 通过这几天的实习,我深刻的感受到数据库设计的不易与艰辛,它需要不断的调试与编写,才能成功。此次的实习,也为我今后的学习以及工作埋下了铺垫。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1