十秒搞懂ER图中的对应关系

news2024/12/23 8:07:25

十秒搞懂ER图中的对应关系

  • ER图是什么
  • 实体是什么
  • 关系
  • 如何确认实体间的关系
    • 简单总结

ER图是什么

实体关系图Entity-Relationship Diagram,简称ER图)是一种图形化的工具用于表示数据库中不同实体之间的关系和连接。ER图是数据库设计中常用的一种方法,旨在帮助人们可视化和理解数据模型、实体之间的联系以及数据流动

在ER图中,实体用矩形表示属性用椭圆或矩形中的文本表示关系用菱形表示,线条表示实体之间的连接和关系。ER图提供了一种直观的方式来描述实体、属性和关系之间的结构,从而使数据库设计人员、开发人员和其他相关人员更容易共享和沟通数据库的设计意图。

实体是什么

上面描述中我们提到了实体,那么实体到底是什么呢?

在数据库设计中,“实体” 是指现实世界中独立存在并具有独特属性的事物或对象。每个实体都可以在数据库中表示为一个表,而每个表的行对应于实体的具体实例

实体可以是物理对象,如人、车辆、产品等,也可以是抽象概念,如订单、课程、事件等。每个实体通常具有一些属性,这些属性用于描述实体的特征。例如,一个 “人” 实体可能具有属性如姓名、年龄、性别等。

关系

那么实体间的关系,有哪些呢

在数据库设计中,一对一(One-to-One)、一对多(One-to-Many)和多对多(Many-to-Many)是常见的实体关系类型,用于描述不同实体之间的连接和关系。下面我会详细解释每种关系,并举例说明:

一对一关系(One-to-One):
一对一关系表示一个实体在一个表中与另一个实体在另一个表中存在唯一对应关系每个实体在一个表中只能与一个实体在另一个表中关联,反之亦然。这种关系常用于描述具有一一对应关系的情况,如身份证与个人信息之间的关系。

在这里插入图片描述
具体到数据库中的具体表现为:
在这里插入图片描述

举例:假设有一个 “人员” 表和一个 “身份证” 表,每个人员只有一个唯一的身份证号,每个身份证号也只对应一个人员。

一对多关系(One-to-Many):
一对多关系表示一个实体在一个表中可以与多个实体在另一个表中关联每个实体在一个表中可以对应多个实体在另一个表中,但每个实体在另一个表中只能关联一个实体。这种关系常用于描述主表与从表之间的关系,如客户与订单之间的关系。

在这里插入图片描述
具体到数据库中的具体表现为:
在这里插入图片描述

举例:假设有一个 “客户” 表和一个 “订单” 表,每个客户可以拥有多个订单,但每个订单只属于一个客户。

多对多关系(Many-to-Many):
多对多关系表示多个实体在一个表中可以与多个实体在另一个表中关联。这种关系需要使用一个中间表来建立连接,中间表中存储了两个实体之间的对应关系。这种关系常用于描述多对多关联的情况,如学生与课程之间的关系。
在这里插入图片描述
具体到数据库中的具体表现为:

在这里插入图片描述

举例:假设有一个 “学生” 表和一个 “课程” 表,一个学生可以选择多门课程,而一门课程也可以被多名学生选择。这种关系需要使用一个中间表来记录学生和课程之间的对应关系。

如何确认实体间的关系

看完以后是不是,觉得脑子有点大,不太清楚怎么确定关系?没事,我当时遇到也是这样,不过在我绞尽脑汁以后,终于悟出来了!如何快速确定关系!
在这里插入图片描述
具体的办法就是,使用连接 - join on确定各实体间的关系。比如现在我现在有一张学生表(student)、一张课程表(class)、一张教师表(teacher),现实逻辑是,学生可以选择课程,老师可以执教课程

如何快速确定其中的学生 - 课程、课程 - 老师的关系呢?

很简单,用学生表里面的一条数据左联接查询课程表里面的数据:

select * from student left join class on student.classID = class.ID 
where student.ID = 1001

如果返回多行,说明学生表和课程表是一对多的关系,表示一个学生可以选择多门课程。然后我们再反向左连接一下,用课程表里面的一条数据,左连接一个学生表的数据:

select * from class left join student on class.ID = student.classID 
where class.ID = 202310031

如果返回多行,说明课程表和学生表也是一对多的关系,表示一个课程可以有多个学生参与。

那么表明两个表中的每一行对应另一表中的多行数据,这就很简单了,很明显符合上面描述的:

在这里插入图片描述
学生 - 课程的关系就是多对多关系了。

以上述方法确定 老师 - 课程关系,

select * from teacher left join class on teacher.ID = class.teacherID 
where teacher.ID = 20230012

返回多行结果,表明一个老师可以执教多门课程,一对多关系

select * from class left join teacher on class.teacherID = teacher.ID 
where class.ID = 202310031

返回一行结果,表明一门课程只能有一个教师执教,一对一关系

综合上述的结果,很明显符合上图中的:
在这里插入图片描述
那么这里的老师 - 课程关系就是一对多关系了

简单总结

两个结果返回的情况以及对应关系:
都是一行,那就是一对一关系
其中一个为多行,另一个为一行,那就是一对多关系
都是多行跟多行,那就是多对多关系

下课!

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

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

相关文章

Ubuntu系统没有声音

现象 新按转的Ubuntu系统没有声音,怀疑是声卡选择的问题 解决方法 1、在终端输入alsamixer命令 2、按下F6键选择声卡 不要选择NVidia,而是选择HD-Audio 3、将所有音量调到最大,把disable调成enable

2023-08-14 linux 串口终端输入长命令不换行,覆盖前面内容,stty命令设置串口终端行列数

一、linux 串口终端输入长命令不换行,覆盖前面内容,现象如下图: 二、解决方法:用stty 命令设置行列数 stty columns 200 stty rows 10三、参考文章 https://www.cnblogs.com/goloving/p/15170537.html 常用Linux串口设备操作命…

Tomcat多实例部署及nginx+tomcat的负载均衡和动静分离

Tomcat多实例部署 安装 jdk、tomcat(流程可看之前博客) 配置 tomcat 环境变量 [rootlocalhost ~]# vim /etc/profile.d/tomcat.sh#tomcat1 export CATALINA_HOME1/usr/local/tomcat/tomcat1 export CATALINA_BASE1/usr/local/tomcat/tomcat1 export T…

达梦数据库(dm8) 在Centos7环境 单节点安装

国产数据库-达梦 一、环境详情二、Centos7 参数优化三、创建用户四、开始安装 当前安装 在指定版本环境下 测试,仅供参考 一、环境详情 软件版本 软件版本下载地址Centos 7CentOS Linux release 7.9.2009 (Core) x86达梦数据库dm8_20230418_x86_rh6_64.zip 节点分配…

html2canvas生成图片地址Base64格式转成blob在转成file(二进制)可正常发送(保姆教程,复制粘贴可用)

