什么是ER图?数据库ER图基础概念整理

article/2025/5/1 16:58:02

前置知识

概述:数据模型的基本概念

模型就是对现实世界特征的模拟和抽象,数据模型是对现实世界数据特征的抽象。对于具体的模型人们并不陌生,如航模飞机、地图和建筑设计沙盘等都是具体的模型。最常用的数据模型分为概念数据模型和基本数据模型。

1)概念数据模型

概念数据模型也称为信息模型,是按用户的观点对数据和信息建模,是现实世界到信息世界的第一层抽象,强调其语义表达功能,易于用户理解,是用户和数据库设计人员交流的语言,主要用于数据库设计。这类模型中最著名的是实体联系模型,简称E-R模型

2)基本数据模型

基本数据模型是按计算机系统的观点对数据建模,是现实世界数据特征的抽象,用于DBMS的实现,不同的数据模型具有不同的数据结构形式,目前最常用的数据结构模型有层次 模型(Hierarchical Model)、网状模型(Network Model)、关系模型(Relational Model)和面向 对象数据模型(Objct Oriented Model)。其中,层次模型和网状模型统称为非关系模型。非关系模型的数据库系统在20世纪70年代非常流行,在数据库系统产品中占据了主导地位。

E-R模型(什么是E-R图)

    概念模型是对信息世界的建模。所以概念模型能够方便、准确地表示信息世界中的常用概念。概念模型有很多种表示方法,其中最常用的是 P.P.S.Chen 于 1976 年提出的 实体-联系 方法(Entity Relationship Approach)。该方法用E-R图来描述现实世界的概念模型,称为实体-联系模型(Entity-Relationship Model,E-R模型)

    E-R模型是软件工程设计中的一个重要方法,在数据库设计中,常用E-R模型来描述现实世界到信息世界的问题。因为它接近于人的思维方式,容易理解并且于计算机无关,所以用户容易接受,是用户和数据库设计人员交流的语言。但是, E-R模型只能说明实体间的语义联系,还不能进一步地详细说明数据结构。在解决实际应用问题时,通常应该先设计一个E-R模型,然后再将其转换成计算机能接受地数据模型。

E-R图中的主要构件:

 在E-R图中,实体集作为主码(或主键)的一部分属性名下面加 下画线 标明。另外,在实体集于联系的线段上标注联系的类型。

实体(Entity) 在E-R图中实体用矩形表示,通常在矩形框内写明实体名。实体是现实世界中可以区别于其他对象的“事件”或“物体”。例如,企业中每个人都是一个实体。每个实体由一组特性(属性)来表示,其中的某一部分属性可以唯一标识实体,如职工号。实体集是具有相同属性的实体集合,例如,学校所有教师具有相同属性,因此教师的集合可以定义为一个实体集,学生具有相同的属性,因此学生的集合可以定义为另一个实体集。

联系(Relationship) 在E-R模型中,联系用菱形表示。通常可在菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标注上联系的类型(1:1、1:* 或 *:* )。实体的联系分为实体内部的联系和实体与实体之间的联系。实体内部的联系反映数据在同一记录内部各字段间的联系。

1)两个不同实体之间的联系

两个实体之间的联系可分为3类:一对联系记为1:1,一对多联系记为1:*(或1:n),多对多联系记为  *:*(m:n)。

(1) 1:1。如果对于实体集A中的每一个实体, 实体集B中至多有一个实体与之对应;反之亦然,则称A与B具有一对一联系。

(2) 1:*。如果对于实体集A中的每一个实体, 实体集B中有n个实体(n≥0)与 之对应;反之, 对于实体集B中的每一个实体,实体集A中至多只有一个实体与之对应,则称A与B具有一对多联系。

(3) *:*。如果对于实体集A中的每一个实体, 实体集B中有n个实体(n≥0)与 之对应;反之,对于实体集B中的每一个实体,实体集A 中也有m个实体(m≥0)与之对应,则称A与B具有多对多联系。

