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

⚡ 智能摘要

实体关系建模是一种数据库设计的图形化方法,它将现实世界的对象表示为实体,用属性描述它们,并捕捉它们如何通过关系连接,从而在构建任何表之前生成清晰的蓝图。

  • 🧩 它是什么: ER建模是一种高级的图形化数据模型,它定义了数据元素及其关系。
  • 🗂️ 基本组成部分: 实体代表现实世界的事物,属性描述它们的性质,关系描述实体之间的交互方式。
  • 🔗 基数: 关系可以是一对一、一对多或多对多,通过连接实体解决。
  • 🚀 EER模型: 增强型 ER 模型使用 UML 表示法和额外的结构来处理高度复杂的数据库。
  • 🎬 MyFlix案例研究: 视频库示例将成员、电影、类别、租赁和付款映射到 ER 图中。
  • 🤖 人工智能辅助: AI 工具和 GitHub Copilot 将自然语言描述转换为 ER 图和 SQL 模式。

ER 建模

什么是 ER 建模?

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

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

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

让我们再来看第一个例子。一个组织的员工是一个实体。如果“Peter”是一名程序员(一名员工),那么…… Microsoft他可以拥有姓名、年龄、体重、身高等属性。显然,这些属性都具有与他相关的价值。

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

实体之间可以存在关系。我们来看一个最简单的例子。假设每个实体都…… Microsoft 程序员彼得被分配了一台电脑。显然,彼得的电脑也是一个实体。彼得在使用这台电脑,而这台电脑也被彼得使用。换句话说,彼得和他的电脑之间存在着一种相互关系。

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

为什么要使用 ER 模型?

现在你可能会想,既然我们可以简单地 创建数据库 以及其所有对象,而无需 ER 建模?设计数据库时面临的挑战之一是设计人员、开发人员和最终用户往往以不同的方式看待数据及其使用方式。如果不加以控制,我们最终可能会生成一个无法满足用户要求的数据库系统。

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

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

增强型实体关系 (EER) 模型

增强型实体关系(EER)模型是一种高级数据模型,它扩展了原始实体关系(ER)模型的功能。EER模型支持更详细的设计。EER建模的出现是为了解决高度复杂数据库的建模问题。

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

增强型实体关系 (EER) 模型

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

现在我们来使用 MyFlix 视频库数据库系统来帮助理解 ER 图的概念。本教程中的所有实践操作都将使用此数据库。

MyFlix 是一家向会员出租电影的商业实体。MyFlix 一直手动存储记录。管理层现在希望转向 DBMS.

让我们来看看为该数据库绘制 EER 图的步骤:

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

“MyFlix”库中的实体

纳入我们 ER 图 是:

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

定义实体之间的关系

会员和电影

关于两个实体之间的交互,以下内容成立。

  • 会员可以在规定时间内租借多部电影。
  • 在特定时期内,一部电影可以由多名会员租用。

从上述场景可以看出,这种关系是多对多的。关系型数据库本身并不支持多对多关系。我们需要引入一个连接实体,MovieRentals 实体就扮演着这样的角色。它与 Members 表和 Movies 表都存在一对多关系。

电影和类别实体

以下内容适用于电影和类别。

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

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

会员和支付实体

以下关于会员和付款的规定适用。

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

由此我们可以推断,成员与支付实体之间的关系是一对多的。

使用以下方法创建 EER 模型 MySQL 工作台

In MySQL 工作台点击“+”按钮。

使用以下方法创建 EER 模型 MySQL 工作台

Double 点击“添加图表”按钮,打开 ER 图工作区。

添加图表 MySQL 工作台

出现以下窗口。

MySQL Workbench EER建模环境

让我们看看我们将使用的两个对象。

  • 表格对象 桌子工具 允许我们创建实体并定义与特定实体关联的属性。
  • 地点关系 地点关系工具 该按钮允许我们定义实体之间的关系。

成员实体将具有以下属性

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

现在我们来创建成员表

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

2. 将其拖放到工作区。此时会显示一个名为“表 1”的实体。

3. Double 点击它。将出现如下所示的属性窗口。

成员表属性 MySQL 工作台

接下来,

  1. 将表 1 改为成员表。
  2. 将默认的 idtable1 修改为 membership_number。
  3. 点击下一行添加下一个字段。
  4. 对 Members 实体中标识的所有属性执行相同的操作。

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

成员实体属性定义

对所有已识别的实体重复上述步骤。

您的图表工作区现在应如下所示。

图表工作区中的 MyFlix 实体

让我们建立会员与电影租赁之间的联系

  1. 使用现有列工具选择地点关系。
  2. 点击“会员”表中的“会员编号”。
  3. 点击 MovieRentals 表格中的 reference_number。

建立会员与电影租赁公司之间的关系

对其他关系重复上述步骤。你的ER图现在应该看起来像这样——

已完成的 MyFlix ER 图

常见问题

ER图由三个核心组件构成:实体(矩形)、属性(椭圆形)和关系(菱形)。带下划线的属性表示主键。

常见的属性类型有:简单属性(原子属性)、复合属性(可分割属性)、派生属性(计算属性)、多值属性(多个值)以及标识实体的关键属性。

基数定义了一个实体与另一个实体之间的关联数量:一对一、一对多或多对多。连接实体用于解决不支持的多对多链接。

强实体拥有自己的主键,可以独立存在。弱实体缺少完整的主键,依赖于所有者实体。

乌鸦脚记号法用形似鸟爪的线条末端表示基数。尖角表示多,横线和圆圈表示一和可选。

实体关系模型(ER模型)是实体和关系的高级可视化蓝图。关系模型则在数据库管理系统(DBMS)中将其实现为表、行、列和键。

人工智能工具将自然语言描述转换为实体关系图,建议实体和关系,并生成 SQL 模式。设计人员在实施之前审查并修正输出结果。

是的。 GitHub 副驾驶 它会建议实体、关系和表结构,并生成用于构建它们的 SQL 语句。它还可以绘制类似 Mermaid 的图表即代码,并将其渲染成 ER 图。

总结一下这篇文章: