带有 DBMS 示例的实体关系 (ER) 图模型

⚡ 智能摘要

实体关系 (ER) 图模型及数据库管理系统示例 本文介绍了一种结构化的方法,用于在关系数据库中直观地表示数据及其相互联系。该方法由 Peter Chen 提出,为精确定义实体、属性、关系及其基数提供了概念建模基础。

  • 🔍核心概念: ER 图通过三个核心组件(实体、属性和关系)定义数据库结构,确保数据对象及其交互之间的清晰映射。
  • 🧱 结构符号: 矩形表示实体,椭圆表示属性,菱形表示关系;连接线表示逻辑链接,带下划线的属性表示主键。
  • ⚙️ 实体分类: 实体被分组为集合,每个集合都由唯一的键或属性标识。弱实体缺乏独立的键,需要依靠强实体进行标识,强实体使用双矩形和虚线下划线表示。
  • 🔗 关系定义: 关系表达实体之间的关联(例如,“学生报名参加课程”),并按基数进行分类——一对一、一对多、多对一或多对多。
  • 🧩 属性类型: 属性可以是简单的、复合的、派生的或多值的,它们定义了不同的数据属性,例如名称、日期和计算字段。
  • 🧭 ERD 创建步骤: 在构建完整图表之前,识别实体、建立关系、确定基数、分配属性并定义主键。
  • 📈 优化实践: 为了清晰起见,消除冗余,标记所有组件,并保持实体的唯一性,确保图表支持所有必要的数据存储要求。

实体关系图

什么是ER图?

实体关系图(ER图)是一种强大的关系数据库结构设计可视化工具。它由Peter Chen于1976年首次提出,提供了一个概念建模基础,能够精确定义实体、属性、关系及其基数。本教程涵盖从基本概念到高级技巧的所有内容,帮助您掌握数据库模式设计。

ER 图包含不同的符号,其中矩形表示实体,椭圆形表示属性,菱形表示关系。

乍一看,ER图与流程图非常相似。然而,ER图包含许多专用符号,其含义使其独具特色。ER图的目的是表示实体框架的基础架构。

ER 图示例
实体关系图示例

ER模型发展史

彼得·陈于1976年在其开创性论文《实体关系模型:迈向统一的数据视图》中提出了ER图。他的目标是创建一个可用于关系数据库和网络的统一约定。陈设想ER模型是一种概念建模方法,能够弥合现实世界的需求与技术数据库实现之间的鸿沟。

此后,ER模型发展演变,衍生出多种表示法,包括陈氏表示法(最初的表示法)、乌鸦脚表示法(现代工具中常用)以及基于UML的方法。尽管存在这些差异,但其核心概念在所有实现中始终保持一致。

为什么要使用ER图?

ER图为数据库设计和开发提供了诸多好处:

  • 视觉交流: 它们提供了清晰的视觉呈现,技术和非技术利益相关者都能理解。
  • 发展蓝图: 它们清楚地展示了表格应该如何连接以及每个表格将包含哪些字段。
  • 准备翻译: ER图可以直接转换为关系表,从而可以快速构建数据库。
  • 错误预防: 它们有助于在实施前发现设计缺陷和冗余,从而节省时间和资源。
  • 文档: 它们可作为长期有效的文档,帮助新团队成员了解系统架构。
  • 系统分析: 它们有助于识别系统中存在的所有实体以及它们之间的关系。

ER图组成部分

每个ER图都由三个核心组件构成:实体、属性和关系。理解每个组件及其交互方式对于创建有效的数据库设计至关重要。

ER 图示例

例如,在大学数据库中,我们可能有学生、课程和讲师这三个实体。学生实体可以有学号、姓名和系号等属性。学生实体可能与课程和讲师实体存在关联。

ER 图的组成部分

ER 图的组成部分

实体

实体是指任何现实世界中的对象——无论其是生物还是非生物——只要能够被清晰识别并存储相关数据即可。它可以是物理实体、企业相关事实,或是现实世界中发生的事件。实体可以包括人、地点、物体、事件或概念。

按类别划分的实体示例:

  • 人: 员工、学生、病人、顾客
  • 地点: 商店、建筑物、办公室、仓库
  • 摆件: 机器、产品、汽车、书籍
  • 事件: 销售、登记、续期、交易
  • 概念: 账户、课程、部门、项目

DBMS 中的实体示例

实体集

实体集是一组具有共同属性的相似实体。例如,大学里的所有学生构成一个“学生”实体集。在ER图中,实体用矩形表示,实体名称写在矩形内。

实体由其属性表示,这些属性也称为特性。所有特性都有各自的值。例如,一个学生实体可能具有姓名、年龄和班级等特性。

实体

强势实体与弱势实体

实体根据其独立存在的能力分为强实体和弱实体。理解这一区别对于正确的数据库设计至关重要。

