当前位置: 首页 > news >正文

讲解DFD和ERD

DFD、ERD

  • 1. DFD(数据流图,Data Flow Diagram)
    • DFD的主要元素:
    • DFD的层次结构:
    • 举例:
      • 1. 上下文图:
      • 2. 分解图:
    • DFD的应用:
  • 2. ERD(实体关系图,Entity Relationship Diagram)
    • ERD的主要元素:
    • 举例:
    • ERD的关系类型:
    • ERD的应用:
  • DFD与ERD的区别:
  • 总结:

DFD(数据流图,Data Flow Diagram)和ERD(实体关系图,Entity Relationship Diagram)是两种常用于系统分析和设计的图形化工具。它们各自有不同的功能和应用场景。

1. DFD(数据流图,Data Flow Diagram)

数据流图(DFD)是系统分析和设计中常用的一种工具,用于描述系统中数据的流动和处理过程。DFD不仅能够反映系统的数据流动情况,还可以帮助分析系统各个模块的交互关系。

DFD的主要元素:

  • 外部实体(External Entity):表示系统外部与系统交互的对象,如用户、外部系统等。外部实体可以是数据输入的源头或数据输出的目标。用矩形表示。
  • 过程(Process):表示对数据进行处理的活动,通常是系统的一个功能模块。每个过程通常都有输入数据、输出数据和一个处理功能。用圆形或椭圆形表示。
  • 数据流(Data Flow):表示数据在系统中的流动路径,用箭头表示,箭头的方向指示数据的流向。
  • 数据存储(Data Store):表示数据在系统中的存储位置,例如数据库或文件。用平行线表示。

DFD的层次结构:

DFD通常分为不同的层次,以展示不同的细节:

  • 上下文图(Context Diagram):是DFD的最高层次,它展示了整个系统与外部实体之间的交互。上下文图通常只有一个“过程”,这个过程代表整个系统。通过上下文图可以了解系统的边界和与外部实体的关系。
  • 分解图(Decomposition Diagram):是对上下文图的进一步分解,它展示了系统内部各个子过程之间的数据流和处理。分解图的目的是将复杂的过程进一步细化,使系统设计更加清晰。

举例:

假设我们要设计一个简单的 学生管理系统,该系统包括了学生信息的录入和查询功能。

1. 上下文图:

在上下文图中,我们将整个系统看作一个单一的过程,与外部实体之间的交互如下所示:

  • 外部实体:学生管理员
  • 系统的功能:学生信息的录入、查询、修改等。
  +------------+                 +-------------------+|   学生     |<------输入------>|   学生管理系统     ||            |----查询----->|                   |+------------+                 +-------------------+↑                              ↓+------------+                 +-------------------+|   管理员   |<------输入------>|                   ||            |----查询----->|                   |+------------+                 +-------------------+

在上下文图中,我们看到学生和管理员分别与“学生管理系统”进行数据交互。学生可以输入个人信息、查询自己的信息;管理员则输入学生信息、查询学生数据。

2. 分解图:

我们将“学生管理系统”这个单一过程进一步分解为多个子过程,例如“学生信息录入”、“学生信息查询”等。分解图如下:

+-------------------+
|  学生管理系统     |
+-------------------+/       \/         \
+------------+ +-------------------+
| 信息录入   | | 信息查询           |
+------------+ +-------------------+|                |
+-----------+     +----------+
| 存储学生数据 |   | 查找学生信息 |
+-----------+     +----------+

在这个分解图中,我们看到学生管理系统分为两个主要过程:

  • 信息录入:处理学生信息的输入并存储到数据存储中。
  • 信息查询:查询学生的个人信息。

DFD的应用:

  • 分析需求:帮助理解数据如何在系统中流动,以及不同功能如何互相交互。
  • 系统设计:确定系统的功能模块和数据流向,并为后续的开发提供依据。

2. ERD(实体关系图,Entity Relationship Diagram)

实体关系图(ERD)是一种用来表示数据实体及其之间关系的图形工具。在数据库设计中,ERD非常重要,它可以帮助设计合理的数据结构和数据库模式。

ERD的主要元素:

  • 实体(Entity):表示现实世界中的事物或对象,通常是一个需要存储的数据对象。实体用矩形表示。例如,“学生”、“课程”。
  • 属性(Attribute):表示实体的特征或性质,通常是实体的具体数据。属性用椭圆形表示,并与实体通过线连接。比如“学生”实体的属性有“学号”、“姓名”。
  • 关系(Relationship):表示实体之间的联系。关系通常用菱形表示。例如,“学生”和“课程”之间可以有一个“选修”关系。
  • 主键(Primary Key):唯一标识实体的属性。例如,“学号”可以是“学生”实体的主键。
  • 外键(Foreign Key):在一个实体中引用另一个实体的主键,用于建立实体之间的关系。

举例:

假设我们要设计一个 学生选课系统,系统中的实体有“学生”和“课程”,它们之间有“选修”关系。ERD如下所示:

+------------+       选修       +------------+
|   学生     |------------------|   课程     |
+------------+                   +------------+
| 学号(PK)   |                   | 课程号(PK) |
| 姓名       |                   | 课程名     |
+------------+                   +------------+

在这个ERD中:

  • 学生实体有两个属性:“学号”(主键)和“姓名”。
  • 课程实体有两个属性:“课程号”(主键)和“课程名”。
  • 选修是连接“学生”和“课程”的关系,表示一个学生可以选修多门课程。

ERD的关系类型:

  • 一对一(1:1):例如,一个人有一个身份证。
  • 一对多(1:N):例如,一个教师可以教授多门课程,但每门课程只能由一个教师教授。
  • 多对多(M:N):例如,学生可以选修多门课程,每门课程也可以有多名学生选修。

ERD的应用:

  • 数据库设计:帮助理解数据结构,并建立实体之间的关系模型。
  • 数据规范化:确保数据冗余最小化,并优化数据库结构。
  • 系统集成:帮助开发者理解数据如何在系统中流动,并指导数据库的实现。

DFD与ERD的区别:

  • DFD:关注系统的“功能”与“数据流动”,重点描述如何处理和传输数据。
  • ERD:关注系统中的“数据结构”和“实体关系”,重点描述数据库设计和数据模型。

总结:

  • DFD帮助系统分析人员了解系统的数据流动和处理流程,适用于系统设计和需求分析阶段。
  • ERD帮助数据库设计人员清晰地描述系统中的数据实体和它们之间的关系,适用于数据库设计和建模阶段。

相关文章:

讲解DFD和ERD

DFD、ERD 1. DFD&#xff08;数据流图&#xff0c;Data Flow Diagram&#xff09;DFD的主要元素&#xff1a;DFD的层次结构&#xff1a;举例&#xff1a;1. 上下文图&#xff1a;2. 分解图&#xff1a; DFD的应用&#xff1a; 2. ERD&#xff08;实体关系图&#xff0c;Entity …...

TVM计算图分割--LayerGroup

文章目录 介绍Layergroup调研TVM中的LayergroupTVM Layergroup进一步优化MergeCompilerRegions处理菱形结构TVM中基于Pattern得到的子图TPUMLIR地平线的Layergroup介绍 Layergroup目前没找到严格、明确的定义,因为不同厂家的框架考虑的因素不同,但是基本逻辑是差不多的。一般…...

OPPO开源Diffusion多语言适配器—— MultilingualSD3-adapter 和 ChineseFLUX.1-adapter

MultilingualSD3-adapter 是为 SD3 量身定制的多语言适配器。 它源自 ECCV 2024 的一篇题为 PEA-Diffusion 的论文。ChineseFLUX.1-adapter是为Flux.1系列机型量身定制的多语言适配器&#xff0c;理论上继承了ByT5&#xff0c;可支持100多种语言&#xff0c;但在中文方面做了额…...

Spring 设计模式之责任链模式

Spring 设计模式之责任链模式 责任链模式用到的场景java举例 责任链模式 责任链模式&#xff08;Chain of Responsibility&#xff09;是一种行为设计模式&#xff0c;它允许你将请求沿着处理者链进行传递。 每个处理者可以对请求进行处理&#xff0c;也可以将请求传递给链中的…...

简单的 docker 部署ELK

简单的 docker 部署ELK 这是我的运维同事部署ELK的文档&#xff0c;我这里记录转载一下 服务规划 架构: Filebeat->kafka->logstash->ES kafka集群部署参照: kafka集群部署 部署服务程序路径/数据目录端口配置文件elasticsearch/data/elasticsearch9200/data/elas…...

四款主流的3D创作和游戏开发软件的核心特点和关系

四款主流的3D创作和游戏开发软件的核心特点和关系 3D建模软件&#xff1a; Blender&#xff1a; 开源免费&#xff0c;功能全面优点&#xff1a; 完全免费持续更新优化社区活跃&#xff0c;学习资源丰富功能全面(建模、动画、渲染等) 缺点&#xff1a; 学习曲线陡峭界面操作…...

聚划算!Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN五模型多变量回归预测

聚划算&#xff01;Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN五模型多变量回归预测 目录 聚划算&#xff01;Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN五模型多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 聚划算&#xff01;Tran…...

信息安全工程师(76)网络安全应急响应技术原理与应用

前言 网络安全应急响应&#xff08;Network Security Incident Response&#xff09;是针对潜在或已发生的网络安全事件而采取的网络安全措施&#xff0c;旨在降低网络安全事件所造成的损失并迅速恢复受影响的系统和服务。 一、网络安全应急响应概述 定义&#xff1a;网络安全应…...

使用 OpenCV 实现图像的透视变换

概述 在计算机视觉领域&#xff0c;经常需要对图像进行各种几何变换&#xff0c;如旋转、缩放和平移等。其中&#xff0c;透视变换&#xff08;Perspective Transformation&#xff09;是一种非常重要的变换方式&#xff0c;它能够模拟三维空间中的视角变化&#xff0c;例如从…...

openGauss数据库-头歌实验1-4 数据库及表的创建

一、创建数据库 &#xff08;一&#xff09;任务描述 本关任务&#xff1a;创建指定数据库。 &#xff08;二&#xff09;相关知识 数据库其实就是可以存放大量数据的仓库&#xff0c;学习数据库我们就从创建一个数据库开始吧。 为了完成本关任务&#xff0c;你需要掌握&a…...

吉利极氪汽车嵌入式面试题及参考答案

inline 的作用 inline 是 C++ 中的一个关键字。它主要用于函数,目的是建议编译器将函数体插入到调用该函数的地方,而不是像普通函数调用那样进行跳转。 从性能角度来看,当一个函数被标记为 inline 后,在编译阶段,编译器可能会将函数的代码直接复制到调用它的位置。这样做…...

pycharm中的服务是什么?

在PyCharm中&#xff0c;服务是指允许在PyCharm中运行的一种功能或插件。服务可以是内置的&#xff0c;也可以是通过插件安装的。 一些常见的PyCharm服务包括&#xff1a; 调试服务&#xff1a;PyCharm提供了全功能的调试工具&#xff0c;可以帮助开发人员通过设置断点、监视变…...

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十七集:制作第二个BOSS燥郁的毛里克

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、制作游戏第二个BOSS燥郁的毛里克 1.导入素材和制作相关动画1.5处理玩家受到战吼相关行为逻辑处理2.制作相应的行为控制和生命系统管理3.制作战斗场景和战斗…...

深度解析阿里的Sentinel

1、前言 这是《Spring Cloud 进阶》专栏的第五篇文章&#xff0c;这篇文章介绍一下阿里开源的流量防卫兵Sentinel&#xff0c;一款非常优秀的开源项目&#xff0c;经过近10年的双十一的考验&#xff0c;非常成熟的一款产品。 文章目录如下&#xff1a; 2、什么是sentinel&…...

Linux系统-日志轮询(logrotate)

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 这是Linux进阶部分的最后一大章。讲完这一章以后&#xff0c;我们Linux进阶部分讲完以后&#xff0c;我们的Linux操作部分就…...

机器学习在时间序列预测中的应用与实现——以电力负荷预测为例(附代码)

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 1. 引言 随着数据采集技术的发展&#xff0c;时间序列数据在各个领域中的应用越来越广泛。时间序列预测旨在基于过去的时间数据来…...

白杨SEO:百度在降低个人备案类网站搜索关键词排名和流量?怎样应对?【参考】

很久没有写百度或者网站这块内容了&#xff0c;一是因为做百度网站朋友越来越少&#xff0c;不管是个人还是企业&#xff1b;二是百度上用户搜索与百度给到网站的流量都越来越少。 为什么想到今天又来写这个呢&#xff1f;因为上个月有个朋友来咨询我说网站百度排名全没了&…...

前端实现json动画(附带示例)

前端实现json动画&#xff08;附带示例&#xff09; 使用lottie制作动画。1.json动画2.实现效果3.git仓库4.运行5.json动画天堂6.代码7. 经常使用的方法 使用lottie制作动画。 1.json动画 废话不多说&#xff0c;直接看效果图2.实现效果 3.git仓库 https://gitee.com/chaiach…...

AI 写作(一):开启创作新纪元(1/10)

一、AI 写作&#xff1a;重塑创作格局 在当今数字化高速发展的时代&#xff0c;AI 写作正以惊人的速度重塑着创作格局。AI 写作在现代社会中占据着举足轻重的地位&#xff0c;发挥着不可替代的作用。 随着信息的爆炸式增长&#xff0c;人们对于内容的需求日益旺盛。AI 写作能够…...

C#-类:索引器

索引器作用&#xff1a;可以让我们以中括号的形式访问自定义类中的元素。 规则自己定&#xff0c;访问时和数组一样 适用于&#xff0c;在类中有数组变量时使用&#xff0c;可以方便的访问、进行逻辑处理 可以重载&#xff0c;结构体也支持索引器 一&#xff1a;索引器的语法…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...