1、(完整word版)数据库系统大作业之仓库管理系统数据库系统大作业仓库管理系统一、需求分析1、引言进行数据库设计首先必须准确了解也分析用户需求(包括数据和处理)。目的是为仓库管理数据库系统的设计打下牢牢的基础,是数据库开发的重要文件依据,主要为数据库设计人员使用,是用户和系统分析员的项目依据文件。作为“地基”的需求分析是否做得充分与准确,它决定了在其上构建数据库大厦的速度和质量。需求分析做得不好,甚至会导致整个数据库设计返工重做。在企业中,货品管理是一项非常重要的工作。使用人工式管理各项货品信息不仅效率低下,而且容易出错,安全性很差。并且在实际操作中,数据的查找和维护都不容易实现,容易发生差错,
2、导致管理费用的增加,服务质量难以得到保证,从而影响企业的竞争力。这里设计的仓库管理系统,就是针对这些问题而设计的。其目的在于实现仓库货品信息管理和出入库记录及信息检索,是操作简单安全,从而提高工作效率和质量。本系统的开发是设计一个仓库管理管理系统(数据库系统)。2、用户需求本系统是针对企业仓库的货品信息和出入库记录进行管理,仓库管理系统的核心在于新货入库、货品出库和货品库存三者,因此仓库管理系统的用户包括仓库管理员和系统管理员。仓库管理系统主要完成货品仓库的库存管理,主要包括仓库管理人员信息、货品分类、货品入库、出库、库存、货品归还6个模块。它们实现的具体功能如下:l 仓库管理员信息模块的管理
3、:系统管理员负责对仓库管理人员的各种基本信息进行添加、查看、修改、删除和搜索等操作,企业可以进行查看仓库管理人员借贷记录的操作。l 货品分类模块的管理:系统管理员负责对货品分类进行添加、修改、删除等操作,此模块可以无限级添加货品的类型。l 货品入库模块的管理:系统管理员负责多货品资料进行添加、修改、删除等操作,仓库管理员可以查询货品信息,查看货品详细信息、借用记录等。l 货品出库模块的管理:系统管理员负责货品出库信息的管理,仓库管理员可以查看货品详细信息,已及进行货品搜索操作。l 货品归还模块的管理:系统管理员负责货品归还信息的处理,仓库管理员以及企业可以查看取货人信息,查看批准人信息,也可以
4、查看货品详细信息,和进行 搜索货品归还的操作。l 库存模块的管理:系统管理员负责对库存信息进行添加、修改、删除等操作,仓库管理员可以查看库存情况,同时还具有入库出库货品等功能。以上是用户对系统的基本的功能要求,此外用户还要求系统的效率要高,查询速度要快,比较小的冗余,易维护,具有较高的数据安全性。3、划分功能模块根据系统功能的需求分析和企业仓库管理的特点,经过模块化的分析得到如下所示的系统功能模块结构图。仓库管理系统仓库管理员管理库存管理货品分类管理货品归还管理货品查询统计删除仓管员信息修改仓管员信息添加仓管员信息删除货品分类修改货品分类添加货品分类归还货品查看货品详细记录删除货品信息修改货品
5、信息货品出口信息货品入库信息货品入库查看货品库存货品出库4、数据字典1)数据项数据字典是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果,数据字典是对系统所用到的所有表结构的描述,仓库管理的主要数据见下表。仓库管理员信息表:序号字段别名数据类型数据长度码1Id仓管员工号int4Y2P-name仓管员姓名varchar20N3 P-tel仓管员电话varchar30N4P-netnum仓管员虚拟网号varchar50N5P-officetel仓管员办公室电话varchar50N6P-content仓管员备注信息varchar16N7nowdata添加仓管员的年月日date
6、8N8nowtime添加仓管员的时分秒varchar10N货品分类表:序号字段别名数据类型数据长度码1ID货品分类表标识int4Y2BigClassID货品分类级别varchar50N3BigClassNmae货品分类名称varchar50N货品入库表:序号字段别名数据类型数据长度码1Id货品入库表标识int4Y2Shop-name货品名称varchar50N3Shop-type货品型号varchar50N4Shop-num货品入库数量int4N5Shop-nums货品库存数量int4N6Shop-time货品入库时间Date8N7Shop-price货品购入单价varchar50N8Shop
7、-unit货品单位varchar50N9Shop-ib货品所属类别varchar50N10Shop-content货品备注信息varchar16N11nowdata新货入库时的年月日Date8N12nowtime新货入库时的时分秒varchar10N货品出库表:序号字段别名数据类型数据长度码1Id货品出库表标识Int4Y2Shop-id货品类别标识varchar50N3Go-person取货人名称varchar50N4Goshop-num货品出库数量int4N5Go-time货品出库时间int4N6Sure-person货品批准人姓名date8N7Shop-return标识货品是否需要归还va
8、rchar50N8Return-num已归还数量varchar50N9nowdata新货入库时的年月日date8N10nowtime新货入库时的时分秒varchar10N2)数据结构数据结构反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或若干个数据项和数据结构混合组成。经过数据项和用户需求的分析,我对本系统一共分了6个组,具体如下表所示:数据结构名含义说明组成部分仓库管理员信息管理描述仓库管理员的基本信息仓库管理员信息表标识+仓管员姓名+联系电话+虚拟网号+办公室电话+备注信息货品分类管理描述货品分类的基本信息货品分类表标识+分类级别+分类名称货品入
9、库管理描述货品名称、货品型号、入库数量、入库时间、货品单位等信息货品入库表标识+货品名称+货品型号+入库数量+库存数量+入库时间+购入单价+货品单位+货品所属类型+备注信息货品出库管理描述取货人姓名、批准人姓名、出库数量、出库日期、货品标识号等信息货品出库表标识+货品类别标识+取货人名称+出库数量+出库时间+批准人姓名货品归还管理描述货品归还的信息归还时间+归还货品+领用人信息+批准人信息+已归还数量库存管理描述货品的出入库、库存和详细信息货品库存+货品详细信息+货品入库+货品出库3)数据流数据流是数据结构在系统内传输的路径。通过对用户的需求分析,以及数据项和数据流的设计,得出了相应的数据流描
10、述如下表所示:数据流定义表编号数据流名组成流量备注01仓管员信息仓库管理员信息表标识+仓管员姓名+联系电话+虚拟网号+办公室电话+备注信息一般仓管员基本信息02货品分类信息货品分类表标识+分类级别+分类名称一般货品分类基本信息03货品入库信息货品入库表标识+货品名称+货品型号+入库数量+库存数量+入库时间+购入单价+货品单位+货品所属类型+备注信息大货品详细信息04货品出库信息货品出库表标识+货品类别标识+取货人名称+出库数量+出库时间+批准人姓名大货品详细信息05货品归还信息归还时间+归还货品+领用人信息+批准人信息+已归还数量大货品详细信息06库存信息货品库存+货品详细信息+货品入库+货品
11、出库大货品详细信息07查询结果货品分类信息+货品入库信息+货品出库信息+货品归还信息大各种信息08统计分析货品分类信息+货品入库信息+货品出库信息+货品归还信息大各种信息外部项定义表编号名称输入数据流输出数据流备注1系统管理员01主要用于录入仓管员信息2仓管员07主要用于仓管员查询货品信息3仓管员02/03/04/05主要用于仓管员更新货品信息4经理06/07主要用于输出查询和统计信息的结果4)数据储存数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。经过数据项、数据结构和数据流的设计,本系统一共选用了三个数据存储,具体对数据存储的描述通常如下表所示:编号数据存储名输入数据流输出
12、数据流数据量存取方式A1仓管员相关信息01一般批处理、顺序检索A2货品相关信息02/03/04/0506大批处理、更新、顺序检索A3货品库存07/08大批处理、更新、顺序检索5)处理过程处理过程的具体处理逻辑一般用判定表或判定树来描述。对于本系统用于仓库管理一共设计了四种处理方法,具体处理方式如下表所示:编号名称输入数据流输出数据流备注B1插入修改01,02,03,04,0501,02,03,04,05插入仓管员信息和货品信息B2更新修改01,02,03,04,0501,02,03,04,05更新仓管员信息和货品信息B3删除修改01,02,03,04,0501,02,03,04,05删除仓管员
13、信息和货品信息B4统计分析07,0807,08统计学生信息和成绩 二、概念结构设计概念结构设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成独立于具体DBMS的概念模型。1、数据流图 数据流图表达了数据和处理的关系,根据用户的需求分析和仓库管理系统的需求,得出如下图1-1所示的仓库管理数据流图。修改仓管员信息搜索仓管员删除借贷记录查看货品信息货品出库货品归还管理员登录查看批准人信息查看货品信息货品搜索修改货品信息删除货品信息删除仓管员信息查看借贷记录货品清单新货入库查看仓管员删除分类修改分类添加分类仓库管理添加仓管员货品分类 图11 仓库管理系统数据流图2、系统ER图 根据
14、上面设计规划得出的实体有仓管员信息实体、入库实体、出库实体、库存实体、归还实体。各个实体的ER图及其关系描述如下:仓管员信息信息表标识姓名联系电话虚拟网号办公室电话备注图 仓管员信息实体ER图入库入库表标识货品名称货品型号入库数量入库时间购入单价货品单位货品所属类型备注信息库存数量图 入库实体ER图出库出库表标识货品类别标识取货人姓名出库数量出库时间批准人姓名备注图 出库实体ER图 归还归还时间归还货品领用人信息批准人信息已归还数量 图 归还实体ER图库存货品库存货品详细信息货品入库货品出库图 库存实体ER图实体与实体间的关系ER图如下所示:仓管员入库库存出库归还 图 实体间的ER关系图入库表
15、标识仓管员入库库存出库归还信息表标识姓名联系电话虚拟网号办公室电话备注货品名称货品型号入库数量入库时间购入单价货品单位货品所属类型备注信息库存数量出库表标识货品类别标识取货人姓名出库数量出库时间批准人姓名备注归还时间归还货品领用人信息批准人信息已归还数量货品库存货品详细信息货品入库货品出库 图 仓库管理系统ER图三、逻辑结构设计逻辑结构设计就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。设计逻辑结构一般分为3步进行:(1)将概念结构转换为一般的关系、网状、层次模型;(2)将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型换;(3)对
16、数据模型进行优化。1、关系模型将E-R图转换为关系模型实际上就是要奖实体型、实体的属性和实体型之间的联系转换为关系模式,这种转换一般遵循如下原则:一个实体型转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体型间的联系则有以下不同的情况:(1)一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的个实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的侯选码。如果与某一端实体对应的关系模式合并,则需要在关系模式的属性中加入另一个关系模式的码和联系本身的属性。(2)一个1:n联系可以转
17、换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的个各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。(3)一个m:n联系转换为一个关系模式。与该联系相连的个实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。(4)3个或3个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。(5)具有相同码的关系模式可合并。将概念结构设计阶段设计好的基本E-R图转换为关系模型,如下所示:u 仓管员(
18、信息表标识,姓名,联系电话,虚拟网号,办公室电话),此为仓管员实体对应的关系模式。u 入库(入库表标识,货品名称,货品型号,入库数量,库存数量,入库时间,购入单价,货品单位,货品所属类型),此为入库实体对应的关系模式。u 出库(出库表标识,货品类别标识,取货人名称,出库数量,出库时间,批准人姓名),此为出库实体对应的关系模式。u 归还(归还时间,归还货品,领用人信息,批准人信息,已归还数量),此为归还实体对应的关系模式。u 库存(货品库存,货品详细信息,货品入库,货品出库),此为库存实体对应的关系模式。四、物理结构设计与功能实现1、物理结构设计数据库的物理设计就是为一个给定的逻辑数据模型选取一
19、个最适合应用要求的物理结构的过程。物理结构设计阶段实现的是数据库系统的内模式,它的质量直接决定了整个系统的性能。因此在确定数据库的存储结构和存取方法之前,对数据库系统所支持的事务要进行仔细分析,获得优化数据库物理设计的参数数据库的物理设计通常分为两步:(1)确定数据库的物理结构,在关系数据库中主要指存取方法和存取结构;(2)对物理结构进行评价,评价的重点是时间和空间效率。1.1 确定数据库的存储结构由于本系统的数据库建立不是很大,所以数据存储采用的是一个磁盘的一个分区。1.2 存取方法和优化方法存取方法是快速存取数据库中数据的技术。数据库管理系统一般都是提供多种存取方法。常用的存取方法有三类。
20、第一类是索引方法,目前主要是B+树索引方法;第二类是聚簇方法;第三类是HASH方法。数据库的索引类似书的目录。在书中,目录允许用户不必浏览全书就能迅速地找到所需要的位置。在数据库中,索引也允许应用程序迅速找到表中的数据,而不必扫描整个数据库。在书中,目录就是内容和相应页号的清单。在数据库中,索引就是表中数据和相应存储位置的列表。使用索引可以大大减少数据的查询时间。但需要注意的是索引虽然能加速查询的速度,但是为数据库中的每张表都设置大量的索引并不是一个明智的做法。这是因为增加索引也有其不利的一面:首先,每个索引都将占用一定的存储空间,如果建立聚簇索引(会改变数据物理存储位置的一种索引),占用需要
21、的空间就会更大;其次,当对表中的数据进行增加、删除和修改的时候,索引也要动态地维护,这样就降低了数据的更新速度。2、功能实现完成数据库的物理设计之后,设计人员就要用RDBMS提供的数据定义语言和其他实用程序将数据库逻辑设计和物理设计结果严格描述出来,成为DBMS可以接受的源代码,再经过调试产生目标模式。然后就可以组织数据入库,最后就在此基础上编写各个表相关的创建、插入、删除和更新过程。1)创建过程:创建仓管员信息表:CREATE TABLE CANGGUANYUAN(ID CHAR(4) NOT NULL PRIMARY KEY, P_NAME VARCHAR2(20), P_TEL VARC
22、HAR2(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, SH
23、OP_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 VARCHAR
24、2(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,王红,13765821111,0001,8290311,经理);INSERT INTO CA
25、NGGUANYUAN(ID,P_NAME,P_TEL,P_NETNUM,P_OFFICETEL,P_CONTENT) VALUES(2,高云,13765821112,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_
26、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
27、, 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 /输入要删除的条件删除货品入库信息:DEL
28、ETE FROM HUOPINRUKU WHERE/输入要删除的条件删除货品出库信息:DELETE FROM HUOPINCHUKU WHERE/输入要删除的条件4)数据更新:更新仓管员信息:UPDATE CANGGUANYUAN SET /更新符合条件的记录更新货品分类信息:UPDATE HUOPINFEILEI SET /更新符合条件的记录更新货品入库信息:UPDATE HUOPINRUKU SET /更新符合条件的记录更新货品出库信息:UPDATE HUOPINCHUKU SET /更新符合条件的记录3 数据库的实施和维护完成数据库的物理设计之后,设计人员就要用RDBMS提供的数据定义语
29、言和其他实用程序将数据库逻辑设计和物理设计结果严格描述出来,成为DBMS可以接受的源代码,再经过调试产生目标模式。然后就可以组织数据入库了,这就是数据库实施阶段。31 数据库的实施数据库的实施主要是根据逻辑结构设计和物理结构设计的结果,在计算机系统上建立实际的数据库结构、导入数据并进行程序的调试。它相当于软件工程中的代码编写和程序调试的阶段。当在PowerDesigner Trial 11中设计好本系统的物理结构之后,就可以向数据库转换为相应的表。先选择菜单栏中Database的Connect,通过添加数据源,连接数据源,输入用户名和密码进行转换,生成相关的SQL语句,在通过运行之后,最终在S
30、QL Server 2000中生成了如下所示的表。仓管员信息表:货品分类信息表:货品入库信息表:货品出库信息表:3.2 数据的载入数据库实施阶段包括两项重要的工作,一项是数据的载入,另一项是应用程序的编码和调试。由于本次课程设计没有进行应用程序的开发,因此对于后一项工作在这里就不做描述了。具体输入的一部分数据如下图所示:输入仓管员信息:输入货品分类信息:输入货品入库信息:输入货品出库信息:4数据库的试运行41通过SQL语句进行简单测试当一小部分数据输入数据库后,就可以开始对数据库系统进行联合调试,这一阶段要实际运行数据库应用程序,执行对数据库的各种操作,由于没有应用程序,所以只有通过SQL语言
31、直接在数据库中执行对数据库的各种操作。通过在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语句:
32、 DELETE FROM HUOPINFEILEI WHERE ID=001;执行结果:原图为:删除后为:4)更新货品出库信息:输入SQL语句: UPDATE HUOPINCHUKU SET GO_PERSON =苏霞 WHERE ID=003;执行结果:42 数据库的运行和维护数据库试运行合格后,数据库开发工作就基本完成,即可投入正式运行了。但是,由于应用环境在不断变化,数据库运行过程中物理存储也会不断变化,对数据库设计进行评价、调整、修改等维护工作是一个长期的任务,也是设计工作的继续和提高。在数据库运行阶段,对数据库经常性的维护工作主要是由DBA完成的,包括:(1)数据库的转储和恢复DBA
33、要针对不同的应用要求制定不同的转储计划,一保证一旦发生故障能尽快将数据库恢复到某种一致的状态,并尽可能减少对数据库的破坏。(2)数据库的安全性、完整性控制DBA根据实际情况修改原有的安全性控制和数据库的完整性约束条件,以满足用户要求。(3)数据库性能的监督、分析和改造在数据库运行过程中,DBA必须监督系统运行,对监测数据进行分析,找出改进系统性能的方法。(4)数据库的重组织与重构造数据库运行一段时间后,由于记录不断增、删、改,会使数据库的物理存储情况变坏,降低了数据的存取效率,数据库性能下降,这时DBA就要对数据库进行重组织或部分重组织。在企业中,货品管理是一项非常重要的工作。使用人工式管理各项货品信息不仅效率低下,而且容易出错,安全性很差。并且在实际操作中,数据的查找和维护都不容易实现,容易发生差错,导致管理费用的增加,服务质量难以得到保证,从而影响企业的竞争力。这里设计的仓库管理系统,就是针对这些问题而设计的。其目的在于实现仓库货品信息管理和出入库记录及信息检索,是操作简单安全,从而提高工作效率和质量。