强实体拥有自己的主键,可以独立存在。例如,“学生”实体可以通过 Student_ID 唯一标识,而无需依赖任何其他实体。

弱实体自身没有主键,需要依赖强实体(称为所有者实体)来标识自身。它使用部分键(鉴别器)与所有者实体的主键结合使用,以实现唯一性。例如,在银行系统中,“交易”实体依赖于“账户”实体——交易号本身在整个数据库中并不唯一,但与账户号结合使用后,就具有唯一性。

弱实体

强实体 弱势实体
它有自己的主键 没有主键;使用部分键
用单个矩形表示 用双矩形表示
主键下方用实线标出 部分图例用虚线标出
可以独立存在 其存在取决于所有者实体。
与单钻关系相关 与双菱形相连(表示关联关系)
例如:学生、员工、产品 示例:交易、依赖项、订单项

关系

关系表示两个或多个实体之间的关联。关系通常用动词或动词短语来描述实体之间的交互方式。在实体关系图中,关系用菱形表示。例如:汤姆在化学系工作。

关系

实体参与关系。我们通常可以通过动词或动词短语来识别关系。

例子:

  • 您正在参加本次讲座
  • 我正在讲课
  • 一名学生参加讲座
  • 一位讲师正在讲课

Attributes

属性是描述实体或关系的特征或属性。属性提供详细信息,使每个实体实例都独一无二且意义明确。在实体关系图中,属性用椭圆(或称椭圆符号)表示,并通过线条与其父实体相连。

Attributes

例如,学生实体可能具有诸如 Student_ID、姓名、出生日期、电子邮件和电话号码等属性。

属性类型

属性类型 描述 例如:
简单的 (Atom我知道了) 不能再细分为更小的部件 电话号码、社会安全号码、电子邮件地址
综合 可以分解成更小的子属性 姓名(名、中间名、姓)、地址(街道、城市、邮政编码)
派生 该值由其他属性计算得出,并非直接存储。 年龄(根据出生日期计算得出),总价
多值 可以为单个实体保存多个值 电话 Numbers电子邮件地址、技能
关键属性 唯一标识每个实体实例(主键) 学生ID、员工ID、ISBN

关键提示: 在ER图中,关键属性的名称用下划线标出。派生属性用虚线椭圆表示,多值属性用双椭圆表示。

基数(关系类型)

基数定义了关系的数值约束——具体来说,就是一个实体可以与另一个实体的实例关联的实例数量。理解基数对于设计高效的数据库结构至关重要。

基数

1. 一对一 (1:1)

集合 A 中的一个实体最多只能与集合 B 中的一个实体相关联,反之亦然。

例如:一名学生被分配一个学生ID,并且每个学生ID都属于一名学生。

一对一基数

2. 一对多 (1:N)

集合 A 中的一个实体可以与集合 B 中的多个实体相关联,但集合 B 中的每个实体只能与集合 A 中的一个实体相关联。

例如:一个班级由多名学生组成。

一对多基数

3. 多对一 (N:1)

集合 A 中的多个实体可以与集合 B 中的一个实体相关联。

例如,许多学生属于同一个班级。

多对一基数

4. 多对多 (M:N)

集合 A 中的多个实体可以与集合 B 中的多个实体相关联,反之亦然。

例如,学生作为一个群体与多名教职员工相关联,而教职员工可以与多名学生相关联。

多对多基数

ER图符号和记号

ER图使用标准化的符号来表示不同的组件。虽然有多种符号系统,但最常用的两种是陈氏符号和乌鸦脚符号。

陈氏记谱法

陈氏符号是由彼得·陈于1976年开发的,它使用几何形状来表示不同的元素:

图形符号 姓名 代表
长方形 实体 强实体(例如,学生、产品)
Double 长方形 弱势实体 依赖于另一个实体的实体(例如,交易)
椭圆/卵形 属性 实体的属性(例如,名称、ID)
Double 椭圆 多值属性 具有多个值的属性(例如,电话) Numbers)
虚线椭圆 派生属性 计算值(例如,根据出生日期计算的年龄)
Diamond (钻石) 关系 实体之间的关联(例如,注册)
Double Diamond (钻石) 识别关系 与弱势实体的关系
LINE 链接 将各个组件连接在一起
下划线文本 首要的关键 实体的唯一标识符

乌鸦脚记号

乌鸦脚符号(也称IE符号)在现代数据库设计工具中应用更为广泛。它使用不同的换行符来表示基数,尤其适用于展示关系中的“多”方。

图形符号 Description
单竖线 (|) 必选一项(仅限一项)
带线的圆 (O|) 可选一(零或一)
带线的乌鸦脚(>|) 必填项 多个(一个或多个)
带圆圈的乌鸦脚(>O) 可选值:多个(零个或多个)

陈氏记谱法与乌鸦脚记谱法:何时使用哪种记谱法