2)两个以上不同实体集之间的联系

两个以上不同实体集之间存在 1:1:1、1:1:*、1:*:* 和 *:*:*的联系。

3)同一实体集内的二元联系

同一实体集内的各实体之间也存在 1:1、1:*和*:*的联系。

属性(attribute) 属性是实体某方面的特性。例如,职工实体集具有职工号、姓名、年龄、参加工作时间和通信地址等属性。每个属性都有其取值范围,如职工号为0001-9999的4位整型数,姓名为10位的字符串,年龄的取值范围为18-60等。在同一实体集中,每个实体的属性及其域是相同的,但可能取不同的值。E-R模型中的属性有如下分类。

1)简单属性和复合属性。

简单属性是原子的、不可再分的,复合属性可以细分为更小的部分(即划分为别的属性)。有时用户希望访问整个属性,有时希望访问属性的某个成分,那么在模式设计时可采用复合属性。例如,职工实体集的通信地址可以进一步分为邮编、省、市、街道。若不特别声明,通常指的是简单属性。

2)单值属性和多值属性。

前面所举的例子中,定义的属性对于一个特定的实体都只有单独的一个值。例如,对于一个特定的职工,只对应一个职工号、职工姓名,这样的属性叫作单值属性。但是,在某些特定情况下,一个属性可能对应一组值。例如,职工可能有0个、1个或多个亲属,那么职工的亲属的姓名可能有多个数目,这样的属性称为多值属性。

3) NULL属性。

当实体在某个属性上没有值或属性值未知时,使用NULL值。表示无意义或不知道。

4)派生属性。

派生属性可以从其他属性得来。例如,职工实体集中有“参加工作时间”和“工作年限”属性,那么“工作年限”的值可以由当前时间和参加工作时间得到。这里,“工作年限”就是一个派生属性。年龄可从身份证号中得出,因此年龄也属于派生属性。

扩充的 E-R 模型

    尽管基本的 E-R 模型是对大多数数据库特征建模,但数据库某些情况下的特殊语义,仅用基本的 E-R 模型无法表达清楚。所以引入了扩充的 E-R 模型,包括:弱实体、特殊化、概括和聚集等概念。

1)弱实体: 即一个实体的存在必须以另一个实体为背景,将这类实体称为弱实体。在扩展的 E-R 图中,弱实体用双边矩形表示。

 2)特殊化:某些实体在一方面具有一些共性,另一方面还具有各自的特殊性。

    这样,一个实体集可以按照某些特征区分为几个子实体。设有实体集E,如果 S 是 E 的某些真子集的集合,则称 S 是 E 的一个特殊化,E 是 S 的超类,S 是 E 的子类。图中,学生是超类,专科生、本科生和研究生是学生的子类。

    如果,所有子集 S1、S2、....、Sn的并集等于 E,则称 S 是 E 的全特殊化,否则是 E 的部分特殊化。

    如果,Si 与 Sj 的交集为空集,i ≠ j,则 S 是不相交特殊化,否则是重叠特殊化。

扩充 E-R 图中的主要构件:

.....部分内容来自《数据库系统工程师教程》


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

相关文章

ER图是啥?

文章转载自「开发者圆桌」一个关于开发者入门、进阶、踩坑的微信公众号 E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。 用矩形表示实体型,矩形框内写明实体名&…

ER图是什么?

ER图分为实体、属性、关系三个核心部分。实体是长方形体现,而属性则是椭圆形,关系为菱形。 ER图的实体(entity)即数据模型中的数据对象,例如人、学生、音乐都可以作为一个数据对象,用长方体来表示&#xff…

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

什么是 ER 图? 实体关系 (ER) 图是一种流程图,用于说明“实体”(如人、对象或概念)如何在系统中相互关联。ER 图最常用于设计或调试软件工程、商业信息系统、教育和研究领域的关系数据库。也称为 ERD 或 E…

【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为研究的时间长度,视自…