ER图、ERD图

news2024/11/24 14:25:08

ER图、ERD图

  • 1. 什么是ERD
    • 1.1 举例
  • 2. ERD符号指南
    • 2.1 实体
    • 2.2 属性
    • 2.3 主键
    • 2.4 外键
    • 2.4 关系
    • 2.5 基数
      • 2.5.1 一对一的基数的例子
      • 2.5.2 一对多的基数的例子
      • 2.5.3 多对多的基数的例子
  • 3.概念、逻辑和物理数据模型
    • 3.1 概念数据模型
    • 3.2 逻辑数据模型
    • 3.3 物理数据模型
  • 4.如何绘制ER图?
  • 5. 数据模型的例子
    • 5.1 ERD例子-电影租赁系统
    • 5.2 ERD示例-贷款系统
    • 5.3 网上商店
  • ER图在线画图网站
  • 附录

1. 什么是ERD

实体 - 关系(ER)图(也称为ERD或ER模型)是Peter最初在1976年提出的经典且流行的概念数据模型。它是系统内不同实体的视觉表示以及它们如何相互关联。实体关系图广泛用于设计关系数据库。ER模式中的实体成为表,属性和转换的数据库模式。由于它们可用于可视化数据库表及其关系,因此它通常也用于数据库故障排除。

1.1 举例

在这里插入图片描述

2. ERD符号指南

ER图包含实体、属性和关系。

  • 实体是我们想要存储信息的“事物”。实体是一个人,地点,事物或事件。
  • 属性是我们要为权利收集的数据。
  • 关系描述了实体之间的关系。

2.1 实体

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

2.2 属性

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

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

下面的ER关系图示例显示了一个包含一些属性的实体。
在这里插入图片描述

2.3 主键

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

2.4 外键

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

2.4 关系

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

2.5 基数

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

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

2.5.1 一对一的基数的例子

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

2.5.2 一对多的基数的例子

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

在这里插入图片描述

2.5.3 多对多的基数的例子

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

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

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

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

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

3.1 概念数据模型

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

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

3.2 逻辑数据模型

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

3.3 物理数据模型

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

4.如何绘制ER图?

  1. 确定你清楚绘制ERD的目的。是否试图呈现涉及业务对象定义的整个系统体系结构?或者您正在开发一个为数据库创建准备好的ER模型吗?必须清楚在适当的细节级别开发ER关系图的目的
  2. 确保您清楚要建模的范围。了解建模范围可以防止在设计中包含冗余实体和关系。
  3. 绘制范围中涉及的主要实体。
  4. 通过添加列来定义实体的属性。
  5. 仔细检查ERD,检查实体和列是否足够存储系统的数据。如果没有,则考虑添加其他实体和列。通常,您可以在此步骤中标识一些事务、操作和事件实体。
  6. 考虑所有实体之间的关系,并使用适当的基数(e。实体客户和订单之间的一对多关系)。不要担心是否存在孤儿实体。虽然不常见,但却是合法的。
  7. 应用数据库规范化技术以减少数据冗余和提高数据完整性的方式重构实体。例如,制造商的详细信息最初可能存储在Product实体下。在规范化的过程中,您可能会发现详细信息会重复记录,然后您可以将其作为单独的实体制造商进行拆分,并使用一个外键在产品和制造商之间进行链接。

5. 数据模型的例子

5.1 ERD例子-电影租赁系统

在这里插入图片描述

5.2 ERD示例-贷款系统

在这里插入图片描述

5.3 网上商店

在这里插入图片描述

ER图在线画图网站

1.https://www.freedgo.com/erd-index.html#O174562139296497666
2.https://excalidraw.com/
3.https://www.processon.com/

附录

数据库实体关系图ERD
8 款强大且免费的 MySQL 数据库建模工具
Dataedo ER图工具:使用ERD使您的数据库更易于理解
重点!!!「数据架构」什么是实体关系图(ERD)?
ERD实体图关系了解
Visual Paradigm
https://www.jianshu.com/p/94fa8a8c925e

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/373908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python的装饰器与设计模式中的装饰器模式

相信很多人在初次接触python中的装饰器时,会跟我一样有个疑问,这跟设计模式中的装饰器模式有什么区别吗?本质上是一样的,都是对现有对象,包括函数或者类的一种扩展。这篇文档将进行对比分析。 python的装饰器 装饰器…

Acwing 蓝桥杯 第一章 递归与递推

我上周在干什么,感觉我上周啥也没训,本来两天一次的vp也没v很寄啊,再这样下去真不行了先总结一下如何爆搜:先去确定好枚举的对象枚举的对象很重要!!这直接影响了复杂度然后就是去想递归树就好了一、确定状态…

基于VSG的预同步并离网控制MATLAB仿真模型

MATLAB2019b主要模块:并网逆变器VSG控制预同步控制电流电流双环控制锁相环、三相准PR控制、PWM0.65秒开始并网运行!!!仿真模型:逆变器输出电压、电流波形。电压为单相(可观察相位情况)&#xff…

【逐步剖C】-第八章-指针进阶-下

前言:在文章【逐步剖C】-第八章-指针进阶-上与指针初阶中我们介绍了有关指针较为全面的知识,本篇文章主要从指针和数组相关试题出发,进一步巩固对指针的学习。接下来,让我们开始吧。 一、“真假”数组名 前言:这一部…

【每日一题】集合汇总 集合面试题

集合前言:图片一、集合分类1、实现 Collection 接口2、实现 Map 接口二、实现类定义1、ArrayList(非线程安全)2、LinkedList(非线程安全)3、HashSet(非线程安全)4、TreeSet(非线程安…

Linux学习(8.6)文件与目录的默认权限与隐藏权限

目录 文件与目录的默认权限与隐藏权限 文件的默认权限:umask chattr (配置文件隐藏属性) lsattr (显示文件隐藏属性) 文件特殊权限: SUID, SGID, SBIT 观察文件类型:file 以下内容转载自鸟哥的Linux私房菜 文件与目录的默认权限与隐藏权…

比特数据结构与算法(第四章_中_续①)堆排序(详解)

本篇讲讲八大排序之一的:堆排序 概念复习:比特数据结构与算法(第四章_上)树和二叉树和堆的概念及结构_GR C的博客-CSDN博客一、堆排序的概念堆排序(Heapsort):利用堆积树(堆&#xf…

【博学谷学习记录】超强总结,用心分享 | 架构师 Tomcat源码学习总结

文章目录TomcatTomcat功能需求分析Tomcat两个非常重要的功能(身份)Tomcat的架构(设计实现)连接器的设计连接器架构分析核心功能ProtocolHandler 组件1.EndPoint组件EndPoint类结构图2.Processor组件Processor类结构图3.Adapter组件…

3.2 网站图的爬取路径

深度优先与广度优先方法都是遍历树的一种方法,但是网站的各个网页 之间的关系未必是树的结构,它们可能组成一个复杂的图形结构,即有回路。如果在前面的网站中每个网页都加一条Home的语句,让每个网页都能回到主界面,那么…

windows服务器实用(4)——使用IIS部署网站

windows服务器实用——IIS部署网站 如果把windows服务器作为web服务器使用,那么在这个服务器上部署网站是必须要做的事。在windows服务器上,我们一般使用IIS部署。 假设此时前端给你一个已经完成的网站让你部署在服务器上,别人可以在浏览器…

【Linux】-- 基于阻塞队列的生产者消费者模型

目录 前言 总结: 第一个问题的解决 基于BlockingQueue的生产者消费者模型 第二个问题的解决 wait的唤醒漏洞 深度理解生产者消费者模型 代码体现 锁的设计 总结: 前言 在多线程的条件变量遗留到此的问题。 #问:条件满足时&#xff0…

linux 防火墙管理-firewalld

什么是Firewalld 当前很多linux系统中都默认使用 firewalld(Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器)服务作为防火墙配置管理工具。 “firewalld”是firewall daemon。它提供了一个动态管理的防火墙&#x…

Java知识复习(五)JVM虚拟机

1、虚拟机的自动内存管理和C/C的区别 C/C开发程序时需要为每一个new操作去写对应的delete/free操作,不容易出现内存泄漏和溢出问题。而Java程序将内存控制权交给了Java虚拟机 2、JVM的运行机制 1、Java程序的具体运行过程如下: Java源文件被编译器编…

c盘爆满--如何清理电脑C盘

问题 c盘饱满很多天了,今天终于忍无可忍,开始展开对c盘的处理 c盘的基本处理有两步, 第一步,电脑系统清理 1,c盘右键属性,有个磁盘清理,好像是系统更新的一些缓存资源,可以直接清理 当然这只…

Hadoop MapReduce

目录1.1 MapReduce介绍1.2 MapReduce优缺点MapReduce实例进程阶段组成1.3 Hadoop MapReduce官方示例案例:评估圆周率π(PI)的值案例:wordcount单词词频统计1.4 Map阶段执行流程1.5 Reduce阶段执行流程1.6 Shuffle机制1.1 MapReduc…

BigScience bloom模型

简介项目叫 BigScience,模型叫 BLOOM,BLOOM 的英文全名代表着大科学、大型、开放科学、开源的多语言语言模型。拥有 1760 亿个参数的模型.BLOOM 是去年由 1000 多名志愿研究人员,学者 在一个名为“大科学 BigScience”的项目中创建的.BLOOM 和今天其他可用大型语言模型存在的一…

信号的FFT变换与加窗

1. fft 傅里叶变换 1.1 傅里叶变换的本质 数学上有一种公式叫做 泰勒展开: 泰勒公式: 其表达的思想,是任意一函数可以有多个指数函数构成 当指数函数的个数趋近于无穷多个,那么组合出来的函数将会逼近原函数; …

Pandas数据查询

Pandas数据查询 Pandas查询数据的几种方法 df.loc方法,根据行、列的标签值查询 df.iloc方法,根据行、列的数字位置查询 df.where方法 df.query方法 .loc既能查询,又能覆盖写入,强烈推荐! Pandas使用df.loc查询数据…

深度学习基础(二)-学习是怎么个回事

深度学习基础(一) 引入了一个 helloworld,提出了神经网络的简单关系,也就是一个基础公式 a(L) Sigmoid( a(L-1)*W(L) b(L)) a(L): 第L层神经元被激活之后 进行Sigmoid函数收敛 得到的值 b(L): 第L层神经元被激活阈值 W(L): 第L层神经元 与 第L-1层…

Android安卓中jni封装代码打包为aar

前文【Android安卓中jni与Java之间传递复杂的自定义数据结构】已经介绍jni编译c++代码且已经成功封装成java,但是c++是以源代码形式继承在app中,本文介绍如何将前述jni c++代码以隐藏源代码封装成aar的形式。 1、aar打包 1.1、新建module 按照流程 File -> New Module …