方面 陈氏记谱法 乌鸦脚记号
最适合 概念建模,学术用途 物理/逻辑建模,工业应用
属性显示 以可视化的方式显示所有属性 实体框内的属性列表
基数 使用数字(1、N、M) 使用视觉符号
复杂 可能会变得杂乱 更紧凑、更清洁
工具支持 现代工具支持有限 工具中广泛支持

如何创建实体关系图 (ERD)

在本ER图(ERD)教程中,我们将学习如何创建ER图。以下是创建ER图的步骤:

创建实体关系图

创建 ER 图的步骤

让我们通过实体关系图示例来研究它们:

在大学里,学生选修课程。每位学生必须至少选修一门课程。每门课程由一位教授授课。为了保证教学质量,一位教授只能教授一门课程。

步骤1)实体识别

我们旗下有三个实体:

  • 学生
  • 课程
  • 教授

实体识别

步骤2)关系识别

我们之间存在以下两种关系:

  • 学生是 分配 一门课程
  • 教授 提供 一门课程

关系识别

步骤 3)基数识别

从问题描述中,我们知道:

  • 可以分配一名学生 课程
  • 教授只能讲授 一种 与MYP课程衔接

基数识别

步骤 4)识别属性

你需要研究组织当前维护的文件、表格、报告和数据,以识别属性。你还可以与各利益相关者进行访谈,以确定实体。最初,重要的是在不将属性映射到特定实体的情况下识别它们。

获得属性列表后,需要将它们映射到已识别的实体。确保每个属性只与一个实体配对。如果认为某个属性应该属于多个实体,请使用修饰符使其唯一。

映射完成后,确定主键。如果没有现成的唯一键,请创建一个。

实体 首要的关键 属性
学生 学生卡 学生姓名
教授 员工ID 教授姓名
课程 课程编号 课程名

创建实体关系图的步骤

对于课程实体,属性可以是持续时间、学分、作业等。为了简单起见,我们只考虑了一个属性。

步骤 5)创建 ER 图

实体关系图示例的更现代表示方法:

创建 ERD 图

有效ER图的最佳实践

遵循以下准则,创建清晰、易于维护且有效的实体关系图:

  • 消除冗余: 删除重复的实体、属性或关系。
  • 使用清晰的命名约定: 使用一致且描述性的名称。避免使用缩写。
  • 根据需求进行验证: 确保该结构图满足所有数据存储需求。
  • 把事情简单化: 与其绘制一个杂乱的图表,不如创建多个不同层次的图表。
  • 谨慎使用颜色: 使用一致的颜色来突出显示类别。
  • 文件假设: 添加注释,解释有关业务规则的假设。
  • Rev与利益相关者交流: 请业务用户和技术团队审核该图表。
  • 版本控制: 随着设计演变,维护版本号。

ER图与UML类图

虽然实体关系图(ER图)和UML类图都用于数据建模,但它们的用途和适用场景不同。了解何时使用哪种图对于有效的系统设计至关重要。

方面 ER图 UML 类图
主要目的 数据库设计 软件/对象设计
专注 数据和关系 对象、方法和行为
方法/Opera系统蒸发散 不支持 完全支持
遗产 有限(仅限 EER) 全力支持
工业用途 数据库管理员、数据分析师 软件开发人员、架构师

常见问题

实体关系图(ER图)通过定义实体、实体属性及其关系,以可视化的方式展现数据库的结构。它有助于设计人员、开发人员和利益相关者在实施之前确保数据建模的一致性、完整性和效率。

两种主要类型是概念性 ER 图(概述了高级关系和实体,不包含实现细节)和物理 ER 图(详细说明了实际的数据库结构、数据类型、键和约束,以便于实现)。

创建 ER 图的步骤如下:(1)根据需求确定关键实体,(2)确定实体之间的关系,(3)根据业务规则分配基数,(4)定义每个实体的属性,(5)确定主键,以及(6)使用适当的符号绘制图表。

选择哪种表示法取决于具体情况。陈氏表示法最适合概念设计和学术环境,而乌鸦脚表示法则更适用于工业环境中的逻辑/物理设计。大多数现代数据库工具都支持乌鸦脚表示法。

强实体拥有自己的主键,可以独立存在。弱实体没有主键,需要依赖强实体进行识别,识别时会结合强实体的主键和自身的部分键(鉴别器)。

在云数据库管理系统平台中,实体关系图 (ER 图) 指导自动化配置、扩展和查询编排。它们使人工智能驱动的工具能够将数据结构与工作负载预测和实时用户需求相匹配,从而提高系统效率。

虽然生成式人工智能可以根据业务需求或现有数据集提出初始的 ER 模型,但人工监督仍然至关重要,以验证关系、强制执行约束、确保逻辑一致性,并验证与生产系统中实际业务规则的一致性。

多对多关系无法直接在关系数据库中实现。您必须创建一个关联实体(连接表),将多对多关系拆分为两个一对多关系。此连接表包含引用两个原始实体的外键。

总结一下这篇文章: