什么是 ER 建模?通过示例学习

什么是 ER 模型?

实体关系模型(ER Modeling)是数据库设计的图形化方法。它是一种高级数据模型,用于定义特定软件系统的 D 数据元素及其关系。ER 模型用于表示现实世界中的对象。

实体是现实世界中可与周围环境区分开的某事物或对象。例如,组织中的每个员工都是一个独立的实体。以下是实体的几个主要特征。

  • 实体具有一组属性。
  • 实体属性可以具有值。

让我们再次考虑第一个例子。组织中的员工是一个实体。如果“Peter”是 Microsoft 的程序员(一个员工),他可以拥有诸如姓名、年龄、体重、身高等的属性(特性)。显然,这些确实包含与他相关的数值。

每个属性都可以具有。在大多数情况下,单个属性只有一个值。但属性也可能具有多个值。例如,Peter 的年龄有一个值。但他“电话号码”的属性可以有多个值。

实体之间可以存在关系。让我们考虑最简单的例子。假设每位 Microsoft 程序员都获得一台计算机。很明显,Peter 的计算机也是一个实体。Peter 正在使用这台计算机,而这台计算机也被 Peter 使用。换句话说,Peter 和他的计算机之间存在相互关系。

实体关系建模中,我们对实体、它们的属性以及实体之间的关系进行建模。

增强实体关系(EER)模型

增强实体关系(EER)模型是一种高级数据模型,它为原始实体关系(ER)模型提供了扩展。EER 模型支持更详细的设计。EER 建模作为一种对高度复杂数据库进行建模的解决方案而出现。

EER 使用 UML 符号。 UML 是 统一建模语言 的缩写;它是一种通用的建模语言,用于设计面向对象系统。实体表示为类图。关系表示为实体之间的关联。下图显示了一个使用UML 符号的 ER 图。


Enhanced Entity Relationship (EER)

为什么要使用 ER 模型?

现在您可能会想,既然我们可以在没有 ER 建模的情况下创建数据库及其所有对象,为什么还要使用 ER 建模呢?设计数据库时面临的挑战之一是,设计人员、开发人员和最终用户倾向于以不同的方式看待数据及其使用。如果这种情况不加以控制,我们最终可能会产生一个不能满足用户需求的数据库系统。

所有利益相关者(技术用户和非技术用户)都能理解的沟通工具对于生成满足用户需求的数据库系统至关重要。ER 模型就是这类工具的示例。

ER 图还可以提高用户的工作效率,因为它们可以轻松地转换为关系表。

案例研究:“MyFlix”视频库的 ER 图

现在,让我们使用 MyFlix 视频库数据库系统来帮助理解 ER 图的概念。在本教程的其余部分,我们将在此数据库上进行所有实际操作。

MyFlix 是一家向会员出租电影的企业。MyFlix 一直手动存储其记录。管理层现在希望迁移到一个数据库管理系统 (DBMS)

让我们看看为该数据库开发 EER 图的步骤:

  1. 识别实体并确定它们之间的关系。
  2. 每个实体、属性和关系都应具有适当的名称,以便非技术人员也能轻松理解。
  3. 关系不应直接相互连接。关系应连接实体。
  4. 给定实体中的每个属性都应具有唯一的名称。

“MyFlix”库中的实体

我们的ER 图中包含的实体是:

  • 会员 – 此实体将存储会员信息。
  • 电影 – 此实体将存储有关电影的信息
  • 类别 – 此实体将存储将电影归入不同类别的信息,例如“剧情”、“动作”和“史诗”等。
  • 电影租赁 – 此实体将存储有关租借给会员的电影的信息。
  • 付款 – 此实体将存储有关会员付款的信息。

定义实体之间的关系

会员和电影

关于这两个实体之间的交互,以下情况属实。

  • 在给定时期内,一个会员可以租借多部电影。
  • 在给定时期内,一部电影可以被多个会员租借。

从上述场景中,我们可以看到关系的性质是多对多。关系数据库不支持多对多关系。我们需要引入一个连接实体。这正是 MovieRentals 实体所起的作用。它与会员表具有一对多关系,与电影表也具有一对多关系。

电影和类别实体

关于电影和类别,以下情况属实:

  • 一部电影只能属于一个类别,但一个类别可以包含多部电影。

由此我们可以推断,类别和电影表之间的关系性质是一对多。

会员和付款实体

关于会员和付款,以下情况属实:

  • 一个会员只能有一个账户,但可以进行多次付款。

由此我们可以推断,会员和付款实体之间的关系性质是一对多。

现在,让我们使用MySQL Workbench 创建 EER 模型。

在 MySQL Workbench 中,点击“+”按钮。

Defining the Relationships Among Entities

双击“添加图表”按钮以打开 ER 图的工作区。

Defining the Relationships Among Entities

将出现以下窗口。

Defining the Relationships Among Entities

让我们看一下我们将要操作的两个对象。

  • 定义实体之间的关系表对象允许我们创建实体并定义与特定实体相关的属性。
  • 定义实体之间的关系关系放置按钮允许我们定义实体之间的关系。

会员实体将具有以下属性:

  • 会员号
  • 全名
  • 性别
  • 出生日期
  • 实际地址
  • 邮政地址

现在让我们创建会员表。

1.从工具面板拖动表对象。

2.将其放入工作区。会出现一个名为 table 1 的实体。

3.双击它。将出现下图所示的属性窗口。

Defining the Relationships Among Entities

接下来,

  1. 将 table 1 更改为 Members。
  2. 将默认的 idtable1 编辑为 membership_number。
  3. 单击下一行以添加下一个字段。
  4. 对会员实体中确定的所有属性执行相同操作。

您的属性窗口现在应如下所示。

Defining the Relationships Among Entities

对所有确定的实体重复以上步骤。

您的图表工作区现在应该与下图所示的类似。

Defining the Relationships Among Entities

创建会员和电影租赁之间的关系。

  1. 选择“使用现有列放置关系”。
  2. 单击“会员”表中的 membership_number。
  3. 单击 MovieRentals 表中的 reference_number。

Defining the Relationships Among Entities

对其他关系重复以上步骤。您的 ER 图现在应该如下所示:

摘要

  • ER 的全称是实体关系图。它们在数据库设计过程中起着非常重要的作用。它们充当技术人员和非技术人员之间的非技术沟通工具。
  • 实体代表现实世界的事物;它们可以是概念上的,如销售订单,也可以是物理上的,如客户。
  • 所有实体都必须赋予唯一的名称。
  • ER 模型还允许数据库设计人员识别和定义实体之间存在的关系。

完整的 ER 模型附在下面。您可以在 MySQL Workbench 中直接导入它。

单击此处下载 ER 模型