数据库系统大作业之仓库管理系统.docx
《数据库系统大作业之仓库管理系统.docx》由会员分享,可在线阅读,更多相关《数据库系统大作业之仓库管理系统.docx(28页珍藏版)》请在冰豆网上搜索。
数据库系统大作业之仓库管理系统
数据库系统大作业
仓库管理系统
一、需求分析
1、引言
进行数据库设计首先必须准确了解也分析用户需求(包括数据和处理)。
目的是为仓库管理数据库系统的设计打下牢牢的基础,是数据库开发的重要文件依据,主要为数据库设计人员使用,是用户和系统分析员的项目依据文件。
作为“地基”的需求分析是否做得充分与准确,它决定了在其上构建数据库大厦的速度和质量。
需求分析做得不好,甚至会导致整个数据库设计返工重做。
在企业中,货品管理是一项非常重要的工作。
使用人工式管理各项货品信息不仅效率低下,而且容易出错,安全性很差。
并且在实际操作中,数据的查找和维护都不容易实现,容易发生差错,导致管理费用的增加,服务质量难以得到保证,从而影响企业的竞争力。
这里设计的仓库管理系统,就是针对这些问题而设计的。
其目的在于实现仓库货品信息管理和出入库记录及信息检索,是操作简单安全,从而提高工作效率和质量。
本系统的开发是设计一个仓库管理管理系统(数据库系统)。
2、用户需求
本系统是针对企业仓库的货品信息和出入库记录进行管理,仓库管理系统的核心在于新货入库、货品出库和货品库存三者,因此仓库管理系统的用户包括仓库管理员和系统管理员。
仓库管理系统主要完成货品仓库的库存管理,主要包括仓库管理人员信息、货品分类、货品入库、出库、库存、货品归还6个模块。
它们实现的具体功能如下:
●仓库管理员信息模块的管理:
系统管理员负责对仓库管理人员的各种基本信息进行添加、查看、修改、删除和搜索等操作,企业可以进行查看仓库管理人员借贷记录的操作。
●货品分类模块的管理:
系统管理员负责对货品分类进行添加、修改、删除等操作,此模块可以无限级添加货品的类型。
●货品入库模块的管理:
系统管理员负责多货品资料进行添加、修改、删除等操作,仓库管理员可以查询货品信息,查看货品详细信息、借用记录等。
●货品出库模块的管理:
系统管理员负责货品出库信息的管理,仓库管理员可以查看货品详细信息,已及进行货品搜索操作。
●货品归还模块的管理:
系统管理员负责货品归还信息的处理,仓库管理员以及企业可以查看取货人信息,查看批准人信息,也可以查看货品详细信息,和进行搜索货品归还的操作。
●库存模块的管理:
系统管理员负责对库存信息进行添加、修改、删除等操作,仓库管理员可以查看库存情况,同时还具有入库出库货品等功能。
以上是用户对系统的基本的功能要求,此外用户还要求系统的效率要高,查询速度要快,比较小的冗余,易维护,具有较高的数据安全性。
3、划分功能模块
根据系统功能的需求分析和企业仓库管理的特点,经过模块化的分析得到如下所示的系统功能模块结构图。
4、数据字典
1)数据项
数据字典是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果,数据字典是对系统所用到的所有表结构的描述,仓库管理的主要数据见下表。
①仓库管理员信息表:
序号
字段
别名
数据类型
数据长度
码
1
Id
仓管员工号
int
4
Y
2
P-name
仓管员姓名
varchar
20
N
3
P-tel
仓管员电话
varchar
30
N
4
P-netnum
仓管员虚拟网号
varchar
50
N
5
P-officetel
仓管员办公室电话
varchar
50
N
6
P-content
仓管员备注信息
varchar
16
N
7
nowdata
添加仓管员的年月日
date
8
N
8
nowtime
添加仓管员的时分秒
varchar
10
N
②货品分类表:
序号
字段
别名
数据类型
数据长度
码
1
ID
货品分类表标识
int
4
Y
2
BigClassID
货品分类级别
varchar
50
N
3
BigClassNmae
货品分类名称
varchar
50
N
③货品入库表:
序号
字段
别名
数据类型
数据长度
码
1
Id
货品入库表标识
int
4
Y
2
Shop-name
货品名称
varchar
50
N
3
Shop-type
货品型号
varchar
50
N
4
Shop-num
货品入库数量
int
4
N
5
Shop-nums
货品库存数量
int
4
N
6
Shop-time
货品入库时间
Date
8
N
7
Shop-price
货品购入单价
varchar
50
N
8
Shop-unit
货品单位
varchar
50
N
9
Shop-ib
货品所属类别
varchar
50
N
10
Shop-content
货品备注信息
varchar
16
N
11
nowdata
新货入库时的年月日
Date
8
N
12
nowtime
新货入库时的时分秒
varchar
10
N
④货品出库表:
序号
字段
别名
数据类型
数据长度
码
1
Id
货品出库表标识
Int
4
Y
2
Shop-id
货品类别标识
varchar
50
N
3
Go-person
取货人名称
varchar
50
N
4
Goshop-num
货品出库数量
int
4
N
5
Go-time
货品出库时间
int
4
N
6
Sure-person
货品批准人姓名
date
8
N
7
Shop-return
标识货品是否需要归还
varchar
50
N
8
Return-num
已归还数量
varchar
50
N
9
nowdata
新货入库时的年月日
date
8
N
10
nowtime
新货入库时的时分秒
varchar
10
N
2)数据结构
数据结构反映了数据之间的组合关系。
一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或若干个数据项和数据结构混合组成。
经过数据项和用户需求的分析,我对本系统一共分了6个组,具体如下表所示:
数据结构名
含义说明
组成部分
仓库管理员信息管理
描述仓库管理员的基本信息
仓库管理员信息表标识+仓管员姓名+联系电话+虚拟网号+办公室电话+备注信息
货品分类管理
描述货品分类的基本信息
货品分类表标识+分类级别+分类名称
货品入库管理
描述货品名称、货品型号、入库数量、入库时间、货品单位等信息
货品入库表标识+货品名称+货品型号+入库数量+库存数量+入库时间+购入单价+货品单位+货品所属类型+备注信息
货品出库管理
描述取货人姓名、批准人姓名、出库数量、出库日期、货品标识号等信息
货品出库表标识+货品类别标识+取货人名称+出库数量+出库时间+批准人姓名
货品归还管理
描述货品归还的信息
归还时间+归还货品+领用人信息+批准人信息+已归还数量
库存管理
描述货品的出入库、库存和详细信息
货品库存+货品详细信息+货品入库+货品出库
3)数据流
数据流是数据结构在系统内传输的路径。
通过对用户的需求分析,以及数据项和数据流的设计,得出了相应的数据流描述如下表所示:
①数据流定义表
编号
数据流名
组成
流量
备注
01
仓管员信息
仓库管理员信息表标识+仓管员姓名+联系电话+虚拟网号+办公室电话+备注信息
一般
仓管员基本信息
02
货品分类信息
货品分类表标识+分类级别+分类名称
一般
货品分类基本信息
03
货品入库信息
货品入库表标识+货品名称+货品型号+入库数量+库存数量+入库时间+购入单价+货品单位+货品所属类型+备注信息
大
货品详细信息
04
货品出库信息
货品出库表标识+货品类别标识+取货人名称+出库数量+出库时间+批准人姓名
大
货品详细信息
05
货品归还信息
归还时间+归还货品+领用人信息+批准人信息+已归还数量
大
货品详细信息
06
库存信息
货品库存+货品详细信息+货品入库+货品出库
大
货品详细信息
07
查询结果
货品分类信息+货品入库信息+货品出库信息+货品归还信息
大
各种信息
08
统计分析
货品分类信息+货品入库信息+货品出库信息+货品归还信息
大
各种信息
②外部项定义表
编号
名称
输入数据流
输出数据流
备注
1
系统管理员
01
主要用于录入仓管员信息
2
仓管员
07
主要用于仓管员查询货品信息
3
仓管员
02/03/04/05
主要用于仓管员更新货品信息
4
经理
06/07
主要用于输出查询和统计信息的结果
4)数据储存
数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。
经过数据项、数据结构和数据流的设计,本系统一共选用了三个数据存储,具体对数据存储的描述通常如下表所示:
编号
数据存储名
输入数据流
输出数据流
数据量
存取方式
A1
仓管员相关信息
01
一般
批处理、顺序检索
A2
货品相关信息
02/03/04/05
06
大
批处理、更新、顺序检索
A3
货品库存
07/08
大
批处理、更新、顺序检索
5)处理过程
处理过程的具体处理逻辑一般用判定表或判定树来描述。
对于本系统用于仓库管理一共设计了四种处理方法,具体处理方式如下表所示:
编号
名称
输入数据流
输出数据流
备注
B1
插入修改
01,02,03,04,05
01,02,03,04,05
插入仓管员信息和货品信息
B2
更新修改
01,02,03,04,05
01,02,03,04,05
更新仓管员信息和货品信息
B3
删除修改
01,02,03,04,05
01,02,03,04,05
删除仓管员信息和货品信息
B4
统计分析
07,08
07,08
统计学生信息和成绩
二、概念结构设计
概念结构设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成独立于具体DBMS的概念模型。
1、数据流图
数据流图表达了数据和处理的关系,根据用户的需求分析和仓库管理系统的需求,得出如下图1-1所示的仓库管理数据流图。
修改仓管员信息
搜索仓管员
删除借贷记录
查看货品信息
货品出库
货品归还
图1—1仓库管理系统数据流图
2、系统E—R图
根据上面设计规划得出的实体有仓管员信息实体、入库实体、出库实体、库存实体、归还实体。
各个实体的E—R图及其关系描述如下:
图仓管员信息实体E—R图
图入库实体E—R图
图出库实体E—R图
图归还实体E—R图
图库存实体E—R图
实体与实体间的关系E—R图如下所示:
图实体间的E—R关系图
图仓库管理系统E—R图
三、逻辑结构设计
逻辑结构设计就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。
设计逻辑结构一般分为3步进行:
(1)将概念结构转换为一般的关系、网状、层次模型;
(2)将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型换;
(3)对数据模型进行优化。
1、关系模型
将E-R图转换为关系模型实际上就是要奖实体型、实体的属性和实体型之间的联系转换为关系模式,这种转换一般遵循如下原则:
一个实体型转换为一个关系模式。
实体的属性就是关系的属性,实体的码就是关系的码。
对于实体型间的联系则有以下不同的情况:
(1)一个1:
1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
如果转换为一个独立的关系模式,则与该联系相连的个实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的侯选码。
如果与某一端实体对应的关系模式合并,则需要在关系模式的属性中加入另一个关系模式的码和联系本身的属性。
(2)一个1:
n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。
如果转换为一个独立的关系模式,则与该联系相连的个各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
(3)一个m:
n联系转换为一个关系模式。
与该联系相连的个实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。
(4)3个或3个以上实体间的一个多元联系可以转换为一个关系模式。
与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。
(5)具有相同码的关系模式可合并。
将概念结构设计阶段设计好的基本E-R图转换为关系模型,如下所示:
◆仓管员(信息表标识,姓名,联系电话,虚拟网号,办公室电话),此为仓管员实体对应的关系模式。
◆入库(入库表标识,货品名称,货品型号,入库数量,库存数量,入库时间,购入单价,货品单位,货品所属类型),此为入库实体对应的关系模式。
◆出库(出库表标识,货品类别标识,取货人名称,出库数量,出库时间,批准人姓名),此为出库实体对应的关系模式。
◆归还(归还时间,归还货品,领用人信息,批准人信息,已归还数量),此为归还实体对应的关系模式。
◆库存(货品库存,货品详细信息,货品入库,货品出库),此为库存实体对应的关系模式。
四、物理结构设计与功能实现
1、物理结构设计
数据库的物理设计就是为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程。
物理结构设计阶段实现的是数据库系统的内模式,它的质量直接决定了整个系统的性能。
因此在确定数据库的存储结构和存取方法之前,对数据库系统所支持的事务要进行仔细分析,获得优化数据库物理设计的参数
数据库的物理设计通常分为两步:
(1)确定数据库的物理结构,在关系数据库中主要指存取方法和存取结构;
(2)对物理结构进行评价,评价的重点是时间和空间效率。
1.1确定数据库的存储结构
由于本系统的数据库建立不是很大,所以数据存储采用的是一个磁盘的一个分区。
1.2存取方法和优化方法
存取方法是快速存取数据库中数据的技术。
数据库管理系统一般都是提供多种存取方法。
常用的存取方法有三类。
第一类是索引方法,目前主要是B+树索引方法;第二类是聚簇方法;第三类是HASH方法。
数据库的索引类似书的目录。
在书中,目录允许用户不必浏览全书就能迅速地找到所需要的位置。
在数据库中,索引也允许应用程序迅速找到表中的数据,而不必扫描整个数据库。
在书中,目录就是内容和相应页号的清单。
在数据库中,索引就是表中数据和相应存储位置的列表。
使用索引可以大大减少数据的查询时间。
但需要注意的是索引虽然能加速查询的速度,但是为数据库中的每张表都设置大量的索引并不是一个明智的做法。
这是因为增加索引也有其不利的一面:
首先,每个索引都将占用一定的存储空间,如果建立聚簇索引(会改变数据物理存储位置的一种索引),占用需要的空间就会更大;其次,当对表中的数据进行增加、删除和修改的时候,索引也要动态地维护,这样就降低了数据的更新速度。
2、功能实现
完成数据库的物理设计之后,设计人员就要用RDBMS提供的数据定义语言和其他实用程序将数据库逻辑设计和物理设计结果严格描述出来,成为DBMS可以接受的源代码,再经过调试产生目标模式。
然后就可以组织数据入库,最后就在此基础上编写各个表相关的创建、插入、删除和更新过程。
1)创建过程:
创建仓管员信息表:
CREATETABLECANGGUANYUAN(IDCHAR(4)NOTNULLPRIMARYKEY,
P_NAMEVARCHAR2(20),
P_TELVARCHAR2(30),
P_NETNUMVARCHAR2(50),
P_OFFICETELVARCHAR2(50),
P_CONTENTVARCHAR2(16),
NOWDATADATE,
NOWTIMEDATE);
创建货品分类信息表:
CREATETABLEHUOPINFEILEI(IDCHAR(4)NOTNULLPRIMARYKEY,
BIGCLASSIDVARCHAR2(50),
BIGCLASSNAMEVARCHAR2(50));
创建货品入库信息表:
CREATETABLEHUOPINRUKU(IDCHAR(4)NOTNULLPRIMARYKEY,
SHOP_NAMEVARCHAR2(50),
SHOP_TYPEVARCHAR2(50),
SHOP_NUMINT,
SHOP_NUMSINT,
SHOP_TIMEDATE,
SHOP_PRICEVARCHAR2(50),
SHOP_UNITVARCHAR2(50),
SHOP_IBVARCHAR2(50),
SHOP_CONTENTVARCHAR2(16),
NOWDATEDATE,
NOWTIMEDATE);
创建货品出库信息表:
CREATETABLEHUOPINCHUKU(IDCHAR(4)NOTNULLPRIMARYKEY,
SHOP_IDVARCHAR2(50),
GO_PERSONVARCHAR2(50),
GOSHOP_NUMINT,
GO_TIMEDATE,
SURE_PERSONVARCHAR2(50),
SHOP_RETURNVARCHAR2(50),
RETURN_NUMINT,
NOWDATEDATE,
NOWTIMEDATE);
2)数据插入:
插入仓管员信息:
INSERTINTOCANGGUANYUAN(ID,P_NAME,P_TEL,P_NETNUM,P_OFFICETEL,P_CONTENT)VALUES(1,'王红',,0001,8290311,'经理');
INSERTINTOCANGGUANYUAN(ID,P_NAME,P_TEL,P_NETNUM,P_OFFICETEL,P_CONTENT)VALUES(2,'高云',,0002,8290312,'职员');
插入货品分类信息:
INSERTINTOHUOPINFENLEIVALUES(001,’一级’,’晶体管’);
INSERTINTOHUOPINFENLEIVALUES(002,’一级’,’显示器’);
插入货品入库信息:
INSERTINTO
HUOPINRUKU(ID,SHOP_NAME,SHOP_TYPE,SHOP_NUM,SHOP_NUMS,SHOP_PRICE,SHOP_UNIT,SHOP_IB,SHOP_CONTENT)
VALUES(0001,’康师傅方便面’,’FBM’,548,4568,1.8,’包’,’FBM’,’已入库’);
INSERTINTO
HUOPINRUKU(ID,SHOP_NAME,SHOP_TYPE,SHOP_NUM,SHOP_NUMS,SHOP_PRICE,SHOP_UNIT,SHOP_IB,SHOP_CONTENT)
VALUES(002,’统一方便面’,’FBM’,648,8510,1.7,’包’,’FBM’,’已入库’);
插入货品出库信息:
INSERTINTO
HUOPINCHUKU(ID,SHOP_ID,GO_PERSON,GOSHOP_NUM,SURE_PERSON,SHOP_RETURN,RETURN_NUM)VALUES(001,’一级’,’王红’,430,’夏云’,’否’,0);
INSERTINTO
HUOPINCHUKU(ID,SHOP_ID,GO_PERSON,GOSHOP_NUM,SURE_PERSON,SHOP_RETURN,RETURN_NUM)VALUES(001,’一级’,’王红’,530,’夏云’,’是’,530);
3)数据删除:
删除仓管员信息:
DELETEFROMCANGGUANYUANWHERE//输入要删除的条件
删除货品分类信息:
DELETEFROMHUOPINFEILEIWHERE//输入要删除的条件
删除货品入库信息:
DELETEFROMHUOPINRUKUWHERE//输入要删除的条件
删除货品出库信息:
DELETEFROMHUOPINCHUKUWHERE//输入要删除的条件
4)数据更新:
更新仓管员信息:
UPDATECANGGUANYUANSET//更新符合条件的记录
更新货品分类信息:
UPDATEHUOPINFEILEISET//更新符合条件的记录
更新货品入库信息:
UPDATEHUOPINRUKUSET//更新符合条件的记录
更新货品出库信息:
UPDATEHUOPINCHUKUSET//更新符合条件的记录
3数据库的实施和维护
完成数据库的物理设计之后,设计人员就要用RDBMS提供的数据定义语言和其他实用程序将数据库逻辑设计和物理设计结果严格描述出来,成为DBMS可以接受的源代码,再经过调试产生目标模式。
然后就可以组织数据入库了,这就是数据库实施阶段。
3.1数据库的实施
数据库的实施主要是根据逻辑结构设计和物理结构设计的结果,在计算机系统上建立实际的数据库结构、导入数据并进行程序的调试。
它相当于软件工程中的代码编写和程序调试的阶段。
当在PowerDesignerTrial11中设计好本系统的物理结构之后,就可以向数据库转换为相应的表。
先选择菜单栏中Database的Connect,通过添加数据源,连接数据源,输入用户名和密码进行转换,生成相关的SQL语句,在通过运行之后,最终在SQLServer2000中生成了如下所示的表。
仓管员信息表:
货品分类信息表:
货品入库信息表:
货品出库信息表:
3.2数据的载入
数据库实施阶段包括两项重要的工作,一项是数据的载入,另一项是应用程序的编码和调试。
由于本次课程设计没有进行应用程序的开发,因此对于后一项工作在这里就不做描述了。
具体输入的一部分数据如下图所示:
输入仓管员信息:
输入货品分类信息:
输入货品入库信息:
输入货品出库信息:
4数据库的试运行
4.1通过SQL语句进行简单测试
当一小部分数据输入数据库后,就可以开始对数据库系统进行联合调试,这一阶段要实际运行数据库应用程序,执行对数据库的各种操作,由于没有应用程序,所以只有通过SQL语言直接在数据库中执行对数据库的各种操作。
通过在SQLServer2000的查询分析器中输入相应的SQL语句,就可以得到相应的结果,具体如下所示:
1)查询仓管员信息:
输入SQL语句:
SELECT*FROMCANGGUANYUAN;
执行结果:
2)插入货品入库信息:
输入SQL语句:
INSERTINTO
HUOPINRUKU(ID,SHOP_NAME,