案例讲解如何将ER图转化为关系模型

案例讲解如何将ER图转化为关系模型要将 ER 图转化为关系模型 就得先弄清楚 ER 图中的基本元素 如果不清楚主体 属性 键等元素分别代表什么 那么下面谈转化准则的时候 大家可能会冒出很多问号 关于 ER 图的基本元素 此前在这篇文章中做过详细介绍 ER 图 实体关系图 怎么画 这次只拎其中 4 个元素 和下面的转化准则密切相关 出来 以下面这张 ER 图为例进行讲解 1 实体实际问题中客观存在的并且可以相互区别的事物称为实体 实体是现实世界中的对象 可以具体到人 事 物 对应上图中的矩形 如顾客 商品 管理员 平台 2 属性

要将ER图转化为关系模型,就得先弄清楚ER图中的基本元素。

如果不清楚主体、属性、键等元素分别代表什么,那么下面谈转化准则的时候,大家可能会冒出很多问号。

关于ER图的基本元素,此前在这篇文章中做过详细介绍▼

这次只拎其中4个元素(和下面的转化准则密切相关)出来,以下面这张ER图为例进行讲解:

案例讲解如何将ER图转化为关系模型

1)实体

实际问题中客观存在的并且可以相互区别的事物称为实体。实体是现实世界中的对象,可以具体到人,事,物。

对应上图中的矩形,如顾客、商品、管理员、平台。

2)属性

实体所具有的某个特性称为属性,在ER图中属性用来描述实体。

对应上图中的椭圆,如上图中的顾客,可以用“昵称”、“账号ID”、“地址”、“电话”等属性进行描述。

3)键

在描述实体的所有属性中,可以唯一标识每个实体的属性称为键。键也是属于实体的属性,作为键的属性取值必须唯一且不能“空置”。

比如:不重复的账号ID,就可以作顾客和管理员的“键”。

4)联系

世界上任何事物都不是孤立存在的,事物内部和事物之间都有联系的。

实体之间的联系通常有3种类型:一对一联系(1:1),一对多联系(1:N),多对多联系(N:M)。

对应上图中的平行四边形,如上传发布、下单、聘用。

 

接下来正式进入ER图→关系模式转换(同样以上述ER图为例):

案例讲解如何将ER图转化为关系模型

 

1、实体类型的转换

1)将每个实体类型转换成一个关系模式。

2)实体的属性即为关系模式的属性。

3)实体标识符即为关系模式的键。

 

2、二元联系类型的转换

1)如果实体间联系是1:1,可以在两个实体类型转换成的两个关系模式中任意一个关系模式的属性中加入另一个关系模式的键和联系类型的属性。

2)如果实体间联系是1:N,则在N端实体类型转换成的关系模式中加入1端实体类型的键和联系类型的属性。

这两句话听起来是不是有点绕,看下面这个例子(由于上述ER图没有1:1联系,为方便说明,我们假设平台和管理员之间的联系同时存在1:1和1:N)

对于1:1联系“聘用”,可以在“平台”关系模式中加入管理员账号ID(管理员账号ID是外键);

对于1:N联系“聘用”,则在“管理员”关系模式中加入商标和聘期两个属性(商标是1端的键):

3)如果实体间联系是M:N,则将联系类型也转换成关系模式,其属性为两端实体类型的键加上联系类型的属性,而键为两端实体键的组合。

对于M:N联系“下单”和“上传发布”,则生成两个新的关系模式:

 

3、一元联系类型的转换

和二元联系类型的转换类似。

 

4、三元联系类型的转换

和二元联系类型的转化逻辑基本是一样的:

一元联系和三元联系类型的转换就不举例了,大家可以自己去尝试下。

以上ER图均来自亿图图示模板社区

如果大家想测试自己是否已经理解了ER图到关系模式的转化,可以到模板社区找几张ER图来测试下▼

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211744.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午9:42
下一篇 2026年3月18日 下午9:42


相关推荐

  • 12 – 利用LinuxPTP进行时间同步(软/硬件时间戳) – 研一

    12 – 利用LinuxPTP进行时间同步(软/硬件时间戳) – 研一1、LinuxPTP源码下载sudogitclonegit://git.code.sf.net/p/linuxptp/codelinuxptpcdlinuxptpsudomakesudomakeinstall查看Usageptp4l-h延迟机制选项-A Auto,从E2E开…

    2022年7月21日
    31
  • 汉罗塔编程_c语言斐波那契数列递归算法

    汉罗塔编程_c语言斐波那契数列递归算法汉罗塔C语言算法新手入门(3分钟学会)前言我相信大家在刚接触C语言时对汉罗塔递归算法有些头痛,现在依旧头痛的小朋友不要担心,你只要学完这篇文章,我相信你对汉罗塔算法十分感兴趣的。一看就会,不信试试?具备知识在看这篇文章之前,首先你得学会C语言函数知识点,仅此而已。1.直接上代码#include<stdio.h>intmain(){voidmove(intn,c…

    2022年10月12日
    5
  • Hibernate关联关系映射[通俗易懂]

    Hibernate关联关系映射

    2022年2月3日
    47
  • 托马斯微积分第十一版_企业微服务第一部分

    托马斯微积分第十一版_企业微服务第一部分托马斯微积分第十一版无论您是大型企业还是小型初创企业 技术都是差异化的基础 如果企业不接受这一事实 他们就有失去市场份额的风险 并最终走向历史书籍 提供新的服务 产品或创新的创造力来改善现有服务的体验都在技术上有基础 IT 可以帮助您实现这一目标 但是 对于 IT 团队来说 任务是艰巨的 支持快速变化和创新的业务 紧跟带来价值的最新技术 同时为现有资产提供稳定和安全的环境 我们拥

    2026年3月16日
    2
  • c#多线程之QueueUserWorkItem[通俗易懂]

    c#多线程之QueueUserWorkItem[通俗易懂]编写代码的过程中经常会遇到需要并行操作的时候,此时就需要使用到多线程操作,.net中提供了多种操作多线程的方法,这里介绍最简单的一种—-通过ThreadPool.QueueUserWorkItem。首先看实例代码ThreadPool.QueueUserWorkItem(DoSomeThing);privatevoidDoSomeThing(objectstate)

    2026年3月9日
    5
  • linux 查看PHP版本

    linux 查看PHP版本php v

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号