实体关系 (ER) 图的几种不同风格的符号

article/2025/5/1 18:15:49

什么是 ER 图?

实体关系 (ER) 图是一种流程图,用于说明“实体”(如人、对象或概念)如何在系统中相互关联。ER 图最常用于设计或调试软件工程、商业信息系统、教育和研究领域的关系数据库。也称为 ERD 或 ER 模型,它们使用一组定义的符号,如矩形、菱形、椭圆形和连接线来描绘实体、关系及其属性的相互联系。它们反映了语法结构,实体作为名词,关系作为动词。

ER 图与数据结构图 (DSD) 相关,后者侧重于实体内元素的关系,而不是实体本身之间的关系。ER 图还经常与数据流图 (DFD) 结合使用,后者绘制流程或系统的信息流。

ER 模型的历史

Peter Chen(又名Peter Pin-Shan Chen)目前是匹兹堡卡内基梅隆大学的教员,因在1970年代为数据库设计开发ER建模而受到赞誉。在麻省理工学院斯隆管理学院担任助理教授期间,他于1976年发表了一篇开创性的论文,题为“实体关系模型:迈向数据的统一视图”。

从更广泛的意义上讲,对事物相互联系的描述可以追溯到最不古希腊的亚里士多德、苏格拉底和柏拉图的作品。最近在19世纪和20世纪哲学家逻辑学家的著作中可以看到这一点,如查尔斯·桑德斯·皮尔斯(Charles Sanders Peirce)和戈特洛布·弗雷格(Gottlob Frege)。

到1960年代和1970年代,查尔斯·巴赫曼(上图)和A.P.G.布朗与陈的方法的亲密前辈合作。巴赫曼开发了一种数据结构图,以他的名字命名为巴赫曼图。布朗发表了关于现实世界系统建模的著作。詹姆斯·马丁增加了ERD的改进。Chen,Bachman,Brown,Martin等人的工作也为统一建模语言(UML)的发展做出了贡献,该语言广泛用于软件设计。

实体关系图的使用

  • 数据库设计:ER 图用于在逻辑和业务规则(在逻辑数据模型中)以及要实现的特定技术(在物理数据模型中)方面对关系数据库进行建模和设计。在软件工程中,ER 图通常是确定信息系统项目需求的第一步。它稍后还用于对一个或多个特定数据库进行建模。关系数据库具有等效的关系表,并且可以根据需要以这种方式表示。

  • 数据库故障排除:ER 图用于分析现有数据库,以查找和解决逻辑或部署中的问题。绘制图表应该揭示出错的地方。

  • 业务信息系统:这些关系图用于设计或分析业务流程中使用的关系数据库。任何使用涉及实体、操作和相互作用的现场数据的业务流程都可能从关系数据库中受益。它可以简化流程,更轻松地发现信息并改善结果。

  • 业务流程再造:ER 图有助于分析业务流程重新设计中使用的数据库以及为新的数据库设置建模。

  • 教育:数据库是当今存储关系信息以用于教育目的和以后检索的方法,因此 ER 图在规划这些数据结构方面很有价值。

  • 研究:由于如此多的研究都集中在结构化数据上,因此ER图可以在建立有用的数据库来分析数据方面发挥关键作用。

ER 图的组件和功能

ER 图由实体、关系和属性组成。它们还描绘了基数,它用数字来定义关系。以下是词汇表:

实体

可定义的事物(例如人、对象、概念或事件),可以存储有关它的数据。将实体视为名词。示例:客户、学生、汽车或产品。通常显示为矩形。

实体类型:一组可定义的事物,例如学生或运动员,而实体将是特定的学生或运动员。其他示例:客户、汽车或产品。

实体集:与实体类型相同,但在特定时间点定义,例如第一天注册课程的学生。其他例子:上个月购买的客户,目前在佛罗里达州注册的汽车。相关术语是实例,其中特定的人或汽车将是实体集的实例。

实体类别:实体分为强、弱或关联。强实体可以仅由其自身的属性定义,而弱实体则不能。关联实体关联实体集中的实体(或元素)。

实体键:引用唯一定义实体集中的实体的属性。实体键可以是超级键、候选键或主键。超级键:一组属性(一个或多个),它们共同定义实体集中的实体。候选密钥:最小超级键,这意味着它具有尽可能少的属性数,仍然是超级键。一个实体集可以有多个候选键。主键:数据库设计者选择的用于唯一标识实体集的候选键。外键:标识实体之间的关系。

