ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

仓库管理系统数据流图与数据字典:从DFD到数据库设计的完整指南

仓库管理系统数据流图与数据字典:从DFD到数据库设计的完整指南 简介面向软件工程课程设计与系统分析学习者的仓库管理系统分析文档以数据流图和数据字典为核心梳理仓库管理员、采购员、供应商、客户之间的数据传递与处理逻辑。文档包含顶层及第一层数据流图并对入库信息管理、出库信息管理、货物信息管理、客户信息管理等加工环节做了细化数据字典部分定义了订单、发货单、到货单核准、订货通知等主要数据流以及货物编号、数量、进价、售价等数据项的类型和长度便于直接用于课程设计或系统建模参考。资料包共有1个doc文件大小432KB内容集中、结构清晰适合需要快速理解仓库管理业务流程及数据组成的学习者。该资源已有812人学习下载可作为绘制数据流图、编写数据字典或完成管理信息系统作业时的对照资料。1. 仓库管理系统数据流图与数据字典它是一份能直接改造成需求规格说明的建模底稿做仓库管理系统课程设计或毕业设计时最让人头疼的不是写代码而是画数据流图和写数据字典。很多人的DFD画着画着就变成业务流程图数据流和数据字典又对不上评审老师一眼就看出是“凑出来的”。这份《仓库管理系统 数据流图 数据字典.doc》提供了一套完整的分层数据流图包含顶层图、第一层图、入库/出库/货物/客户/查询/打印细化图以及一份覆盖数据流、数据项、数据文件、数据加工的数据字典。它不是能直接运行的代码而是把仓库管理业务拆成“数据从哪来、到哪去、谁在加工”的需求底稿。适合正在做软件工程课程设计、毕业设计或想快速理清库存与订单业务边界的从业者。下载后建议当作建模蓝本照着它复用加工编号和数据定义能省掉从零梳理业务的时间。2. 先把分层数据流图读透顶层图、第一层图与六个加工的边界2.1 顶层图四个参与者和一条容易忽略的双向数据流顶层数据流图也叫0层数据流图作用是框定系统边界。这份文档里的顶层图很清晰仓库管理系统作为一个加工外部实体有仓库管理员、顾客、供应商、采购员。注意仓库管理员既接收入库信息、出库信息、货物信息、客户信息也发出货物编号、客户编号和查询请求最后再接收返回查询结果。很多人画顶层图时会漏掉“返回查询结果”这条数据流因为查询请求是从仓库管理员发出而返回结果是仓库管理系统发给仓库管理员方向正好相反。只画查询请求不画返回结果就会变成一个只有输入没有输出的加工这在DFD里是明显错误。顶层图的数据流对应关系如下外部实体输入到系统的数据流系统输出到外部实体的数据流仓库管理员查询请求货物编号、客户编号入库信息、出库信息、货物信息、客户信息、返回查询结果顾客订单发票供应商发货单订货通知采购员订货通知、到货通知订单、到货单核准这张表里的“订单”在顶层图是顾客发来的原始订单但在第一层图里会细分出“可满足的订单”和“不能满足的订单”。理解这个区别是读懂整套图的关键。2.2 第一层图六个加工和它们背后的数据存储第一层图把仓库管理系统拆成六个加工1入库信息管理、2出库信息管理、3货物信息管理、4客户信息管理、5查询、6打印。其中1和2各有一张细化图3、4、5、6相对简单但仍然有独立的输入输出。第一层数据流图里最值得注意的关系是入库管理会更新库存表、采购入库信息表、货物信息表出库管理会更新库存表、销售出库信息表货物信息管理和客户信息管理负责修改对应数据表查询加工同时访问货物信息表和客户信息表。把它们整理成加工-数据文件矩阵能快速发现有没有画漏加工编号加工名称输入数据流输出数据流涉及数据文件1入库信息管理订货通知、发货单、到货通知入库信息、订单、订货单库存表、采购入库信息表、货物信息表2出库信息管理订单、客户信息出库信息、发票、订货通知库存表、销售出库信息表、货物信息表3货物信息管理入库信息、出库信息货物信息货物信息表4客户信息管理客户信息客户信息客户信息表5查询货物编号、客户编号货物信息、客户信息货物信息表、客户信息表6打印入库信息、出库信息、货物信息、客户信息所需清单无直接数据文件2.3 数据文件与数据流的关系库存表为什么在两个加工里都出现库存表在第一层图里同时被加工1和加工2读写。加工1.5入库要修改库存表加工2.4出库也要修改库存表。这属于典型的数据文件被多个加工共享素材库里的“库存表”是一个独立数据存储不是数据流。新手最容易犯的错是把“库存表”当成加工的输出数据流。其实数据文件和加工之间只有读写关系加工要读出库存数据用于判断要写入数据用于更新余量。在DFD里画法很简单数据文件用一个开口矩形表示数据流箭头指向或离开它。入库时到货单核准作为输入数据流进入加工1.5输出数据流包括库存表、采购入库信息表和货物信息表的更新但这些表都是数据文件不是返回给外部实体的数据流。另外库存表的数据组成是“货物编号 货物品名 货物规格 货物产地 货物剩余量”它只有剩余量没有进价和售价。这和货物信息表不一样。后面设计数据库时库存表要关联货物信息表而不是把货物信息表的所有字段都复制一遍。文档里没有明确写出外键但按照数据字典的组成货物编号是仓库内所有数据文件的公共主键这就是表关联的基础。3. 把加工拆到能写代码入库、出库、查询子图的处理细节3.1 入库子图订货通知怎么一步一步变成入库信息入库子图是整份文档里最复杂的一部分包含1.1到1.6六个加工。它的起点是采购员发出订货通知终点是入库信息写入库存表、采购入库信息表和货物信息表。顺序是这样的采购员的订货通知进入加工1.1“按商品汇总分类合计”按货物种类分组并按货物编号排序生成“分类的订单”。加工1.2“确定要订货的货名等”拿分类订单和库存表比对确定到底缺什么、缺多少生成订货单。加工1.3“按供应商汇总选择供应商”根据客户信息表里的供应商信息把订货单转成正式订单发给供应商。供应商返回发货单加工1.4“核对发货单”把订单和发货单逐项比较。不一致时把错误的发货单退回供应商一致时生成到货单核准。加工1.5“入库”根据到货单核准核查实物入库后修改库存表追加采购入库信息表并更新货物信息表。如果入库过程中发现新供应商加工1.6“登录新供应商”负责把供应商信息写入客户信息表。拿这张子图去画图时我一般建议先画数据文件区再画加工框。用ProcessOn或Visio的话步骤是先在页面右侧放好库存表、采购入库信息表、货物信息表、客户信息表四个存储再从左到右排列1.1到1.6六个加工最后逐条连数据流每条数据流都按数据字典命名。这样能避免画到一半发现加工框已经摆不下不得不重排。3.2 出库子图订单拆成可满足和不可满足两条岔路出库子图对应加工2包含2.1到2.5五个加工逻辑上也可拆成一条判断链。顾客发来订单后加工2.1“编辑订单”会先核对货物信息表和客户信息表。如果顾客不在客户信息表里走加工2.2“登录新客户”把新客户信息写入客户信息表如果是老客户订单直接交给加工2.3“检查订单”。加工2.3是关键判断点。它会把订单和货物信息表、库存表做比对输出两条数据流“可满足的订单”和“不能满足的订单”。可满足的订单进入加工2.4“出库”按订单从库存里扣减货物同时写入销售出库信息表不能满足的订单进入加工2.5“产生暂存订单”生成暂存订单后一部分转成正式订单给供应商一部分转成订货通知给采购员。这里有个细节容易被忽略第一层图里加工2还输出“发票”但在出库子图里发票并没有作为一个独立加工出现。我会把它理解成加工2.1编辑订单时同步生成的单据或者加工2.4出库完成后打印的凭证。文档没有写清楚这点使用时要特别注意否则画图时不知道发票这条数据流该从哪里引出。建议在文档批注里补一句“发票在出库确认后由打印加工输出”这样数据流才闭环。3.3 查询与打印子图按编号查询的数据组织方式查询加工在文档里编号是5.1输入是货物编号和客户编号输出是货物信息和客户信息。逻辑很简单按编号对货物和客户进行查询并把结果显示出来。货物编号对应货物信息表客户编号对应客户信息表一张表一条主键查出来直接返回。打印加工编号是6输入有入库信息、出库信息、货物信息、客户信息输出是所需清单。它本身不加工数据只是把已有的数据流格式化输出。画图时要注意六条输入数据流都是从对应加工或数据文件来不能直接画成从外部实体来。讲到这儿需要提醒一点文档里所有数据文件都写了“组织方式按货物编号从小到大排序存取方式顺序存取”。这句话是教材模板里的常见写法但它和查询加工“按编号查询”是矛盾的。真实系统里按主键查询靠的是索引而不是顺序扫描。所以读这套文档时不用把“顺序存取”太当真把它当成“数据存储是有序的”理解即可。4. 避坑与排查画DFD和写数据字典时容易翻车的五个地方4.1 数据流命名不一致顶层叫“订单”第一层多出“可满足的订单”和“不能满足的订单”现象顶层图里只有一条“订单”数据流进入仓库管理系统。到了第一层图突然出现“可满足的订单”“不能满足的订单”“可满足的订货”等变体。读者对照图和数据字典时发现条目对不上连评审也会觉得文档是拼的。原因原始文档在顶层图只保留外部实体之间流动的订单进入系统后订单会被加工2.3拆成两类。顶层图不需要展示内部加工所以没有这两条拆分结果。真正的错误不是命名多而是数据字典里没有对上号。解决把“订单”作为顶层数据流名“可满足的订单”“不能满足的订单”作为第一层内部数据流名数据字典里分开列。每次画完一层就做一次“数据流名称清单核对”保证上一层的输出在下一层都找得到承接。4.2 把数据文件当成数据流出入库存表被画成加工2.4的“输出”现象很多人在出库子图里画一条从加工2.4指向库存表的数据流叫做“库存表”然后加工2.4看起来很像在生成一张表。原因数据文件与加工之间只有读和写两种关系没有“生成整张表”这种数据流。原文档在加工逻辑里写的是“修改库存表”“在销售出库信息表中添加记录”这不是加工输出数据文件而是更新数据文件。解决在DFD里加工修改数据文件时箭头方向是加工指向数据文件但这表示“写入更新”不代表数据流名等于表名。我建议把数据流命名为“库存修改信息”“出库记录”这种具体内容而不是直接叫“库存表”。这样语义更清楚也方便数据字典维护。4.3 数据字典的组成标记不规范所有数据流都用“”没说明可选和重复现象数据字典里几乎所有数据流组成都是“货物编号货物品名货物规格货物数量…”但“”到底表示必须同时出现还是可以任选文档里没有定义。原因早期教材里常用“”表示“与”用“|”表示“或”用“[]”表示可选用“{}”表示重复。原始文档没采用标准符号全用加号串联遇到“错误发货单”和“正确发货单”这种带判断的数据流时就看不出来哪些字段是必选、哪些会有变化。解决拿到这份文档后我建议先花半小时把数据字典里的组成改写为标准形式。例如订货通知 货物编号 货物品名 货物规格 货物数量 货物进价 货物种类 供应商编号 供应商名称 采购员编号 采购员姓名 进货时间 货物产地。发货单在核对前用“发货单 {货物编号 数量 进价} 发货时间”表示遇到有错误的单据再细化。这样写后面转成接口字段或数据库字段时不会漏项。4.4 数据项定义和实际建表冲突电话不能存成数值价格不能只用“长度10”现象数据字典里“客户电话”是数值型长度11供应商电话也是数值型11。要真按这个建表手机号前头带0会被吃掉区号“010”直接变成10完全没法用。原因原始文档按二十年前教材的写法把电话当作数值处理。客户地址长度80、货物产地长度80虽然够但“货物数量、进价、售价都是长度10的数值型”也很粗糙乘法运算和价格小数都没有说明。解决真正画表结构时把电话字段改成VARCHAR(20)进价和售价用DECIMAL(10,2)。货物数量如果可能为小数用DECIMAL(10,2)如果只按整数件计用INT。这是文档里最需要动手改的部分。原始数据字典可以作为需求基线但不能直接当成物理表结构。4.5 加工编号有跳跃打印是6查询是5.1其他模块都有两级编号现象入库管理有1.1到1.6出库管理有2.1到2.5货物信息管理是3.1客户信息管理是4.1查询是5.1但打印只有一个编号6没有6.1。原因原文档作者只对核心业务做了细化打印被认为太简单不用细分。这在课程设计评审里通常说得过去但会造成一个隐患打印加工到底接收哪些数据流、按什么格式输出全都没有落到数据字典。解决要么保持6作为叶子加工并在数据字典里补一条加工定义“打印输入入库信息、出库信息、货物信息、客户信息输出清单”。要么把打印拆成6.1选择打印内容、6.2格式化数据、6.3输出打印件。我建议后一种因为一旦需要实现导出报表功能三个子加工能直接对应到三个函数。5. 进阶用法用数据字典反推建表语句与图文档自检清单这份文档最有价值的用法不是照着背而是拿数据字典的字段定义反推出物理表结构。货物信息表是最典型的一张表原始数据字典里货物信息表的组成为“货物编号货物品名货物规格货物数量货物进价货物售价货物种类”。直接转成建表语句可以写成这样CREATE TABLE goods_info ( goods_id CHAR(10) PRIMARY KEY COMMENT 货物编号, goods_name VARCHAR(10) NOT NULL COMMENT 货物品名, goods_spec VARCHAR(20) COMMENT 货物规格, goods_qty INT COMMENT 货物数量, goods_cost DECIMAL(10,2) COMMENT 货物进价, goods_price DECIMAL(10,2) COMMENT 货物售价, goods_type VARCHAR(10) COMMENT 货物种类 ) COMMENT 货物信息表;这段SQL里的字段名、类型和注释都直接来自数据字典。注意三个参数差异货物编号用CHAR(10)因为它是定长主键货物品名和货物种类用VARCHAR(10)因为名称类字段长度会波动进价和售价我改成了DECIMAL(10,2)原始文档只写了数值型长度10不区分小数位真按数值型建表会丢掉两位小数。如果你要保留文档原样可以把DECIMAL(10,2)换回INT但那样系统里就会出现一块九毛九被存成1块的尴尬。库存表也值得单独建因为它和货物信息表是一对一关系。按数据字典库存表组成是“货物编号货物品名货物规格货物产地货物剩余量”建表语句是CREATE TABLE stock_info ( goods_id CHAR(10) PRIMARY KEY COMMENT 货物编号, goods_name VARCHAR(10) COMMENT 货物品名, goods_spec VARCHAR(20) COMMENT 货物规格, origin VARCHAR(80) COMMENT 货物产地, remaining_qty INT COMMENT 货物剩余量 ) COMMENT 库存表;注意这里我只保留原始字典里的字段没有加外键。实际项目中你会把goods_name和goods_spec冗余出来用于快速展示但增删改时要通过货物编号同步更新。这份文档没有说明两个表的关系你可以自己在设计文档里补一行“库存表与货物信息表通过货物编号关联”。做完建表后我建议用下面这张自检清单回查整套文档专治“图和字典对不上”检查项常见问题处理方式数据流名称顶层与第一层不一致逐层列出数据流清单按编号核对数据文件库存表、客户信息表被多加工共享用加工-数据文件矩阵核对数据项电话、价格类型不合理物理建表时修正类型不沿用旧字典加工输入输出打印加工没有输入来源反查第一层图补数据流查询逻辑顺序存取与按编号查询矛盾明确主键索引不照抄“顺序存取”从那以后我每次拿到这类数据流图文档都不会先看它画得多完整而是先跑一遍三件事把数据流清单和第一层图过一遍把数据文件清单和加工输入输出过一遍再把数据项定义和建表字段过一遍。看起来多花半小时后面改设计的时候能少加三天班。希望帮到你。本文还有配套的精品资源点击获取
返回列表