什么是ER模型?
实体关系(ER)模型是比较高层级的数据模型图。ER建模可帮助您系统地分析数据需求,以生成设计良好的数据库。实体关系模型代表现实世界中的实体及其之间的关系。在实现数据库之前,最好先完成ER建模。
ER模型的历史
ER图一般用可视化的工具展现,这样有助于表示和理解ER模型。它由Peter Chen在1971年提出的,旨在创建一个统一的约定,该约定可以用于表示关系数据库和网络结构。他的目的是将ER模型用作概念建模方法。
什么是ER图?
实体关系图(ERD)显示存储在数据库中的实体集的关系。换句话说,我们可以说ER图可以帮助您解释数据库的逻辑结构。乍一看,ER图看起来与流程图非常相似。但是,ER图包含许多专门的符号,其含义使该模型与流程图大相径庭。ER图是代表实体框架的一种基础结构。
关于ER图模型的事实:
- ER模型允许您绘制数据库设计
- 一般绘制ER图的工具都易于使用
- 广泛用于数据库设计
- 它是数据库逻辑结构的图形化表示
- 它可以帮助您识别系统中存在的实体以及这些实体之间的关系
为什么要使用ER图?
使用ER图的主要原因
- 帮助您定义与实体关系建模有关的术语
- 提供所有表应如何连接,每个表将包含哪些字段的预览
- 帮助描述实体、属性、关系
- ER图可转换为关系表,使您可以快速构建数据库
- ER图可被数据库设计人员用作在特定软件应用程序中实现数据的蓝图
- 通过ER图,数据库设计人员可以更好地理解数据库中包含的信息
- ER图可以让您将数据库的逻辑结构与业务用户进行交流
ER图的组成
该模型包含三个基本概念:实体、属性、关系。
例如,在大学的数据库中,我们可能具有学生、课程和讲师的实体。学生实体可以具有学号、姓名、归属系之类的属性。这些属性与课程和讲师都有关系。
什么是实体?
现实世界中无论是有生命还是无生命的事物,都很容易识别出来。企业可能需要在数据库中表示经营过程中发生的所有事情。可能是物理上的事情,或者仅仅是有关企业的事实,或者是现实世界中发生的事件。
实体可以是将数据存储在数据库中的位置、人、对象、事件或概念。实体的特征必须具有一个属性和一个唯一键。每个实体都由代表该实体的一些“属性”组成。
实体示例:
- 人员:员工,学生,患者
- 地点:商店,建筑物
- 对象:机器,产品和汽车
- 活动:销售,注册,续展
- 概念:帐户,课程
实体集
学生
实体集是一组相似类型的实体。这些实体在同一属性上可能共享有相似值。实体由其属性表示,所有属性都有其各自的值。例如,学生实体可以具有名称、年龄、班级作为属性。
实体示例
一所大学可能有一些系。所有这些系都聘请各种讲师,并提供几种专业。一些课程组成了每个专业。学生注册特定专业并学习各种课程。某个系的讲师会教学某门课程,每位讲师会教不同组的学生。
关系
关系是两个或多个实体之间的关联。例如,汤姆在化学系工作。
实体参与关系。我们可以通过动词或动词短语来识别关系。
例如:
- 您正在参加本讲座
- 我正在演讲
- 学生参加讲座
- 一位讲师正在做演讲。
弱实体
弱实体是没有关键属性的实体类型,可以通过考虑另一个实体的主键来唯一地标识它。为此,弱实体集需要参与动作,与其它实体发生关联。
在上述示例中,“Trans No”是ATM中一组交易的主键字段。
让我们通过将其与强实体进行比较来了解有关弱实体的更多信息。
|
强实体集 |
弱实体集 |
|
强实体集始终具有主键。 |
它没有足够的属性来构建主键。 |
|
它由一个矩形符号表示。 |
它由一个双矩形符号表示。 |
|
它包含一个由下划线符号表示的主键。 |
它包含一个用虚线下划线符号表示的部分键值。 |
|
强实体集的成员称为主导实体集。 |
弱实体集的成员称为从属实体集。 |
|
主键是其属性之一,有助于识别其成员。 |
在弱实体集中,它是强实体集的主键和部分键的组合。 |
|
在ER图中,使用菱形符号显示的两个强实体集之间的关系。 |
通过使用双菱形符号显示的一个强实体集和一个弱实体集之间的关系。 |
|
具有该关系的强实体集的连接线是单个。 |
连接弱实体集以识别关系的线是双线。 |
属性
它是实体类型或关系类型的单值属性,属性由椭圆表示。
例如,一个讲座可能具有以下属性:时间、日期、持续时间、地点等。
|
属性类型 |
描述 |
|
简单属性 |
简单属性无法进一步划分。例如,一个学生的联系电话。也称为原子值。 |
|
复合属性 |
可以分解复合属性。例如,学生的全名可以进一步分为名字,名字和姓氏。 |
|
派生属性 |
这种类型的属性不包括在物理数据库中。但是,它们的值是从数据库中存在的其他属性派生的。例如,年龄不应该直接存储。而是应从该雇员的出生日期派生,因为年龄本身随着时间会发生变化。 |
|
多值属性 |
多值属性可以具有多个值。例如,一个学生可以拥有多个手机号码,电子邮件地址等。 |
基数(Cardinality)
定义两个实体或实体集之间关系的数字属性。
不同类型的基本关系有:
- 一对一关系
- 一对多关系
- 多对一的关系
- 多对多关系
1.一对一
实体集X中的一个实体最多可以与实体集Y中的一个实体相关联,反之亦然。
示例:一个学生可以注册许多课程。但是,所有这些课程都有一行返回到该学生。
2.一对多
实体集X的一个实体可以与实体集Y的多个实体关联,但是实体集Y的一个实体可以与至少一个实体关联。
例如,一个班级由多个学生组成,但是一个学生只归属一个班级。
3.多对一
实体集X的一个以上实体可以与实体集Y的至多一个实体关联。但是,实体集Y的实体可以与实体集X的一个以上实体关联,也可以不关联。
例如,许多学生属于同一班。
4.多对多:
X中的一个实体可以与Y中的一个以上实体关联,反之亦然。
例如,学生作为一个组与多个教师成员关联,而教师成员可以与多个学生关联。
ER图符号
ER-图是数据的直观表示,描述了数据如何相互关联。
- 矩形:此符号代表实体类型
- 椭圆:此符号代表属性
- 菱形:此符号表示关系类型
- 线:将属性链接到实体类型和具有其他关系类型的实体类型
- 主键:带下划线的属性
- 双椭圆:表示多值属性
创建ER图的步骤
以下是创建ER图的步骤。
让我们用一个例子来研究它们:
在大学里,一名学生报名参加课程,必须为学生分配至少一门或多门课程。每门课程均由一名教授教授,为了保持教学质量,教授只能讲授一门课程。
步骤1)实体识别
我们有三个实体:学生、课程、教授。
步骤2)关系识别
我们有以下两种关系:为学生分配课程、教授讲课。
步骤3)基数识别
我们知道如下事实:
- 可以为一个学生分配多个课程
- 教授只能教授一门课程
步骤4)识别属性
您需要研究组织当前拥有的文件、报表、报告、数据以识别属性。您还可以与各种相关人员进行访谈,以识别实体。最初,确定属性而不将它们映射到特定实体很重要。
一旦有了属性列表,就需要将它们映射到已标识的实体。确保将一个属性与一个实体完全配对。如果您认为一个属性应该属于多个实体,请使用修饰符使其具有唯一性。映射完成后,请识别主键。如果无法立即获得唯一主键,请创建一个。
|
实体 |
主键 |
属性 |
|
学生 |
Student_ID |
Student_Name |
|
教授 |
Employee_ID |
Prof_Name |
|
课程 |
Course_ID |
Course_Name |
对于“课程实体”,属性可以有“持续时间”,“学分”,“作业”等。为简便起见,我们仅考虑了一个属性。
步骤5)建立ERD
ER图的现代表示
开发有效ER图的最佳实践
- 消除任何冗余实体或关系
- 您需要确保所有实体和关系均已正确标记
- ER图可能有多种有效的表示方法,您需要确保ER图支持您需要存储的所有数据
- 您应确保每个实体在ER图中仅出现一次
- 为关系中的每个关系,实体和属性命名
- 不要在关系之间建立连接
- 您应该使用颜色突出显示ER图的重要部分
小结
- ER模型是高级数据模型图
- ER图是一种可视化工具,有助于表示ER模型
- 实体关系图显示存储在数据库中的实体集的关系
- ER图可帮助您定义与实体关系建模有关的术语
- ER模型基于三个基本概念:实体,属性和关系
- 实体可以是将数据存储在数据库中的位置、人、对象、事件或概念
- 关系是两个或多个实体之间的关联
- 弱实体是没有关键属性的一种实体
- 基数表示帮助您定义两个实体或实体集之间关系的数字属性
- ER-图是数据的直观表示,描述了数据如何相互关联
- 在绘制ER图时,您需要确保正确标记了所有实体和关系。
注:以上内容由google翻译,手工整理完成。如有不妥之处,敬请参考:https://www.guru99.com/er-diagram-tutorial-dbms.html