数据库系统大作业
仓库管理系统
一、需求分析
1、引言
进行数据库设计首先必须准确了解也分析用户需求(包括数据和处理)。目的是为仓库管理数据库系统的设计打下牢牢的基础,是数据库开发的重要文件依据,主要为数据库设计人员使用,是用户和系统分析员的项目依据文件。作为“地基”的需求分析是否做得充分与准确,它决定了在其上构建数据库大厦的速度和质量。需求分析做得不好,甚至会导致整个数据库设计返工重做。
在企业中,货品管理是一项非常重要的工作。使用人工式管理各项货品信息不仅效率低下,而且容易出错,安全性很差。并且在实际操作中,数据的查找和维护都不容易实现,容易发生差错,导致管理费用的增加,服务质量难以得到保证,从而影响企业的竞争力。这里设计的仓库管理系统,就是针对这些问题而设计的。其目的在于实现仓库货品信息管理和出入库记录及信息检索,是操作简单安全,从而提高工作效率和质量。
本系统的开发是设计一个仓库管理管理系统(数据库系统)。
2、用户需求
本系统是针对企业仓库的货品信息和出入库记录进行管理,仓库管理系统的核心在于新货入库、货品出库和货品库存三者,因此仓库管理系统的用户包括仓库管理员和系统管理员。仓库管理系统主要完成货品仓库的库存管理,主要包括仓库管理人员信息、货品分类、货品入库、出库、库存、货品归还6个模块。
它们实现的具体功能如下:
●仓库管理员信息模块的管理:
系统管理员负责对仓库管理人员的各种基本信息进行添加、查看、修
改、删除和搜索等操作,企业可以进行查看仓库管理人员借贷记录的
操作。
●货品分类模块的管理:
系统管理员负责对货品分类进行添加、修改、删除等操作,此模块可以
无限级添加货品的类型。
●货品入库模块的管理:
系统管理员负责多货品资料进行添加、修改、删除等操作,仓库管理员
可以查询货品信息,查看货品详细信息、借用记录等。
●货品出库模块的管理:
系统管理员负责货品出库信息的管理,仓库管理员可以查看货品详细信
息,已及进行货品搜索操作。
●货品归还模块的管理:
系统管理员负责货品归还信息的处理,仓库管理员以及企业可以查看取
货人信息,查看批准人信息,也可以查看货品详细信息,和进行搜索
货品归还的操作。
库存模块的管理:
系统管理员负责对库存信息进行添加、修改、删除等操作,仓库管理员
可以查看库存情况,同时还具有入库出库货品等功能。
以上是用户对系统的基本的功能要求,此外用户还要求系统的效率要高,查询速度要快,比较小的冗余,易维护,具有较高的数据安全性。3、划分功能模块
根据系统功能的需求分析和企业仓库管理的特点,经过模块化的分析得到如下所示的系统功能模块结构图。
4、数据字典
1)数据项
数据字典是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果,数据字典是对系统所用到的所有表结构的描述,仓库管理的主要数据见下表。
①仓库管理员信息表:
④货品出库表:
2)数据结构
数据结构反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或若干个数据项和数据结构混合组成。经过
3)数据流
数据流是数据结构在系统内传输的路径。通过对用户的需求分析,以及数据项和数据流的设计,得出了相应的数据流描述如下表所示:
①数据流定义表
数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。经过数据项、数据结构和数据流的设计,本系统一共选用了三个数据存储,具体对
5)处理过程
处理过程的具体处理逻辑一般用判定表或判定树来描述。对于本系统用于仓库管理一共设计了四种处理方法,具体处理方式如下表所示:
二、概念结构设计
概念结构设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成独立于具体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)创建过程:
创建仓管员信息表:
CREATE TABLE CANGGUANYUAN(ID CHAR(4) NOT NULL PRIMARY KEY,
P_NAME VARCHAR2(20),
P_TEL VARCHAR2(30),
P_NETNUM VARCHAR2(50),
P_OFFICETEL VARCHAR2(50),
P_CONTENT VARCHAR2(16),
NOWDATA DATE,
NOWTIME DATE);
创建货品分类信息表:
CREATE TABLE HUOPINFEILEI(ID CHAR(4) NOT NULL PRIMARY KEY,
BIGCLASSID VARCHAR2(50),
BIGCLASSNAME VARCHAR2(50));
创建货品入库信息表:
CREATE TABLE HUOPINRUKU(ID CHAR(4) NOT NULL PRIMARY KEY,
SHOP_NAME VARCHAR2(50),
SHOP_TYPE VARCHAR2(50),
SHOP_NUM INT,
SHOP_NUMS INT,
SHOP_TIME DATE,
SHOP_PRICE VARCHAR2(50),
SHOP_UNIT VARCHAR2(50),
SHOP_IB VARCHAR2(50),
SHOP_CONTENT VARCHAR2(16),
NOWDATE DATE,
NOWTIME DATE);
创建货品出库信息表:
CREATE TABLE HUOPINCHUKU(ID CHAR(4) NOT NULL PRIMARY KEY,
SHOP_ID VARCHAR2(50),
GO_PERSON VARCHAR2(50),
GOSHOP_NUM INT,
GO_TIME DATE,
SURE_PERSON VARCHAR2(50),
SHOP_RETURN VARCHAR2(50),
RETURN_NUM INT,
NOWDATE DATE,
NOWTIME DATE);
2)数据插入:
插入仓管员信息:
INSERT INTO CANGGUANYUAN(ID,P_NAME,P_TEL,P_NETNUM,P_OFFICETEL,P_CONTENT) VALUES(1,'王红',137********,0001,8290311,'经理');
INSERT INTO CANGGUANYUAN(ID,P_NAME,P_TEL,P_NETNUM,P_OFFICETEL,P_CONTENT) VALUES(2,'高云',137********,0002,8290312,'职员');
插入货品分类信息:
INSERT INTO HUOPINFENLEI VALUES(001,’一级’,’晶体管’);
INSERT INTO HUOPINFENLEI VALUES(002,’一级’,’显示器’);
插入货品入库信息:
INSERT INTO
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’,’已入库’);
INSERT INTO
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’,’已入库’);
插入货品出库信息:
INSERT INTO
HUOPINCHUKU(ID,SHOP_ID, GO_PERSON, GOSHOP_NUM, SURE_PERSON,
SHOP_RETURN, RETURN_NUM) VALUES(001,’一级’,’王红’,430,’夏云’,’否’,0); INSERT INTO
HUOPINCHUKU(ID,SHOP_ID, GO_PERSON, GOSHOP_NUM, SURE_PERSON,
SHOP_RETURN, RETURN_NUM) VALUES(001,’一级’,’王红’,530,’夏云’,’
是’,530);
3)数据删除:
删除仓管员信息:
DELETE FROM CANGGUANYUAN WHERE //输入要删除的条件
删除货品分类信息:
DELETE FROM HUOPINFEILEI WHERE //输入要删除的条件
删除货品入库信息:
DELETE FROM HUOPINRUKU WHERE//输入要删除的条件
删除货品出库信息:
DELETE FROM HUOPINCHUKU WHERE//输入要删除的条件
4)数据更新:
更新仓管员信息:
UPDATE CANGGUANYUAN SET //更新符合条件的记录
更新货品分类信息:
UPDATE HUOPINFEILEI SET //更新符合条件的记录
更新货品入库信息:
UPDATE HUOPINRUKU SET //更新符合条件的记录
更新货品出库信息:
UPDATE HUOPINCHUKU SET //更新符合条件的记录
3 数据库的实施和维护
完成数据库的物理设计之后,设计人员就要用RDBMS提供的数据定义语言和其他实用程序将数据库逻辑设计和物理设计结果严格描述出来,成为DBMS 可以接受的源代码,再经过调试产生目标模式。然后就可以组织数据入库了,这就是数据库实施阶段。
3.1数据库的实施
数据库的实施主要是根据逻辑结构设计和物理结构设计的结果,在计算机系统上建立实际的数据库结构、导入数据并进行程序的调试。它相当于软件工程中的代码编写和程序调试的阶段。
当在PowerDesigner Trial 11中设计好本系统的物理结构之后,就可以向数
据库转换为相应的表。先选择菜单栏中Database的Connect,通过添加数据源,连接数据源,输入用户名和密码进行转换,生成相关的SQL语句,在通过运行之后,最终在SQL Server 2000中生成了如下所示的表。
仓管员信息表:
货品分类信息表:
货品入库信息表:
货品出库信息表:
3.2 数据的载入
数据库实施阶段包括两项重要的工作,一项是数据的载入,另一项是应用程序的编码和调试。由于本次课程设计没有进行应用程序的开发,因此对于后一项工作在这里就不做描述了。具体输入的一部分数据如下图所示:
输入仓管员信息:
输入货品分类信息:
输入货品入库信息:
输入货品出库信息:
4数据库的试运行
4.1通过SQL语句进行简单测试
当一小部分数据输入数据库后,就可以开始对数据库系统进行联合调试,这一阶段要实际运行数据库应用程序,执行对数据库的各种操作,由于没有应用程
序,所以只有通过SQL语言直接在数据库中执行对数据库的各种操作。
通过在SQL Server 2000的查询分析器中输入相应的SQL语句,就可以得到
相应的结果,具体如下所示:
1)查询仓管员信息:
输入SQL语句:SELECT * FROM CANGGUANYUAN;
执行结果:
2)插入货品入库信息:
输入SQL语句:INSERT INTO
HUOPINRUKU(ID, SHOP_NAME, SHOP_TYPE, SHOP_NUM,
SHOP_NUMS, SHOP_PRICE, SHOP_UNIT)
VALUES(003,’今麦郎方便面’,’FBM’,7378,2435,1.9,’包’);
执行结果:
3)删除货品分类信息:
输入SQL语句:DELETE FROM HUOPINFEILEI
WHERE ID=001;
执行结果:
原图为:
删除后为:
4)更新货品出库信息: