数据库实体关系图(ERD)及其画法

2023-05-16

文章目录

  • 1. 什么是ER图?
  • 2. 什么时候画ER图?
    • 2.1. 数据库设计
    • 2.2. 数据库调试
    • 2.3. 数据库创建和补丁
    • 2.4. 帮助收集需求
  • 3. ERD符号指南
  • 4. 概念、逻辑和物理数据模型
  • 5. 如何绘制ER图?


数据库绝对是软件系统不可分割的一部分。在数据库工程中充分利用ER关系图,可以保证在数据库创建、管理和维护中产生高质量的数据库设计。ER模型还提供了一种通信手段。

在这里插入图片描述

1. 什么是ER图?

首先,什么是实体关系图?

实体关系图,又称ERD、ER图或ER模型,是一种用于数据库设计的结构图。ERD包含不同的符号和连接器,它们可视化两个重要的信息:系统范围内的主要实体,以及这些实体之间的相互关系。

这就是为什么它被称为“实体”“关系”图(ERD)!

当我们在ERD中谈到实体时,我们通常指的是业务对象,例如人员/角色(例如学生)、有形的业务对象(例如产品)、无形的业务对象(例如日志)等。“关系”是关于这些实体如何在系统中相互关联的。

在这里插入图片描述
在典型的ER设计中,您可以找到描述实体、实体属性和相互关系的符号,如圆角矩形和连接器(具有不同的端点样式)。

2. 什么时候画ER图?

什么时候画erd ?虽然ER模型主要用于在概念可视化和物理数据库设计方面设计关系数据库,但是在其他情况下,ER图也可以提供帮助。下面是一些典型的用例。

2.1. 数据库设计

——根据变化的规模,直接在DBMS中更改数据库结构可能有风险。为了避免破坏生产数据库中的数据,仔细计划更改是很重要的。ERD是一个有用的工具。通过绘制ER图来可视化数据库设计思想,您有机会识别错误和设计缺陷,并在数据库中执行更改之前进行更正。

2.2. 数据库调试

——调试数据库问题很有挑战性,特别是当数据库包含许多表时,需要编写复杂的SQL来获取所需的信息。通过使用ERD可视化数据库模式,您可以全面了解整个数据库模式。您可以轻松地定位实体、查看它们的属性并确定它们与其他实体之间的关系。所有这些都允许您分析现有数据库并更容易地发现数据库问题。

2.3. 数据库创建和补丁

—Visual Paradigm是一个ERD工具,它支持一个数据库生成工具,可以通过ER图的方式自动创建和补丁数据库。因此,有了这个ER图工具,ER设计就不再是一个静态的图,而是反映物理数据库结构的一面镜子。

2.4. 帮助收集需求

——通过绘制描述系统高级业务对象的概念性ERD来确定信息系统的需求。这样的初始模型还可以演化为物理数据库模型,以帮助创建关系数据库,或帮助创建流程图和数据流模式。

3. ERD符号指南

ER图包含实体、属性和关系。在这一节中,我们将详细讨论ERD符号。

  • 实体

ERD实体是一个系统内可定义的事物或概念,例如人/角色(例如学生)、对象(例如发票)、概念(例如概要)或事件(例如交易)(注:在ERD中,术语“实体”经常被用来代替“表”,但它们是相同的)。在确定实体时,将它们视为名词。在ER模型中,实体显示为圆角矩形,其名称位于顶部,其属性列在实体形状的主体中。下面的ERD示例显示了一个ER实体的示例。

在这里插入图片描述

  • 实体属性

属性也称为列,是持有它的实体的属性或特征。

属性具有描述属性的名称和描述属性类型的类型,如字符串的varchar和整数的int。在为物理数据库开发绘制ERD时,务必确保使用目标RDBMS支持的类型。

下面的ER关系图示例显示了一个包含一些属性的实体。

在这里插入图片描述

  • 主键

主键是一种特殊的实体属性,它惟一地定义了数据库表中的一条记录。换句话说,不能有两个(或多个)记录共享主键属性的相同值。下面的ERD示例显示了具有主键属性“ID”的实体“Product”,以及数据库中表记录的预览。第三条记录无效,因为另一条记录已经使用了ID 'PDT-0002’的值。

在这里插入图片描述

  • 外键

外键也称为FK,是对表中主键的引用。它用于标识实体之间的关系。注意,外键不一定是唯一的。多条记录可以共享相同的值。下面的ER关系图示例显示了一个具有一些列的实体,其中外键用于引用另一个实体。

在这里插入图片描述

  • 关系

两个实体之间的关系表示这两个实体以某种方式相互关联。例如,一个学生可能注册了一个课程。因此,实体学生与课程是相关的,而一种关系是连接他们之间的连接器。

  • 基数

基数定义一个实体中可能出现的事件数,该实体与另一个实体中可能出现的事件数相关联。例如,一个队有很多队员。当在ERD中出现时,实体团队和玩家以一对多的关系相互连接。

在ER图中,基数表示为连接器两端的鱼尾纹。三种常见的基本关系是一对一、一对多和多对多。

一对一的基数的例子


一对一关系主要用于将一个实体一分为二,以提供简明的信息并使其更易于理解。下图显示了一对一关系的一个示例。

在这里插入图片描述
一对多的基数的例子


一对多关系是指两个实体X和Y之间的关系,其中X的一个实例可能链接到Y的多个实例,而Y的一个实例只链接到X的一个实例。

在这里插入图片描述

多对多的基数的例子


多对多关系是指两个实体X和Y之间的关系,其中X可以链接到Y的多个实例,反之亦然。下图显示了一个多对多关系的示例。注意,在物理ERD中,多对多关系被分割为一对一对多关系。在下一节中,您将了解什么是物理ERD。

在这里插入图片描述

4. 概念、逻辑和物理数据模型

型通常是在三个抽象层次上绘制的:

概念ERD /概念数据模型
逻辑ERD /逻辑数据模型
物理ERD /物理数据模型
虽然ER模型的所有三个级别都包含具有属性和关系的实体,但是它们在创建的目的和目标受众方面有所不同。

一般理解的三个数据模型是业务分析师使用概念模型和逻辑模型系统中的业务对象存在,而数据库设计师或数据库工程师阐述了概念和逻辑ER模型生成物理模型,提出了物理数据库结构准备创建数据库。下表显示了三种数据模型之间的差异。

概念模型vs逻辑模型vs数据模型:

ERD featuresConceptualLogicalPhysicalEntity (Name)YesYesYesRelationshipYesYesYesColumns YesYesColumn’s Types OptionalYesPrimary Key YesForeign Key Yes

  • 概念数据模型

概念性的ERD对系统中应该存在的业务对象及其之间的关系进行建模。开发了一个概念模型,通过识别所涉及的业务对象来呈现系统的总体情况。它定义了哪些实体存在,而不是哪些表。例如,“多对多”表可能存在于逻辑或物理数据模型中,但在概念数据模型中,它们只是作为没有基数的关系显示。

概念数据模型示例

在这里插入图片描述
注意:概念性ERD支持在建模两个实体之间的“一种”关系时使用泛化,例如,三角形是一种形状。这种用法类似于UML中的泛化。注意,只有概念性的ERD支持泛化。

  • 逻辑数据模型

逻辑ERD是概念ERD的详细版本。通过显式定义每个实体中的列并引入操作实体和事务实体,可以开发逻辑ER模型来丰富概念模型。虽然逻辑数据模型仍然独立于将要创建数据库的实际数据库系统,但是如果它影响设计,您仍然可以考虑这一点。

逻辑数据模型示例

在这里插入图片描述

  • 物理数据模型

物理ERD表示关系数据库的实际设计蓝图。物理数据模型通过为每个列分配类型、长度、可空值等来详细说明逻辑数据模型。由于物理ERD表示在特定DBMS中数据应该如何结构化和关联,因此考虑实际数据库系统的约定和限制是很重要的。确保DBMS支持列类型,并且在命名实体和列时不使用保留字。

物理数据模型示例

在这里插入图片描述

5. 如何绘制ER图?

