E-R图_画E-R图

E-R图_画E-R图E-R图也称实体-联系图(Entity Relationship Diagram),它提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。

E-R图

E-R图也称实体-联系图(Entity Relationship Diagram),它提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。

E-R图是描述现实世界关系概念模型的有效方法。是表示概念关系模型的一种方式。

  • 用“矩形框”表示实体,矩形框内写明实体名称;
  • 用“椭圆图框”或圆角矩形表示实体的属性,并用“实心线段”将实体的属性与相应关系的“实体”连接起来;
  • 用”菱形框“表示实体之间的联系成因,在菱形框内写明联系名,并用”实心线段“分别与有关实体连接起来,同时在”实心线段“旁标上联系的类型(1:1,1:n,m:n)。
    E-R图

E-R图的成分

在 E-R图中有如下四个成分:

  • 矩形框:表示实体,在框中记入实体名。
  • 菱形框:表示联系,在框中记入联系名。
  • 椭圆形框:表示实体或联系的属性,将属性名记入框中。对于主属性名,则在其名称下划一下划线。
  • 连线:
    • 实体与属性之间;
    • 实体与联系之间;
    • 联系与属性之间。

连线用直线相连,并在直线上标注联系的类型。

  • 对于一对一联系,要在两个实体连线方向各写1;
  • 对于一对多联系,要在一的一方写1,多的一方写N;
  • 对于多对多关系,则要在两个实体连线方向各写N,M。

构成E-R图的要素

构成 E-R图的 3 个基本要素是:实体、属性和联系。

实体

对于一个实体,我们要指明实体名和属性名集合。比如:学生(学号,姓名,性别,所在院系,入学时间)

一般认为,客观上可以相互区分的事物就是实体,实体可以是具体的人和物,也可以是抽象的概念与联系。

用实体名及其属性名集合来抽象和刻画同类实体。

比如:学生张三、学生李四都是实体。

属性

一个具体事物,总是有许许多多的性质与关系,我们把一个事物的性质与关系,都叫作事物的属性。

事物与属性是不可分的,事物都是有属性的事物,属性也都是事物的属性。这里的事物,也可以称为实体。

实体有属性,联系也可以有属性。

联系有属性,这种情况多出现在多对多联系中,例如:学生“ 选修” 某门课程所取得的成绩,既不是学生的属性也不是课程的属性。由于“ 成绩” 既依赖于某名特定的学生又依赖于某门特定的课程,所以成绩是学生与课程之间的联系“ 选修”的属性。

联系

联系也称关系,信息世界中反映实体内部或实体之间的关联。

  • 实体内部的联系通常是指:组成实体的各属性之间的联系;
  • 实体之间的联系通常是指:不同实体集合之间的联系。

实体不会是单独存在的,实体和其他的实体之间存在着联系。比如:

  • 老师 和 学生:老师给学生授课,存在授课关系;
  • 学生 和 课程:学生选课,存在选课关系。

一般性约束

实体-联系数据模型中的联系,存在 3 种一般性约束:一对一约束(联系)、一对多约束(联系)和多对多约束(联系),这 3 种一般性约束用来描述实体集合之间的数量约束。

一对一联系(1∶1)

对于实体集合 A 和实体集合 B,若 A 中的每一个值在 B 中至多有一个实体值与之对应,反之亦然,则称实体集 A 和 B 具有一对一的联系。

反之亦然的意思是:若 B 中的每一个值在 A 中至多有一个实体值与之对应。

一个学校只有一个正校长,而一个校长只在一个学校中任职,我们就说:学校与校长之间具有一对一联系。

  • 实体集合 A:{校长1,校长2,校长3,校长4….}
  • 实体集合 B:{学校1,学校2,学校3,学校3….}

一对多联系(1∶N)

对于实体集合 A 和实体集合 B,若 A 中的每一个值在 B 中有多个实体值与之对应,反之 B 中每一个实体值在 A 中至多有一个实体值与之对应,则称实体集 A 和 B 具有一对多的联系。

存在一对多联系的例子:

  • 教师与课程之间存在一对多的联系“教”,一位教师可以教多门课程,但是一门课程只能由一位教师来教。
  • 专业与学生之间存在一对多的联系,一个专业中可以有多名学生,但一名学生只能对应一个专业。

多对多联系(M∶N)

对于实体集合 A 和实体集合 B,若 A 中每一个实体值在 B 中有多个实体值与之对应,反之亦然,则称实体集 A 与实体集 B 具有多对多联系。

反之亦然的意思是:若 B 中每一个实体值在 A 中有多个实体值与之对应。

