浅析如何把ER模型转换为关系模式

浅析如何把ER模型转换为关系模式本篇文章讲解的内容是“浅析如何把ER模型转换为关系模式”。在做ER图题目时,有些同学还是经常会做错,最主要原因是没有理解他们之间转换的原理。本文通过理论分析和例题来浅析这块知识点,当理解后,可以趁热打铁,把后面推荐的例题题目做一下,即可完全吸收这块内容。

大家好,又见面了,我是你们的朋友全栈君。

摘要:微信搜索【三桥君
说明:本篇文章讲解的内容是“浅析如何把ER模型转换为关系模式”。在做ER图题目时,有些同学还是经常会做错,最主要原因是没有理解他们之间转换的原理。本文通过理论分析和例题来浅析这块知识点,当理解后,可以趁热打铁,把后面推荐的例题题目做一下,即可完全吸收这块内容。

一、理论分析

通常情况下,单独的ER实体型转换为关系模式,那该模式里面只有属性。
例如:
在这里插入图片描述
学生( 学号,姓名,性别,出生年份,系,入学时间)

关于ER模型的转换,我们只需要记住三个转换准则:
1:1、1:N、M:N。

在这里插入图片描述
(1)1:1
当转换为关系模型时,在两个实体任选一个添加另一个实体的主键即可。
如图(a)情况,当我们转换成关系模式时,我们可以在实体型A模式中添加实体型B的主键;或者在实体型B模式中添加实体型A的主键。
例子:
校里一个班级只有一个正班长,而一个班长只在一个班中任职,则班级与班长之间具有一对一联系。
当转换为关系模式时,我们可以在班长关系中添加班级的主键(班级号);或者在班级关系中添加班长的主键(学号)。
(2)1:N
当转换为关系模型时,在N端添加另一端的主键。
如图(b)情况,当我们转换成关系模式时,我们得在实体型B模式中添加实体型A的主键。
例子:
一个班级中有若干名学生,而每个学生只在一个班级中学习,则班级与学生之间具有一对多联系。
当转换为关系模式时,我们得在学生关系中添加班级的主键(班级号)。
(3)M:N
当转换为关系模型时,需要将联系转换为实体,然后在该实体上加上另外两个实体的主键,作为联系实体的主键,然后再加上该联系自身带的属性即可。
如图(c)情况,当我们转换成关系模式时,我们要把“联系名”转换为实体模式,添加另外两个实体的主键,这两个主键合起来为“联系名”的主键,然后添加该联系自带的属性即可。
例子:
一门课程同时有若干个学生选修,而一个学生可以同时选修多门课程,则课程与学生之间具有多对多联系。
当转换为关系模式时,我们要把联系“选修”作为实体,当作选修关系,再添加课程的的主键(课程号)、学号的主键(学学号),(课程号,学号)合起来为选修的主键,然后添加选修自带的属性即可。

以上是二元联系的ER模型转换为关系模式,接下来介绍三元联系的ER模型转换为关系模式。

补充:
什么是二元联系、三元联系?
在这里插入图片描述
一般地,两个以上的实体型之间也存在着一对一、一对多和多对多联系。
在这里插入图片描述

(1)1:1:N
当转换为关系模型时,和1:N的情况是差不多的。我们只需将N端添加另外两端的主键即可。
(2)M:N:P
当转换为关系模型时,联系转换为联系实体,然后在联系实体上添加M端N端P端的主键,然后加上联系实体自身的属性。

二、例题

在这里插入图片描述
在这里插入图片描述
其他例题
数据库系统原理–第七章作业1–习题答案
E-R图向关系模型的转换实例详解
例题1
例题2
例题3
参考文章
【数据库设计】逻辑设计-ER模型转换为关系模型
https://blog.csdn.net/HaoDaWang/article/details/78098937?locationNum=4&fps=1


文章整理不易,如有帮助请点赞关注支持,谢谢!微信搜索【三桥君】,回复【关注】有我准备的一份资源大礼包。后续持续更新~~~

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Idea环境下使用JFinal开发Web项目入门详解(图文版)[通俗易懂]

    Idea环境下使用JFinal开发Web项目入门详解(图文版)[通俗易懂]最近看到网上有人推荐使用JFinal(官网:http://www.jfinal.com/)开发WEB + ORM项目,自己于是到官网学习JFinal,官方文档提供了使用eclipse开发Jfinal项目的步骤,只是对Idea做了简略说明,没有详细的介绍,对于智商低的小编来说,看完文档还是没有搭建起来,于是根据网上资料,小编自己写一篇入门详解,以便自己和他人学习。

    2022年6月17日
    65
  • QFile接口详解

    QFile接口详解1、QFile::QFile()构造一个没有名字的QFile对象2、QFile::QFile(constQString&name)构造一个以name为文件名的QFile对象。注:也可以QFile::QFile(),然后调用setName()方法来实现类似动作。3、bootQFile::atEnd()const[虚函数]如果已经到达文件末尾则返回TRUE,否则返回…

    2022年6月9日
    33
  • B样条曲线与贝塞尔曲线学习笔记

    B样条曲线与贝塞尔曲线学习笔记贝塞尔曲线基本公式:B(t)=∑i=0n(in)Pi(1−t)n−iti,t∈[0,1]基本公式:B(t)=\sum_{i=0}^{n}\Big({_i^n}\Big)P_i(1-t)^{n-i}t^i,t\in[0,1]基本公式:B(t)=i=0∑n​(in​)Pi​(1−t)n−iti,t∈[0,1]三次贝塞尔曲线:B(t)=P0(1−t)3+3P1t(1−t)2+3P2t2(1−t)…

    2022年6月18日
    27
  • 浅谈SQL游标

    浅谈SQL游标
    游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次以行或者多行前进或向后浏览数据的能力。我们可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许用户对指定位置的数据进行处理。游标允许你选择一组数据,通过翻阅这组数据记录——通常被称为数据集,检查每一个游标所在的特定的行。你可以将游标和局部变量组合在一起对每一个记录进行检查,当游标移动到下一个记录时,来执行一些外部操作。游标的另一个常见的用法是:保存查询结果以备以后使用。一个游标结果集是通过执

    2022年7月12日
    28
  • 查看是否安装apache_查找手机应用安装位置

    查看是否安装apache_查找手机应用安装位置如果你是问linux自动安装的APACHE的话,直接使用apachectl -v命令,如果告诉你没有这个方法就可以知道系统没有安装apache,如果已经安装了则显示apache的版本,至于安装目录,使用apachectl -c就可以知道了。

    2026年2月6日
    6
  • 一份Java学习路线图

    一份Java学习路线图Java学习路线图

    2022年5月16日
    39

发表回复

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

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