关系

实体如何相互作用或相互关联。将关系视为动词。例如,指定的学生可能会注册课程。这两个实体将是学生和课程,所描述的关系是注册的行为,以这种方式连接两个实体。关系通常直接在连接线上显示为菱形或标签。

递归关系:同一实体多次参与关系。

属性

实体的属性或特征。通常显示为椭圆形或圆形。

描述性属性:关系(相对于实体)的属性或特征。

属性类别:属性分为简单属性、复合属性、派生属性以及单值或多值属性。简单:表示属性值是原子的,不能进一步划分,例如电话号码。复合:子属性源于属性。派生:归因是计算或以其他方式派生自其他属性,例如出生日期的年龄。

多值:表示多个属性值,例如一个人的多个电话号码。

单值:只有一个属性值。这些类型可以组合,例如:简单单值属性或复合多值属性。

基数

定义两个实体或实体集之间关系的数值属性。三种主要的基本关系是一对一、一对多和多对多。一对一的例子是与一个邮寄地址关联的一个学生。一对多示例(或多对一,取决于关系方向):一个学生注册多个课程,但所有这些课程都有一行返回该学生。多对多示例:学生作为一个小组与多个教职员工相关联,而教职员工又与多个学生相关联。

基数视图:基数可以显示为横向或同侧,具体取决于符号的显示位置。

基数约束:适用于关系的最小或最大数量。

映射自然语言