存在多对多联系的例子:

  • 学生与课程之间存在多对多的联系,一名学生可以学多门课程,并且一门课程可以有多名学生来学。

联系是随着数据库语义而改变的,假如有如下 3 种语义规定,则有不同的联系:

  • 规定一个部门只能有一个经理,一个员工只能是一个部门的经理。在这种规定下,经理与部门之间的“管理”联系是一对一的。(一个经理只能管理一个部门,一个部门只能被一个经理管理)
  • 规定一个部门只能有一个经理,但一个员工可以是多个部门的经理。在这种规定下,经理与部门之间的“管理”联系是一对多的。(一个经理能管理多个部门,一个部门只能被一个经理管理)
  • 规定一个部门可以有多个经理,并且一个员工可以是多个部门的经理。在这种规定下,经理与部门之间的“管理”联系是多对多的。(一个经理能管理多个部门,一个部门能被多个经理管理)

作E-R图的步骤

  1. 确定所有的实体;
  2. 确定实体应该包含的属性;
  3. 确定实体之间的联系;
  4. 确定实体的关键字,用下划线在属性上标明关键字的属性组合;
  5. 确定联系的类型,并在旁边标注好是 1 还是 n。

关键字可以理解为主键,用来唯一标识一行记录。

关键字可以由一个属性构成,也可以由多个属性构成。

原文地址:https://www.cnblogs.com/feiyu2/archive/2022/06/22/E-R_diagram.html

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

(0)
上一篇 2023-05-24
下一篇 2023-05-24

相关推荐

  • flink 并行度和分区的关系_flink并行度

    flink 并行度和分区的关系_flink并行度Flink设置并行度的几种方式 代码中设置setParallelism() 全局设置: env.setParallelism(3); 算子设置(部分设置): sum(1).setParallelism

    2023-02-07
    105
  • 如何找到Hive提交的SQL相对应的Yarn程序的applicationId[亲测有效]

    如何找到Hive提交的SQL相对应的Yarn程序的applicationId[亲测有效]最近的工作是利用Hive做数据仓库的ETL转换,大致方式是将ETL转换逻辑写在一个hsql文件中,脚本当中都是简单的SQL语句,不包含判断、循环等存储过程中才有的写法,仅仅支持一些简单的变量替换,比如

    2023-02-24
    84
  • MariaDB下载安装–mysql(win10)

    MariaDB下载安装–mysql(win10)MySQL环境配置(WINDOWS10) 下载mysql 链接: MariaDB. 首先打开文件资源管理器,右击此电脑,点击属性 选择高级系统设置 点击环境变量,在系统变量中新建MYSQL_HOME…

    2023-02-09
    113
  • mysql解压版简洁式本地配置方式「建议收藏」

    mysql解压版简洁式本地配置方式「建议收藏」mysql 简洁式安装步骤 1. 设置全局变量 解压mysql压缩包到指定位置, 然后配置全局变量, 在 path 中添加全局变量, 值为 mysql 根目录下 bin 目录路径, 比如: D:co

    2023-05-29
    98
  • Python脚本编写原始标题

    Python脚本编写原始标题Python是一门十分强大的编程语言,在众多开发领域都有广泛的应用。其中,Python脚本编写是开发中的常见需求,将代码逻辑组织成脚本可以让开发人员高效地完成某些自动化任务。Python脚本编写原始标题是Python脚本编写过程中不可避免的一部分,因为这可以帮助开发者更好地组织代码文件。

    2024-05-11
    6
  • Python中使用字典实现高效查找

    Python中使用字典实现高效查找Python中的字典是一种无序的、可变的、可迭代的数据类型。字典中的元素都是用键值对的形式来表示,每个键值对之间用冒号隔开,不同的键值对之间用逗号隔开,整个字典需要用花括号{}来包裹。

    2023-12-29
    67
  • 使用conda安装numpy

    使用conda安装numpy NumPy是Python中重要的科学计算库之一。其提供了高效的数组操作和科学计算函数。在Python中使用NumPy可以方便地进行各种数学计算和数据处理,并且可以很好地集成到Python生态环境中。

    2024-04-23
    18
  • 时序数据库 Apache-IoTDB 源码解析之前言(一)[通俗易懂]

    时序数据库 Apache-IoTDB 源码解析之前言(一)[通俗易懂]IoTDB 是一款时序数据库,相关竞品有 Kairosdb,InfluxDB,TimescaleDB等,主要使用场景是在物联网相关行业,如:车联网、风力发电、地铁、飞机监控等等,具体应用案例及公司详…

    2023-01-26
    103

发表回复

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