什么是 ER 建模?通过示例学习
什么是 ER 模型?
实体关系模型(ER Modeling)是数据库设计的图形化方法。它是一种高级数据模型,用于定义特定软件系统的 D 数据元素及其关系。ER 模型用于表示现实世界中的对象。
实体是现实世界中可与周围环境区分开的某事物或对象。例如,组织中的每个员工都是一个独立的实体。以下是实体的几个主要特征。
- 实体具有一组属性。
- 实体属性可以具有值。
让我们再次考虑第一个例子。组织中的员工是一个实体。如果“Peter”是 Microsoft 的程序员(一个员工),他可以拥有诸如姓名、年龄、体重、身高等的属性(特性)。显然,这些确实包含与他相关的数值。
每个属性都可以具有值。在大多数情况下,单个属性只有一个值。但属性也可能具有多个值。例如,Peter 的年龄有一个值。但他“电话号码”的属性可以有多个值。
实体之间可以存在关系。让我们考虑最简单的例子。假设每位 Microsoft 程序员都获得一台计算机。很明显,Peter 的计算机也是一个实体。Peter 正在使用这台计算机,而这台计算机也被 Peter 使用。换句话说,Peter 和他的计算机之间存在相互关系。
在实体关系建模中,我们对实体、它们的属性以及实体之间的关系进行建模。
增强实体关系(EER)模型
增强实体关系(EER)模型是一种高级数据模型,它为原始实体关系(ER)模型提供了扩展。EER 模型支持更详细的设计。EER 建模作为一种对高度复杂数据库进行建模的解决方案而出现。
EER 使用 UML 符号。 UML 是 统一建模语言 的缩写;它是一种通用的建模语言,用于设计面向对象系统。实体表示为类图。关系表示为实体之间的关联。下图显示了一个使用UML 符号的 ER 图。
为什么要使用 ER 模型?
现在您可能会想,既然我们可以在没有 ER 建模的情况下创建数据库及其所有对象,为什么还要使用 ER 建模呢?设计数据库时面临的挑战之一是,设计人员、开发人员和最终用户倾向于以不同的方式看待数据及其使用。如果这种情况不加以控制,我们最终可能会产生一个不能满足用户需求的数据库系统。
所有利益相关者(技术用户和非技术用户)都能理解的沟通工具对于生成满足用户需求的数据库系统至关重要。ER 模型就是这类工具的示例。
ER 图还可以提高用户的工作效率,因为它们可以轻松地转换为关系表。
案例研究:“MyFlix”视频库的 ER 图
现在,让我们使用 MyFlix 视频库数据库系统来帮助理解 ER 图的概念。在本教程的其余部分,我们将在此数据库上进行所有实际操作。
MyFlix 是一家向会员出租电影的企业。MyFlix 一直手动存储其记录。管理层现在希望迁移到一个数据库管理系统 (DBMS)。
让我们看看为该数据库开发 EER 图的步骤:
- 识别实体并确定它们之间的关系。
- 每个实体、属性和关系都应具有适当的名称,以便非技术人员也能轻松理解。
- 关系不应直接相互连接。关系应连接实体。
- 给定实体中的每个属性都应具有唯一的名称。
“MyFlix”库中的实体
我们的ER 图中包含的实体是:
- 会员 – 此实体将存储会员信息。
- 电影 – 此实体将存储有关电影的信息
- 类别 – 此实体将存储将电影归入不同类别的信息,例如“剧情”、“动作”和“史诗”等。
- 电影租赁 – 此实体将存储有关租借给会员的电影的信息。
- 付款 – 此实体将存储有关会员付款的信息。
定义实体之间的关系
会员和电影
关于这两个实体之间的交互,以下情况属实。
- 在给定时期内,一个会员可以租借多部电影。
- 在给定时期内,一部电影可以被多个会员租借。
从上述场景中,我们可以看到关系的性质是多对多。关系数据库不支持多对多关系。我们需要引入一个连接实体。这正是 MovieRentals 实体所起的作用。它与会员表具有一对多关系,与电影表也具有一对多关系。
电影和类别实体
关于电影和类别,以下情况属实:
- 一部电影只能属于一个类别,但一个类别可以包含多部电影。
由此我们可以推断,类别和电影表之间的关系性质是一对多。
会员和付款实体
关于会员和付款,以下情况属实:
- 一个会员只能有一个账户,但可以进行多次付款。
由此我们可以推断,会员和付款实体之间的关系性质是一对多。
现在,让我们使用MySQL Workbench 创建 EER 模型。
在 MySQL Workbench 中,点击“+”按钮。
双击“添加图表”按钮以打开 ER 图的工作区。
将出现以下窗口。
让我们看一下我们将要操作的两个对象。
会员实体将具有以下属性:
- 会员号
- 全名
- 性别
- 出生日期
- 实际地址
- 邮政地址
现在让我们创建会员表。
1.从工具面板拖动表对象。
2.将其放入工作区。会出现一个名为 table 1 的实体。
3.双击它。将出现下图所示的属性窗口。
接下来,
- 将 table 1 更改为 Members。
- 将默认的 idtable1 编辑为 membership_number。
- 单击下一行以添加下一个字段。
- 对会员实体中确定的所有属性执行相同操作。
您的属性窗口现在应如下所示。
对所有确定的实体重复以上步骤。
您的图表工作区现在应该与下图所示的类似。
创建会员和电影租赁之间的关系。
- 选择“使用现有列放置关系”。
- 单击“会员”表中的 membership_number。
- 单击 MovieRentals 表中的 reference_number。
对其他关系重复以上步骤。您的 ER 图现在应该如下所示:
摘要
- ER 的全称是实体关系图。它们在数据库设计过程中起着非常重要的作用。它们充当技术人员和非技术人员之间的非技术沟通工具。
- 实体代表现实世界的事物;它们可以是概念上的,如销售订单,也可以是物理上的,如客户。
- 所有实体都必须赋予唯一的名称。
- ER 模型还允许数据库设计人员识别和定义实体之间存在的关系。
完整的 ER 模型附在下面。您可以在 MySQL Workbench 中直接导入它。