什么是实体关系图(ERD)?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库实体关系图(ERD)及其画法 的相关文章

  • 在STM32下完成一个基于FreeRTOS的多任务程序

    在STM32下完成一个基于FreeRTOS的多任务程序 一 FreeRTOS简述二 MDK下移植FreeRTOS三 总结 一 FreeRTOS简述 FreeRTOS是一个热门的嵌入式设备用即时操作系统核心 已被经成功移植到35种不同的微控制
  • 【K8S】Kubernetes集群搭建流程详解

    文章目录 一 购买云服务器二 搭建Docker环境三 根据K8S官网搭建 基础环境 四 安装K8S三剑客 xff1a kubelet kubeadm kubectl五 安装K8S节点需要使用的镜像六 使用kubeadm初始化Master节点
  • springBoot maven打包[分层打包]

    打jar包 xff0c 很大 xff0c 发服务器也慢 get到一种打包方式 直接挨着cv直接就能用 一 src目录下创建assembly文件夹下assembly xml lt assembly xmlns 61 34 http maven
  • 链表-倒序排列鏈表

    剑指 Offer 06 从尾到头打印链表 38 输入一个链表的头节点 xff0c 从尾到头反过来返回每个节点的值 xff08 用数组返回 xff09 示例 1 xff1a 输入 xff1a head 61 1 3 2 输出 xff1a 2
  • 使用远程桌面链接CentOS 7

    需求 xff1a Gnome桌面环境 Xrdp Xrdp是Microsoft远程桌面协议 RDP 的开源实现 xff0c 它允许您以图形方式控制远程系统 Gnome安装 yum groupinstall 34 GNOME Desktop 3
  • vscode的下载速度会特别慢问题处理

    1 xff0c 下载太慢大部分是因为VSCODE官网服务器跟我们国内的链接速度有关 xff0c 当我们去官网下载会出现下面的情况 2 xff0c 复制下载的链接 xff0c 并且修改红框中的内容为 span style background
  • Dockerfile

    Dockerfile Dockerfile基本结构指令FROMMAINTAINERRUNCMDEXPOSEENVADDCOPYENTRYPOINTVOLUMEUSERWORKDIRONBUILD 创建镜像 Dockerfile 基本结构 D
  • 使用git时本地代码被覆盖怎么办

    1 遇事不要慌 xff0c 看本地历史记录 右键要想要恢复的代码或文件夹 61 右键 61 Local History 61 gt Show History 2 我一下就找到了本地历史记录 看右边有了不同时间的代码 xff0c 去点一下试试
  • Ubuntu截图工具flameshot的安装与快捷键设置

    https blog csdn net sexyluna article details 105884224
  • moveit配置过后gazebo加载不出来机械臂模型的问题

    我使用moveit setup assistant对dubot magician机械臂的urdf进行配置 xff0c 配置完成后发现运行gazebo launch可以打开gazebo xff0c 但是却什么也没有 xff0c 机械臂模型加载
  • 上传本地项目代码到GitHub的方法

    预备知识 xff1a 有一个GitHub账号 xff0c 然后知道怎么进GitHub网页 之前往GitHub上传代码都是现场百度找指令操作的 xff0c 从来不记 xff0c 这次干脆做个记录当个笔记吧 Git是一个版本控制软件 xff0c
  • 单片机之蜂鸣器

    蜂鸣器简介 无源蜂鸣器 xff1a 有绿色电路板的一种 有源蜂鸣器 xff1a 没有电路板用黑胶封闭的一种 其实蜂鸣器的种类有很多 例如 xff1a 电磁式蜂鸣器 xff1a 由振荡器 电磁线圈 磁铁 振动膜片及外壳组成 同时电磁式蜂鸣器也
  • Centos Stream 9 安装 Docker 23.0.2 社区版 官方安装教程

    目录 一 内核的版本必须大于3 10使用下面的命令来检查是否满足docker的要求 xff0c 进行依赖性检查 二 安装docker容器引擎 xff0c 需要一个具有sudo权限的账户登录进行操作 1 更新现有yum包 2 遇到提示请输入y
  • AttributeError: module numpy has no attribute int .报错解决方案

    在训练YOLO模型时突然发现这个报错 xff0c 后来发现是numpy版本问题 xff0c yolo官方给的是大于等于1 18 5 xff0c 当你执行pip install r requirements txt命令时 xff0c 他默认安
  • 单片机(嵌入式)程序分层架构

    目录 前言 嵌入式3层软件架构 嵌入式4层软件架构 1 驱动层 操作系统层 中间件层 应用层 嵌入式4层软件架构 2 硬件层 嵌入式微处理芯片 嵌入式存储器系统 嵌入式I O接口 中间层 系统软件层 RTOS 文件系统 GUI 应用层 嵌入
  • FreeRTOS笔记—第一章 FreeRTOS概述

    1 1 认识FreeRTOS 1 1 1 什么是操作系统 操作系统 xff08 Operating System xff0c 简称OS xff09 是管理计算机硬件与软件资源的计算机程序 简单说就是一种管理计算机资源的软件 目的是为了高效
  • 嵌入式工程师 面试题 集-C语言

    预编译 1 什么是预编译 xff0c 何时需要预编译 答 xff1a 预编译又称预处理 就是做些代码文本的替换工作 开头的指令 xff0c 比如拷贝 include 包含的文件代码 xff0c define 宏定义的替换 xff0c 条件编
  • 嵌入式工程师面试题集-MCU_STM32

    一 选择题 1 Cortex M处理器采用的架构是 xff08 D xff09 xff08 A xff09 v4T xff08 B xff09 v5TE xff08 C xff09 v6 xff08 D xff09 v7 2 NVIC可用来
  • 嵌入式工程师面试题集汇总

    主观问题 主观问题 介绍类 请自我介绍 xff1f 为什么不留在xx公司 xff08 为啥离职 xff09 xff1f 你5 10年职业规划是怎样的 xff1f 你还写代码吗 xff1f 从工程师到管理再到工程师你是怎样想的或能承受吗 把你
  • C++解决实际问题 ——a的三次方(accode)

    hello大家好 xff0c 在下 小侠雨落 xff0c 几天不见 xff0c 甚是想念啊 xff01 不说了 xff0c 上标题 a的三次方 咳咳 xff0c 题目描述输入一个整数 a xff0c 输出 a 的三次方 输入格式 一行 xf

