仓库管理系统2.docx
《仓库管理系统2.docx》由会员分享,可在线阅读,更多相关《仓库管理系统2.docx(19页珍藏版)》请在冰豆网上搜索。
仓库管理系统2
东方学院
实验(实训)报告
项目名称仓库系统数据库分析与设计
所属课程名称数据库原理及应用
项目类型设计、综合型
实验(实训)日期2012.11.24—2010.12.16
班级09信息1班
学号0920400124
姓名张佳妮
指导教师严素蓉
仓库管理系统的数据库设计
1、问题背景及描述
随着科学技术的发展,社会进步,计算机迅速的发展,仓库管理的方法也日新月异,以前全是由人管理的方法现存在很多的缺点:
管理效率低,劳动强度大,信息处理速度低而且准确率也不够令人满意。
为了提高仓库管理效率,减轻劳动强度提高,信息处理速度和准确性;为仓库管理员提供更方便、科学的服务项目。
为仓库管理员提供的一种更先进、科学的服务系统。
于是我们便选择了由计算机来设计一个仓库管理系统的方案。
让计算机对仓库进行自动管理,仓库管理员可以直接在计算机上实现仓库的信息管理,并能在一定程度上实现自动化。
我们在现行系统初步调查的基础上提出了新系统目标,即新系统建立后所要求达到的运行指标,这是系统开发和评价的依据。
2需求分析
2.1系统功能分析
通过初步分析,“仓库管理系统”应该具备以下主要功能:
⒈仓库各种信息的输入,包括入库,出库,还原,需求信息的输入等。
⒉仓库管理的各种信息查询,修改和维护。
⒊操作日志的管理。
⒋仓库管理系统的使用帮助。
2.2数据流程图
在仔细调查企业仓库物资设备管理过程的基础上,得到本系统所处理的流程图:
图1(大致数据流程图)
图2(整体数据流程图)
2.3建立数据字典
数据字典是关于数据的信息的集合,也就是对数据流图中包含的元素的定义的集合。
它的作用是在软件分析和设计过程中提供关于数据的描述信息。
数据字典和数据流图共同构成系统的逻辑模型。
数据字典定义数据的方法就是对数据自顶向下地分解,当分解到不需要进一步定义,每个和工程有关的人员都清楚其含义的元素时,这种分解过程就结束了。
本仓库管理系统根据划分的模块定义了如下数据字典:
①数据项的定义
数据项编号:
1-01
数据项名称:
商品编号
别 名:
无
简述:
某种商品的编号
类 型:
字符型
长 度:
8字节
取值范围:
数字+英文字母
数据项编号:
1-02
数据项名称:
单价
别 名:
购入单价
简述:
某种商品的购入单价
类 型:
数值型
长 度:
10位,小数位2位
取值范围:
0.00-9999999.99
数据项编号:
1-03
数据项名称:
库存数量
别 名:
实际库存数量
简述:
某种商品的库存数量
类 型:
数值型
长 度:
5位整数
取值范围:
0-99999
②数据流的定义
数据流名称:
入库单
编 号:
F1
简 述:
采购人员填写的商品入库凭单
数据流来源:
采购人员
数据流去向:
登记库存台账
数据流组成:
日期+入库单编号+商品编号+购入数量
流通量:
25份/天
高峰流通量:
50份/天
数据流名称:
发货单
编 号:
F2
简 述:
供应商填写的商品发货凭单
数据流来源:
供应商
数据流去向:
登记合同台账
数据流组成:
日期+发货单编号+供应商编号+商品编号+发货数量
流通量:
25份/天
高峰流通量:
50份/天
数据流名称:
取货单
编 号:
F3
简 述:
库管员填写的要求车间取货凭单
数据流来源:
库管员
数据流去向:
车间
数据流组成:
日期+车间编号+商品编号+数量
流通量:
25份/天
高峰流通量:
50份/天
③数据存储的定义
数据存储的名称:
库存台账
数据存储编号:
D1
简 述:
记录商品的编号、名称、单价与库存数量等信息
数据存储组成:
商品编号+购入单价+库存数量
关键字:
商品编号
数据存储的名称:
合同台账
数据存储编号:
D2
简 述:
记录合同的编号、供应商编号、货物编号、单价与购入数量等信息
数据存储组成:
合同编号+供应商编号+商品编号+单价+购入数量+日期+合同状态
关键字:
合同编号
数据存储的名称:
计划台账
数据存储编号:
D3
简 述:
记录计划的编号、车间编号、商品编号、数量等信息
数据存储组成:
计划编号+供应商编号+商品编号+数量+日期+计划状态
关键字:
计划编号
数据存储的名称:
供应商信息
数据存储编号:
D4
简 述:
记录供应商的编号,名称,地址,电话,传真,银行帐号
数据存储组成:
供应商编号+名称+地址+电话+传真+银行帐号
关键字:
供应商编号
数据存储的名称:
商品信息
数据存储编号:
D5
简 述:
记录库存商品的编号,类别,名称,规格,单价,单位,存放位置,用途
数据存储组成:
商品编号+名称+类别+规格+单价+单位+存放位置+用途
关键字:
商品编号
数据存储的名称:
车间信息
数据存储编号:
D6
简 述:
记录车间的编号,名称,联系人,电话
数据存储组成:
车间编号+名称+联系人+电话
关键字:
车间编号
数据存储的名称:
职员信息
数据存储编号:
D7
简 述:
记录用户名称、密码和权限
数据存储组成:
用户名+密码+权限
关键字:
用户名
④处理逻辑的定义
处理名:
库存检查
编 号:
P1
输 入:
数据流F5
输 出:
数据流F6
描 述:
当车间将计划单发给库管员后,库管员要将计划单与库存台账进行比较,看是否需要订货。
处理名:
验货处理
编 号:
P2
输 入:
数据流F2,数据流F5
输 出:
数据流F1,数据流F4
描 述:
采购员要检验货物的质量。
处理名:
出入库检查
编 号:
P3
输 入:
数据流F1
输 出:
数据流F3
描 述:
当验货处理后,库管员将货物入库,并发取货单到订货单位。
3.概念结构设计
这一设计阶段是在需求分析的基础上,设计出能过满足用户需求的各种实现,以及它们之间的关系,为后面的逻辑结构设计打下基础。
图3(总体系统E-R图)
图4(产品实体E-R图)
图5(仓库实体E-R图)
图6(供应商实体E-R图)
图7(顾客实体E-R图)
图8(用户实体E-R图)
4.逻辑结构设计
4.1关系模型
供应商表(供应商编号,公司名称,联系人,地址,电话)主玛为供应商编号,符合三范式。
产品表(产品编号,名称,规格,型号,数量,标准价格,货物重量,销售价格)主玛为产品编号,符合BC式。
顾客表(顾客编号,名称,联系人,地址,电话,手机)主玛为顾客编号,符合三范式。
仓库表(仓库编号,名称,面积,类型,管理员,地址,电话,用户号)主玛为仓库编号,符合三范式。
用户表(用户编号,姓名,职位,权限,用户名,密码)主玛为用户编号,符合三范式。
供应表(产品号,供应商号,货物数量)主玛为货物号,供应商号,符合三范式。
取货表(客户号,产品号,取货数量)主玛为客户号,产品号,符合三范式。
储存表(货物号,仓库号,存储数量)主玛为货物号,仓库号,符合三范式。
4.2表的建立
表1(供应商表supply)
列名
含义
长度
类型
NULL
DEFAULT
SID
供应商编号
8
int
no
no
Sname
公司名称
20
Char()
no
no
Scon
联系人
6
Char()
no
no
Sdr
地址
30
Char()
no
no
Stele
电话
15
int
no
no
表2(产品表goods)
列名
含义
长度
类型
NULL
DEFAULT
GID
货物编号
8
int
no
no
Gname
名称
20
Char()
no
no
Gsta
规格
8
Char()
no
no
Gtype
型号
8
Char()
no
no
Gqty
数量
8
int
no
no
GSP
销售价格
8
int
no
no
GDP
标准价格
8
int
yes
No
表3(顾客表custom)
列名
含义
长度
类型
NULL
DEFAULT
CID
顾客编号
8
int
no
no
Cname
名称
8
Char()
no
no
Ccon
联系人
6
Char()
no
no
Cdr
地址
20
Char()
no
no
Ctele
电话
15
int
no
no
Chand
手机
15
int
yes
No
表4(用户表users)
列名
含义
长度
类型
NULL
DEFAULT
UID
用户编号
8
int
no
no
Uname
姓名
8
Char()
no
no
Upos
职位
10
Char()
yes
no
Ula
权限
8
Char()
no
no
Usub
用户名
15
Char()
no
no
Ukey
密码
15
int
No
No
表5(仓库表warchouse)
列名
含义
长度
类型
NULL
DEFAULT
WID
仓库编号
8
int
no
no
Wname
名称
20
Char()
no
no
Wsq
面积
6
int
yes
no
Wtype
类型
8
Char()
no
no
Wad
管理员
6
Char()
no
no
Wdr
地址
20
Char()
no
no
Wtele
电话
15
int
no
no
UID
编号
8
int
no
no
表6(供应表accommdate)
列名
含义
长度
类型
NULL
DEFAULT
GID
货物编号
8
int
no
no
SID
供应商编号
8
int
no
no
GS
货物数量
8
int
no
no
表7(取货表)
列名
含义
长度
类型
NULL
DEFAULT
WID
仓库编号
8
int
no
no
CID
顾客编号
8
int
no
no
UID
用户编号
8
int
no
no
SU
取货数量
8
int
no
no
表8(存储表)
列名
含义
长度
类型
NULL
DEFAULT
GID
货物编号
8
int
no
no
WID
仓库编号
8
int
no
no
CU
存储数量
8
int
no
no
红色字为主码。
5物理结构设计
5.1数据库及基本表
Createtablesupply
(
SIDintprimarykeynotnull,
Snamechar(20)notnull,
Sconchar(6)notnull,
Semailchar(20),
Spintnotnull,
Sdrchar(30),
Steleint,
)
Createtablegoods
(
GIDintprimarykeynotnull,
Gnamechar(20)notnull,
Gstachar(8)notnull,
Gtypechar(8)notnull,
Gptyintnotnull,
GSPintnotnull,
GDPint,
Gweiintnotnull,
)
Createtablecostom
(
CIDintprimarykeynotnull,
Ccrechar(6),
Cconchar(6)notnull,
Cdrchar(20)notnull,
Cteleintnotnull,
Chandintnotnull,
CODchar(15),
Ccardintnotnull,
Ccomchar(20)notnull,
Cemailchar(20),
)
Createtablewarehouse
(
WIDintprimarykeynotnull,
Wnamechar(20)notnull,
Wsqint,
Wtypechar(8)notnull,
Wadchar(6)notnull,
Wdrchar(20)notnull,
Wptyint,
Wteleintnotnull,
)
Createtableusers
(
UIDintprimarykeynotnull,
Unamechar(8)notnull,
Uposchar(10)notnull,
Ulachar(8)notnull,
Usubchar(15)notnull,
Ukeyintnotnull,
)
Createtableaccommodate
(
GIDintnotnull,
SIDintnotnull,
GSintnotnull,
primarykey(GID,SID),
Foreignkey(GID)referencesgoods(GID),
Foreignkey(SID)referencessupply(SID)
)
Createtablewcu
(
WIDintnotnull,
CIDintnotnull,
UIDintnotnull,
SUintnotnull,
primarykey(WID,CID,UID),
Foreignkey(WID)referenceswarehouse(WID),
Foreignkey(UID)referencesusers(UID),
Foreignkey(CID)referencescostom(CID),
)
CreatetableGW
(
GIDintnotnull,
WIDintnotnull,
CUintnotnull,
primarykey(WID,GID),
Foreignkey(GID)referencesgoods(GID),
Foreignkey(WID)referenceswarehouse(WID),
)
5.2索引的建立
createindexsupply_SID_indexonsupply(SID)
createindexgoods_GID_indexongoods(GID)
createindexcostom_CID_indexoncostom(CID)
createindexusers_UID_indexonusers(UID)
createindexwarchouse_WID_indexwarchouseon(WID)
5.3视图
Createview出售as
SELECTdbo.GW.GID,dbo.supply.SID,dbo.GW.WID,dbo.GW.CU
FROMdbo.accommodateINNERJOIN
dbo.goodsONdbo.accommodate.GID=dbo.goods.GIDINNERJOIN
dbo.GWONdbo.goods.GID=dbo.GW.GIDINNERJOIN
dbo.supplyONdbo.accommodate.SID=dbo.supply.SIDINNERJOIN
dbo.warehouseONdbo.GW.WID=dbo.warehouse.WIDINNERJOIN
dbo.wcuONdbo.warehouse.WID=dbo.wcu.WIDINNERJOIN
dbo.usersONdbo.wcu.UID=dbo.users.UIDINNERJOIN
dbo.costomONdbo.wcu.CID=dbo.costom.CID
5.4关系图
6数据库运行和维护
数据库设计并试运行后,如试运行结果符合设计目标,数据库就可以真正投入运行了,同时也标志着开发任务的基本结束和维护工作的开始;
6.1维护工作包括:
(1)数据库的转储与恢复;
(2)数据库安全性和完整性控制;
(3)数据库性能的检测与改善;
(4)数据库的重组和重构。
6.2空间管理
1、在数据库运行过程中,对数据库空间使用情况,特别是空间的增长情况进行监控,并采取相应的措施对空间进行管理非常重要;
2、空间管理主要包括:
创建数据库空间,更改空间大小,删除空间,修改空间状态,新建、移动、关联数据文件等;
6.3参数调整
1、外部调整:
(1)CPU:
当数据库操作对CPU的要求超过数据库服务器的CPU性能时,数据库性能就受到CPU的限制,使数据库操作变慢;如业务高峰时,CPU的使用量仍然很低,说明服务器CPU资源充足;
(2)网络:
大量的SQL数据在网络上传输会导致网速变慢,调整网络设备,也可以一定程度上提高数据库的性能;
2、调整内存分配
3、调整磁盘I/O
4、调整竞争:
(1)修改参数以控制连接到数据库的最大进程数;
(2)减少调试进程的竞争;
(3)减少多线程服务进程的竞争;
(4)减少重做日志缓冲区竞争;
(5)减少回滚段竞争。
6.4查询优化
1、合理使用索引:
索引是数据库中重要的数据结构,根本目的就是为了提高查询效率,使用原则如下:
(1)经常在索引中作为条件被使用的列,应为其建立索引;
(2)频繁进行排序或分组(即进行groupby或orderby操作)的列,应为其建立索引;
(3)一个列的值域很大时,应为其建立索引;
(4)如果待排列的列有多个,应在这些列上建立复合索引;
(5)可以使用系统工具来检查索引的完整性,必要时进行修复。
2、避免或简化排序:
因为磁盘排序的开销很大,当能够利用索引自动以适当的次序产生输出时,优化器就可以避免不必要的排序步骤,以下是一些影响因素:
(1)由于现有的索引不足,导致排序时索引中不包括一个或几个等待排序的列;
(2)groupby或orderby子句中列的次序与索引的次序不一样;
(3)排序的列来自不同的表。
为了避免不必要的排序,就要正确地增建索引,合理地合并数据库表。
如排序不可避免,那么应试图简化它。
3、消除对大型表行数据的顺序存取:
在嵌套查询中,对表的顺序存取对查询效率可能产生致命的影响,解决方法就是对连接的列进行索引。
还可以使用并集来避免顺序存取。
4、避免相关子查询:
查询嵌套层次越多,效率越低,应尽量避免子查询,如不可避免,那么要在子查询中过滤尽量多的行;
5、避免困难的正规表达式:
避免含MATCHES和LINK关键字的正规表达式;
6、使用临时表加速查询:
把表的一个子集进行排序并创建临时表,有时能加速查询;
7总结
在这次数据库分析与设计中,我花了很久的时间做需求分析和数据库设计,然后编写程序。
开始时我真的不知道该怎么做,仓库管理系统到底要创建哪些表,表里到底要有哪些数据项,这些都很模糊,于是就找别人的设计作参考,按着设计要求一步一步的设计。
需求分析真的很重要,也不容易,比编程还难。
在需求设计阶段,把系统的功能勾画出来,分析系统的数据字典、数据流向,画出E-R图,根据E-R图数据库设计关系模型,这样一步步下来,自己对仓库管理系统有了更多的了解,对后面的程序编程也明朗了。
在数据库设计的时候也花了不少的时间,多次的在数据库关系模型、E-R图和数据字典之间循环修改,重复的修改完整性定义,优化表格。
在定义check完整时发现SQL的check完整性定义失败,翻书发现原来SQL对check的完整性定义还没有强化。
等数据关系模型最终确定了,才开始设计索引和触发子。
之后的编程就简单多了。
在数据库设计期间,我是在设计的过程中就去创建数据库,建表,所以当修改完整性定义和数据项时显得相当麻烦,因为有主键外键的完整性定义在修改时就不好做了。
最终结论,我该把数据库设计完后才去创建数据库创建完整性定义等等,还有一点是创建表时最好也把后面程序功能的需要考虑进来。
在这次数据库程序设计中真的学到不少。