开始: 最终结果: 1. html2canvas方法生成的图片地址已Base64编码形式放在img标签src中可直接展示生成的图片(注意页面标签获取位置,还有个setTimeout页面渲染需要时间) setTimeout(function () {var result {};v…

最新Anaconda安装-保姆级教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、Anaconda下载 二、使用步骤 手动配置环境变量 (上面选择just me和默认配置的可以跳过这一步) 简要说明五条路径的用途:这五…

Spring(三):Spring中Bean的生命周期和作用域

前言 在 Spring 中,那些组成应用程序的主体及由 Spring IOC 容器所管理的对象,被称之为 bean。简单地讲,bean 就是由 IOC 容器初始化、装配及管理的对象,除此之外,bean 就与应用程序中的其他对象没有什么区别了。而 b…

金蝶云星空和易快报单据接口对接

金蝶云星空和易快报单据接口对接 来源系统:易快报 易快报是敏捷的企业报销费控与聚合消费平台,为企业提供移动报销、聚合消费、全程费控、预算管理、发票管理等一站式解决方案。同时,易快报可集成多家银行及第三方支付平台,打通对公对私付款&…

GD32F103VE使用软件扫描读取多通道AD值

GD32F103VE使用软件扫描读取多通道AD值。 GD32F103的ADC为12位AD转换器,ADC转换结果保存在16位数据寄存器中; 模拟输入通道: 16个外部模拟输入通道; 1个内部温度传感器通道(Vsense) 1个内部参考电压输入通道(VrefInt) ADC的VDDA电源引脚需要接入3.3V; ADC输入模拟…

Algorithem Review 5.2 图论

网络流 设源点为 s s s,汇点为 t t t,每条边 e e e 的流量上限为 c ( e ) c(e) c(e),流量为 f ( e ) f(e) f(e)。割 指对于某一顶点集合 P ⊂ V P \subset V P⊂V,从 P P P 出发指向 P P P 外部的那些原图中的边的集合&a…

WMS系统出库操作规范:提高效率与准确性的关键

WMS系统出库管理是指通过仓库管理系统(Warehouse Management System,简称WMS)对仓库中的货物进行出库操作的管理过程。WMS系统是一种利用自动化和数字化技术提高仓库管理效率和准确性的工具,它提供了对仓库内货物的全面控制和可视…

CentOS7源码安装MySQL详细教程

😊 作者: Eric 💖 主页: https://blog.csdn.net/weixin_47316183?typeblog 🎉 主题:CentOS7源码安装MySQL详细教程 ⏱️ 创作时间: 2023年08月014日 文章目录 1、安装的四种方式2、源码安装…

selenium的环境搭建

selenium是一个自动化测试框架,主要针对web项目进行UI自动化。他的工作原理如下图: 那么我们在学习selenium之前就需要就行一个环境的搭建,就是要下载配置我们的浏览器驱动。进入正题: CNPM Binaries Mirror 在网站中选择对应自…

五种方法,教你如何在Mac上查看文件完整路径

在MacOS上,Finder显示文件默认是不带路径展示的,你进入某个文件夹只会显示文件夹的名称而已,如下图: 那如何获取或者显示文件的完整路径呢?在MacOS中有五种方法可以显示文件完整路径。 第一种:使用【终端】…

go入门实践四-go实现一个简单的tcp-socks5代理服务

文章目录 前言socks协议简介go实现一个简单的socks5代理运行与压测抓包验证 前言 SOCKS是一种网络传输协议,主要用于客户端与外网服务器之间通讯的中间传递。协议在应用层和传输层之间。 本文使用先了解socks协议。然后实现一个socks5的tcp代理服务端。最后&#…

excel填数据转json格式

定制化比较严重,按需更改 excel文件如下 代码 # -*- coding: utf-8 -*- import oss2 import shutil import sys import xlwt import xlrd import json from datetime import datetime, timedeltafile1 "C:\\Users\\cxy\\Desktop\\generate.xls" #打开表…

【Spring专题】手写简易Spring容器过程分析——引导篇

目录 前言说在前面阅读准备 思路整理手写源码示例一、手写前的准备1.1 注解1.2 测试Bean1.3 调用实例 二、构造方法(构建基本流程)三、实现scan()方法3.1 doGetScanPackage():获取扫描路径3.2 doLoadClassFromDiskAndScan():从电脑…

【100天精通python】Day34:使用python操作数据库_ORM(SQLAlchemy)使用

目录 专栏导读 1 ORM 概述 2 SQLAlchemy 概述 3 ORM:SQLAlchemy使用 3.1 安装SQLAlchemy: 3.2 定义数据库模型类: 3.3 创建数据表: 3.4 插入数据: 3.5 查询数据: 3.6 更新数据: 3.7 删…

24届最新计算机毕业设计选题推荐 -计算机专业毕业设计题目参考大全

大家好,我们是竹林可以(计算机毕ye设ji代做团队),大四的同学马上要开始毕业设计开题啦,大家要好好准备哦。 学长学姐们给大家详细整理了计算机毕设最新选题,我们专注毕ye设ji多年,积累了丰富的…

【设计模式——学习笔记】23种设计模式——状态模式State(原理讲解+应用场景介绍+案例介绍+Java代码实现)

文章目录 案例引入介绍基本介绍登场角色应用场景 案例实现案例一类图实现 案例二:借贷平台源码剖析传统方式实现分析状态修改流程类图实现 案例三:金库警报系统系统的运行逻辑伪代码传统实现方式使用状态模式 类图实现分析问题问题一问题二 总结文章说明…