随机推荐

  • [CVPR2018]Bottom-Up and Top-Down Attention for Image Captioning and Visual Question Answering

    Bottom Up and Top Down Attention 附 xff1a 论文下载地址 主要贡献 提出了一个新的LSTM组合模型 xff0c 包括了attention LSTM和language LSTM 两个组件 在这个组合模型的
  • python matplotlib绘图总结

    目录 1 画线 a 常规画线 xff1a matplotlib pyplot plot 1 xff09 线的颜色 风格 标记点形状 2 xff09 一图多线 xff0c 并加图例 b 非均匀画线 semilogy c 给特定的点打标签 2
  • mysql now的时间问题

    mysql now 函数调用系统时间不对修正方法 进入mysql命令行 查看时区设置 xff1a show variables like 39 zone 39 select 64 64 time zone 两者保持与系统时间一致 xff0c
  • 【谷粒学院】微信扫码支付(224~238)

    224 项目第十五天内容介绍 225 课程评论实现过程分析 226 课程支付功能需求分析 1 课程支付说明 xff08 1 xff09 课程分为免费课程和付费课程 xff0c 如果是免费课程可以直接观看 xff0c 如果是付费观看的课程 x
  • 故障转移集群搭建高可用文件共享服务器

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言 一 故障转移集群是什么 xff1f 二 什么是仲裁盘 xff1f 三 添加故障转移集群功能 四 故障转移集群的建立 五 配
  • HTTP的报文(详解)

    摘要 我们对于http的了解 xff0c 应该在于 xff0c 我们如果想请求一个资源或者访问一个页面 xff0c 客户端 xff08 我们 xff09 应该向服务器发送一个http请求 xff0c 然后得到响应 xff0c 才能出现我们想
  • Kubernetes部署

    文章目录 1 Kubernetes快速部署1 1 Kubernetes安装要求1 2 安装步骤1 3 准备环境1 4 所有节点安装Docker kubeadm kubelet1 4 1 安装Docker1 4 2 添加kubernetes阿
  • 如何从GitHub克隆带有子模块的仓库,比如FreeRTOS

    情形一 xff1a 首次克隆 git clone recurse submodules git 64 github com FreeRTOS FreeRTOS git 该命令会递归克隆该仓库及所有的子模块 工程目录下的 gitmodules
  • grpc生成go文件命令

    标题 xff1a grpc生成go文件命令 类型 xff1a Golang 内容 xff1a 一 生成tag bp go文件命令 1 protoc go out 61 plugins 61 grpc modules course info
  • Prometheus+grafana监控 k8s集群

    在k8s集群中使用node exporter prometheus grafana对集群进行监控 node exporter组件负责收集节点上的metrics监控数据 xff0c 并将数据推送给prometheus prometheus负责
  • 用IAR给MSP430烧录时出现“Only one MSP-FET ez-FET debugger can be connected to your system during recovery”

    一 问题说明 当安装上IAR软件后 xff0c 新建工程配置好后 xff0c 烧录进MSP430 xff08 我的是MSP430F5529 xff09 中时出现 34 Only one MSP FET ez FET debugger can
  • ConstOS防火墙端口操作

    添加端口 permanent 是永久生效的意思 如果不添加则默认重启后失效 firewall cmd zone 61 public add port 61 3490 tcp permanent 重载端口 firewall cmd reloa
  • 分享学习12864心得

    分享12864显示中文 一 12864基本参数二 代码部分1 得到控制时序2 指令集3 对显示屏写入数据 总结 一 12864基本参数 1 电气参数 电源电压 xff1a VDD xff1a 43 3 0 43 5 5V 显示分辨率 xff
  • pandas 处理excel表格数据的常用方法(python)

    最近助教改作业导出的成绩表格跟老师给的名单顺序不一致 xff0c 脑壳一亮就用pandas写了个脚本自动吧原始导出的成绩誊写到老师给的名单中了哈哈哈 xff0c 这里就记录下用到的pandas处理excel的常用方式 xff08 注意 xf
  • STM32单片机课程自学知识点整理 - 指南版

    课程目录 前言网络课程推荐一 基础知识题外话 xff1a 什么是RISC V xff0c RISC V芯片的发展现状1 原码 补码和反码2 为什么1Byte 61 8bit3 什么是I 2 C4 什么是ICode DCode 系统总线 DM
  • ros与STM32通讯报错:Unable to open port

    设备名称 dev mick 记录学习中遇到的问题 xff0c 以及对应的解决办法 xff0c 免得忘了又要查资料 ros与STM32通讯报错 xff1a Unable to open port ros与STM32通讯报错 xff1a Una
  • Clustering Effect of (Linearized) Adversarial Robust Models

    2021 12 6 第三篇 xff08 NeurIPS 2021 xff09 半精读 原文链接 xff1a Clustering Effect of Linearized Adversarial Robust Models 代码链接 xff
  • Hadoop伪分布式搭建实验的详细操作步骤

    一 建立帐号及更新终端命令 1 1 创建hadoop用户 进入ubuntu系统 打开命令行终端 输入以下语句 创建一个名为hadoop的用户 useradd命令的 m用来指定用户名 s用来指定用户登录时所需的shell文件 sudo use
  • 阿里大佬推荐 Spring源码+Redis+Nginx+MySQL等七篇实战技术文档,

    JVM JVM是Java Virtual Machine xff08 Java虚拟机 xff09 的缩写 xff0c JVM是一种用于计算设备的规范 xff0c 它是一个虚构出来的计算机 xff0c 是通过在实际的计算机上仿真模拟各种计算机
  • 数据库实体关系图(ERD)及其画法

    文章目录 1 什么是ER图 2 什么时候画ER图 2 1 数据库设计2 2 数据库调试2 3 数据库创建和补丁2 4 帮助收集需求 3 ERD符号指南4 概念 逻辑和物理数据模型5 如何绘制ER图 数据库绝对是软件系统不可分割的一部分 在数