DBA 我想上一层楼,DFD 了解一下

本文探讨了在软件项目中,如何从数据库(DB)的视角出发,利用数据流图(DFD)进行软件需求分析和设计。通过实例说明了DFD在避免表设计错误、明确数据流向及确保数据流顺畅等方面的作用。


活着绕不过修行,越简单越复杂,然后有可能是越复杂,越简单。DBA 做久了,貌似两个路径,运维DBA, 开发DBA,实际上还有另一条路,就是将其合二为一,让你自身升华一次,成为一个数据库架构师。那在软件项目中,除了去给硬件层次,或数据库层次做一个架构的规划以外, 从软件的开发角度,作为DB的层次也可以梳理和参与甚至是贴合软件来做一些事。

今天就从DFD 切入,两手都要抓,两手都能crash点的角度来看看。DFD 是什么,DFD 是data -flow diagram 数据流图,在开发软件的过程中,有需求,需求分析,有各种软件开发的流程图,但从DB的点位出发,除了在数据库选型以及表设计去符合你的软件项目需求,在软件的需求阶段,你也要根据软件设计的业务需求,来画出从DB 观点出发的 DFD 数据流图。软件人员可能会问,这有必要吗,因为从软件设计的角度很多企业是没有这个“项目”的。 

用大白话讲,DFD是将你软件项目中的数据从哪里来,数据到哪里去,数据在哪个节点有存储,数据在整体项目的流转,以数据库DB的视角来进行一个描绘,很逻辑的事情,好处也是有的,1 避免在设计表的时候,忘记某些数据表的设计之间的关联性,2 避免设计表时定位不清,造成一个表多个用途或多个表一个用途,最终导致 “一夫多妻“, 或者“一妻多夫”的可能性。

而这个图应该是在 UML 图之前要有的,a way of visualizing software systems before UML diagrams.  DFD 也是有两个种风格,

1 Yourdon&Coad  更加贴近系统分析和设计

2 Gane & Sarson   更贴近信息系统的可视化

通过这两种方式来描述 数据的存储,数据流, 外部实体。在绘制 DFD的时候会以四种图形来描述DFD的四个基本概念, 1 外部实体 2 过程  3 数据存储 4 数据流 来组成DFD,其中是可以用不同的图形来表达这四种实体的不同。

下面就以一个简单的订单系统作为 DFD 的入门

在一个订单发货系统里面,首先我们根据常识性的知识,外部的实体会存在

1 客户

2 库存

3 快递公司

4 管理

以及最后的我们的处理任务的process 订单发货处理系统,建模的最简单的DFD图,其中包含了系统中必要的实体,和流程,图看似简单,但是确定系统边界的方法。表名系统和上下文之间的关系,也是DFD的上下文数据流程图。也可以叫 0  LEVEL 图

在大方向确认的情况线下,就开始规划 LEVEL 1 的数据流图了,将LEVEL 0 的图细化。

从下图我们可以知道,发货系统的数据源来自于订单,实体有客户,快递公司,仓库,审批管理人, 而数据的存储位置有 库存,订单,涉及两个系统处理过程,订单发货处理过程,与订单出库单生成过程

其实在整个DFD图的产生的过程中就梳理了当前系统设计的数据流是否顺畅,是否贴近实际业务的信息流转。

在画DFD图的时候,需要注意以下几点:

1 过程模块应该使用动作,或动态的名词来表示--动的一个状态

2 数据存储位置至少应该与一个操作或者进程相关联

3 外部的实体也需要至少一个与操作或进程相关

4 数据存储不应该与外部实体有关

5 每个图必然有数据的流入和流出

6 所有的图必须以一个外部实体开始,以一个外部实体结束

7 外部实体之间不存在数据流转


实际上DFD图,是一个简单到复杂的过程将数据流,数据流转分层的进行分析绘制,将某个软件开发中的东西细化的过程。下面就是DFD的分层图

顶层数据流图只包含一个过程,表示整个系统

中层数据流图是对父层数据流中某个过程进行细化

底层是细化的过程,细化到不能在细化

OK 就先写到这,也编不出什么来了,如果写错了还请软件方面的大仙们指正,感谢。

<think>好的,用户需要根据用户注册与登录流程画出详细的数据流图DFD)。首先,我需要回忆一下数据流图的基本元素,包括外部实体、加工、数据存储数据流。根据引用[3]中的说明,外部实体是系统的参与者,加工是处理数据的过程,数据存储是存储数据的地方,数据流则是数据之间的流向。 用户提到的注册与登录流程主要涉及未注册网民注册用户这两个外部实体。首先,注册流程中,用户需要提供注册信息,系统验证后存储到用户信息库。登录流程则需要用户输入凭证,系统验证后允许访问系统功能。这两个流程都需要加工处理数据存储。 接下来,我需要确定顶层DFD。顶层图应该展示系统与外部实体的交互。用户(未注册注册)作为外部实体,向系统发送注册或登录请求,系统处理后返回结果。这里的数据流包括注册请求、登录请求、注册成功/失败、登录成功/失败。 然后是分解到第一层DFD。注册登录作为两个主要加工过程,各自有子流程。注册流程包括验证信息、创建账户存储数据,涉及用户信息存储。登录流程包括验证凭证、验证状态(如是否被封禁)返回结果,同样使用用户信息存储。 进一步细化到第二层DFD,注册流程可以分解为接收信息、验证信息(如格式、唯一性)、保存到数据库。每个步骤都可能出现错误,比如信息格式不正确,需要反馈错误信息。登录流程分解为接收凭证、验证凭证(匹配数据库)、检查账户状态,同样有错误处理,比如密码错误或账户被封禁。 需要确保数据流的正确性,比如数据流必须经过加工,避免黑洞、奇迹或灰洞。例如,用户提交的信息必须经过验证加工才能存储,否则会出现问题。同时,引用[3]提到的常见错误需要避免,比如加工必须有输入输出,输入要足够产生输出。 最后,根据用户提供的引用[2],数据流图应关注数据流动而非流程控制,所以重点放在信息如何从外部实体经过加工存储到数据存储,再返回结果。可能还需要参考引用[1]中的网上购物系统案例,了解用户、商家、管理员的不同数据流,但这里专注于注册登录部分。 总结步骤:确定外部实体,识别主要加工过程,定义数据存储,绘制各层DFD,确保符合规则,避免常见错误。最终给出示例常见问题,帮助用户理解应用。</think>根据用户注册与登录流程绘制数据流图DFD)的步骤如下: --- ### 一、DFD基本元素说明 1. **外部实体**:用户(未注册网民、注册用户) 2. **加工**:注册验证、登录验证等处理逻辑 3. **数据存储**:用户信息数据库 4. **数据流**:注册请求、登录凭证、验证结果等 --- ### 二、顶层数据流图Level 0) **描述系统边界与外部交互** ``` [未注册网民] --> (注册请求) --> 用户管理系统 [注册用户] --> (登录请求) --> 用户管理系统 用户管理系统 --> (注册成功/失败) --> [未注册网民] 用户管理系统 --> (登录成功/失败) --> [注册用户] ``` *注:系统与外部实体之间通过数据流连接,不涉及内部细节[^3]。* --- ### 三、第一层数据流图Level 1) **分解用户管理系统** 1. **注册流程** - 加工1:`验证注册信息` - 输入:用户提交的注册信息(用户名、密码、邮箱) - 输出:验证结果(格式正确性、唯一性) - 加工2:`创建用户账户` - 输入:已验证的注册信息 - 输出:用户账户数据 - 数据存储:`用户信息`(存储账户数据) 2. **登录流程** - 加工3:`验证登录凭证` - 输入:用户名、密码 - 输出:凭证匹配结果 - 加工4:`检查账户状态` - 输入:用户账户数据 - 输出:账户状态(正常/封禁) --- ### 四、第二层数据流图Level 2) **细化注册与登录流程** 1. **注册流程细化** ``` [未注册网民] --> (提交注册信息) --> 1.1 接收注册信息 1.1 --> (信息格式检查) --> 1.2 验证信息唯一性 1.2 --> (保存至数据库) --> [用户信息] [用户信息] --> (返回结果) --> 1.3 反馈注册结果 1.3 --> (注册成功/失败) --> [未注册网民] ``` *注:若验证失败,直接返回错误信息(如“邮箱已注册”)[^3]。* 2. **登录流程细化** ``` [注册用户] --> (提交用户名密码) --> 2.1 接收登录凭证 2.1 --> (查询用户信息) --> [用户信息] [用户信息] --> (返回账户数据) --> 2.2 验证密码匹配 2.2 --> (检查账户状态) --> 2.3 生成登录结果 2.3 --> (登录成功/失败) --> [注册用户] ``` *注:若密码错误或账户封禁,返回对应提示[^3]。* --- ### 五、注意事项 1. **避免DFD常见错误** - 黑洞(加工仅有输入无输出) - 奇迹(加工仅有输出无输入) - 灰洞(输入不足以产生输出)[^3] 2. **工具推荐** - 使用在线工具如Visual Paradigm或Lucidchart生成DFD[^2] ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值