ER成分可以等同于词性,就像Peter Chen所做的那样。这显示了 ER 图与语法图的比较:

  • 普通名词:实体类型。示例:学生。

  • 专有名词:实体。示例:莎莉·史密斯。

  • 动词:关系类型。示例:注册。(例如,在课程中,这将是另一种实体类型。

  • 形容词:实体的属性。示例:大二。

  • 副词:关系的属性。示例:数字方式。

数据库查询语言 ERROL 实际上模仿自然语言构造。ERROL基于重塑的关系代数(RRA),并与ER模型一起工作,捕获其语言方面。

ERD 符号

有几种符号系统,它们相似,但在一些细节上有所不同。

陈记谱风格

鱼尾纹/马丁/信息工程风格

巴赫曼风格

IDEF1X 样式

巴克风格

例子

以下是在每个系统中制作的 ERD 图的示例。

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

ER 模型和数据模型通常最多绘制三个详细级别:

  • 概念数据模型:包含最少详细信息的最高级别视图。它的值是显示模型的整体范围并描绘系统体系结构。对于范围较小的系统,可能没有必要绘制。相反,请从逻辑模型开始。

  • 逻辑数据模型:包含比概念模型更多的细节。现在定义了更详细的运营和交易实体。逻辑模型与实现它的技术无关。

  • 物理数据模型:可以从每个逻辑模型开发一个或多个物理模型。物理模型必须显示足够的技术细节才能生成和实现实际数据库。

请注意,其他类型的图表(如数据流图)中也存在类似的详细信息和范围级别,但它与软件工程的三架构方法形成鲜明对比,后者对信息的划分略有不同。有时,工程师会使用其他层次结构分支ER图,为数据库设计添加必要的信息级别。例如,他们可以通过向上扩展超类和向下扩展子类来添加分组。

ER 图和模型的局限性

  • 仅适用于关系数据:明白目的是展示关系。ER 图仅显示该关系结构。

  • 不适用于非结构化数据:除非将数据清晰地划定为不同的字段、行或列,否则 ER 图的用途可能有限。半结构化数据也是如此,因为只有部分数据是有用的。

  • 难以与现有数据库集成:由于体系结构不同,使用 ER 模型与现有数据库集成可能是一个挑战。

如何绘制基本的 ER 图

  1. 目的和范围:定义要分析或建模的内容的目的和范围。

  2. 实体:确定涉及的实体。准备就绪后,开始将它们绘制成矩形(或系统选择的形状)并将它们标记为名词。

  3. 关系:确定实体如何关联。在它们之间画线以表示关系并标记它们。有些实体可能不相关,这很好。在不同的符号系统中,关系可以用菱形、另一个矩形或直接在连接线的顶部标记。

  4. 属性:通过添加实体的关键属性来更详细地分层。属性通常显示为椭圆形。

  5. 基数:显示关系是 1-1、1 多还是多对多。

有关 ER 图的更多提示

  1. 显示您的目的所需的详细程度。您可能需要绘制概念、逻辑或物理模型,具体取决于所需的细节。(有关这些级别的说明,请参阅上文。

  2. 注意冗余实体或关系。

  3. 如果要解决数据库问题,请注意关系中的漏洞或缺少的实体或属性。

  4. 确保标记了所有实体和关系。

  5. 您可以来回转换关系表和 ER 图,如果这有助于您实现目标。

  6. 确保 ER 图支持您需要存储的所有数据。

  7. ER 图可能有不同的有效方法。只要它为其范围和目的提供必要的信息,它就很好。


http://chatgpt.dhexx.cn/article/BTWsBi9E.shtml

相关文章

【C】C语言int型数组转化为char型字符串数组

文章目录 C语言int型数组转化为char型字符串数组一、代码二、结果三、说明 C语言int型数组转化为char型字符串数组 一、代码 /* 程序功能&#xff1a;int型数组转化为char型字符串数组*/ #include <stdio.h> #include <stdlib.h> #include <math.h> int nu…

C语言:int型数据向char型数据的强制类型转换原理

int型数据向char型数据强制转换原理 C语言中int是四个字节&#xff0c;char是1个字节&#xff0c;占字节多的int型向字节少的char型强制类型转换的原理就是字节截断。 转换时系统会自动删除高位的三个字节&#xff0c;只留下低位的一个字节&#xff0c;这就是int型想char型转换…

数据类型的大小(int型为例)

上图 int型能表示的范围是-2147483648&#xff08;-215&#xff09; – 2147483647(215 -1) int型占系统分配的4个字节&#xff08;不同系统不一样&#xff09;8个位&#xff0c;最高一位为符号位。10000000时表示-215 、01111111时表示215 - 1 unsigned int 为无符号整型范围…

【C】C语言判断字符串是否是int型正整数

文章目录 【C】C语言判断字符串是否是int型正整数前言一、代码二、结果 【C】C语言判断字符串是否是int型正整数 前言 此程序功能主要是实现&#xff1a;判断在CMD下输入的字符串是是否是int型的正整数。 在判断字符是数值时还可以了解一下isdigit()函数&#xff0c;可…

C:int型指针

2019独角兽企业重金招聘Python工程师标准>>> 环境:mint 13 64bit,gcc 4.6.3。 如无特殊,均为`gcc test.c -o test`的类似方式编译源文件。 在这里主要讨论`int*`,`int**`,`char*`,`char**`等这些比较基本的指针类型,主要以int类型为示例。在64bit环境中地址用…

java float强制转换int类型_float型怎样强制转换成int型

展开全部 运行时所有数据都存储在内存中&#xff0c;32313133353236313431303231363533e4b893e5b19e31333436316236所以相同很正常&#xff0c;float转int会将小数后面的数舍去。 比如定义了一个floata&#xff0c;强制转换成int可写成(int)a。如果是一个表达式&#xff0c;那么…

mysql int 可以是负数吗_int型包括负数吗

展开全部 可以包含负值也可以不包含负值。 在计算机科学中&#xff0c; int()函数是整e69da5e887aa62616964757a686964616f31333433623235数数据类型的数据&#xff0c;积分数据类型可以具有不同的大小&#xff0c;并且可以允许或不允许包含负值。 整数通常在计算机中表示为一组…

int型溢出问题

目录 问题原理奇怪的循环计算机的编码循环的产生 如何识别溢出乘法加法 参考文献 问题 在执行乘法时&#xff08; i ! ∗ 2 i , ( i 0 , 1 , . . . , n − 1 ) i!*2^{i},(i0,1,...,n-1) i!∗2i,(i0,1,...,n−1)&#xff09;&#xff0c;当计算的值超过了int上限后却变成了负数…

C++中int型和string型的相互转换

一、int型转string型 1、to_string函数&#xff0c;头文件#include<string> c11标准增加了全局函数std::to_string: string to_string (int val); string to_string (long val); string to_string (long long val); string to_string (unsigned val); string to_s…

ArcGIS:使用栅格计算器修改特定条件下的值,如将小于100的数修改为0

使用ArcGIS中的栅格计算器可以将特定条件的值进行修改&#xff0c;如原来栅格值的范围为10-1000&#xff0c;可以通过条件语句将其修改为10-100。 修改的时候需要用到栅格计算器中的con条件语句&#xff0c;用法如下&#xff1a; con(条件,满足条件的部分赋值赋值,不满足条件的…

arcgis栅格计算器python教程_arcgis栅格计算器的使用

原标题&#xff1a;arcgis栅格计算器的使用 arcgis栅格计算器的使用 栅格计算器的灵活运用可以解决获取的数据的很多问题和应用。 以dem高程数据为例&#xff0c;可以运用栅格计算器可以直接获取坡度坡向等结果&#xff0c;但是很多时候是需要连续计算多次获得想要的结果。 …

arcgis栅格计算器:将栅格图层指定值设置为Nodata及栅格图层求交

1. 首先需要找到栅格计算器的位置 2. 将栅格图层的某个数据设置为Nodata setnull函数可将特定的栅格值赋值为空值 SetNull("这里是栅格图像名称"0 & 4,1)说明&#xff1a; 将栅格图像中0和4的栅格设置为Nodata&#xff0c;并将其他值设置为1。 结果显示&#x…

【ArcGIS风暴】栅格计算器(Raster Calculator)运算出现错误问题及解决方案汇总

栅格计算器(Raster Calculator) 是一种空间分析函数工具,可以输入地图代数表达式,使用运算符和函数来做数学计算,建立选择查询,或键入地图代数语法。只有熟练的运用并记忆一些常用的公式,才能很好的运用栅格计算器。在使用的过程中,容易出现这样那样的问题,本文就把栅…

C# VS2010 ArcEngine 栅格计算器

本来一开始我的想法是把栅格计算器中的几种功能都封装起来&#xff0c;最后拼成栅格计算器的完整功能&#xff0c;但在实践过程中我不得不面对&#xff0c;这样造成的代码的复杂度上升&#xff0c;公式只能一步步计算的问题。最终使用了GP工具中的RasterCalculator。 注意&…

arcgis栅格计算器python教程_ArcGIS教程:栅格计算器

摘要 在类似计算器的界面中&#xff0c;使用Python语法构建和执行单个地图代数表达式。 插图 用法 栅格计算器工具用于创建和执行地图代数表达式以输出一个新的栅格数据。 可在图层和变量列表中选择要用在表达式中的数据集和变量。并且&#xff0c;通过在工具对话框中单击相…

arcgis 利用栅格计算器计算 土地转移矩阵

可以前往“地信遥感数据汇”获取更多数据。 https://www.gisrsdata.com/ 如果你要做土地利用变化的研究&#xff0c;那就会用到土地转移矩阵。而土地利用转移矩阵常规有两个办法。 第一种办法就是利用ENVI里面的change detection statics工具。 第二种办法就是利用arcgis里面…

基于arcgis栅格计算器进行连续时间序列NDVI的Slope趋势分析

一、趋势分析法简介 趋势分析法是一种通过对随时间变化的变量进行线性回归分析&#xff0c;从而来预测其变化趋势的方法。其计算方法如下&#xff1a; 式中&#xff0c;Slope为像元回归方程的斜率&#xff0c;NDVI i为第i年的NDVI的平均值&#xff0c;n为研究的时间长度,视自…

【使用ArcGIS的栅格计算器批量计算波段】

使用ArcGIS的栅格计算器批量计算波段 一、先建立一个模型1.1 创建变量 二、将栅格计算器工具拖进模型里面&#xff0c;将路径安排好。保存模型。三、勾选模型参数。四、在目录里面找到该模型&#xff0c;右键选择 “批处理”五、将这一行选中&#xff0c;粘贴中Excel中六、根据…

ArcGIS 栅格计算器 Con用法

ArcGIS 栅格计算器 Con用法 前言栅格计算器 Con函数用法ArcGIS 案例操作 关注公众号&#xff0c;分享GIS知识、ArcGIS教程、SCI论文与科研日常等 前言 栅格计算器 栅格计算器界面如图&#xff0c;主题包括五部分&#xff1a;1&#xff09;ArcGIS加载的图层&#xff1b;2&…

【ArcGIS】模型构建--保姆级教程|批量掩膜、栅格计算器、裁剪、波段集统计等

问题来源&#xff1a; 在进行数据处理时&#xff0c;我们会需要对多年数据进行处理&#xff0c;或者是一年的多个实相的数据进行处理&#xff0c;那么如何批量、少手动的操作呢&#xff1f; 说在前面&#xff1a; 1&#xff1a;采用的ArcGIS10.0. 2&#xff1a;以批量掩膜提取…