带有 DBMS 示例的实体关系 (ER) 图模型
⚡ 智能摘要
实体关系 (ER) 图模型及数据库管理系统示例 本文介绍了一种结构化的方法,用于在关系数据库中直观地表示数据及其相互联系。该方法由 Peter Chen 提出,为精确定义实体、属性、关系及其基数提供了概念建模基础。
什么是ER图?
实体关系图(ER图)是一种强大的关系数据库结构设计可视化工具。它由Peter Chen于1976年首次提出,提供了一个概念建模基础,能够精确定义实体、属性、关系及其基数。本教程涵盖从基本概念到高级技巧的所有内容,帮助您掌握数据库模式设计。
ER 图包含不同的符号,其中矩形表示实体,椭圆形表示属性,菱形表示关系。
乍一看,ER图与流程图非常相似。然而,ER图包含许多专用符号,其含义使其独具特色。ER图的目的是表示实体框架的基础架构。

ER模型发展史
彼得·陈于1976年在其开创性论文《实体关系模型:迈向统一的数据视图》中提出了ER图。他的目标是创建一个可用于关系数据库和网络的统一约定。陈设想ER模型是一种概念建模方法,能够弥合现实世界的需求与技术数据库实现之间的鸿沟。
此后,ER模型发展演变,衍生出多种表示法,包括陈氏表示法(最初的表示法)、乌鸦脚表示法(现代工具中常用)以及基于UML的方法。尽管存在这些差异,但其核心概念在所有实现中始终保持一致。
为什么要使用ER图?
ER图为数据库设计和开发提供了诸多好处:
- 视觉交流: 它们提供了清晰的视觉呈现,技术和非技术利益相关者都能理解。
- 发展蓝图: 它们清楚地展示了表格应该如何连接以及每个表格将包含哪些字段。
- 准备翻译: ER图可以直接转换为关系表,从而可以快速构建数据库。
- 错误预防: 它们有助于在实施前发现设计缺陷和冗余,从而节省时间和资源。
- 文档: 它们可作为长期有效的文档,帮助新团队成员了解系统架构。
- 系统分析: 它们有助于识别系统中存在的所有实体以及它们之间的关系。
ER图组成部分
每个ER图都由三个核心组件构成:实体、属性和关系。理解每个组件及其交互方式对于创建有效的数据库设计至关重要。
ER 图示例
例如,在大学数据库中,我们可能有学生、课程和讲师这三个实体。学生实体可以有学号、姓名和系号等属性。学生实体可能与课程和讲师实体存在关联。
实体
实体是指任何现实世界中的对象——无论其是生物还是非生物——只要能够被清晰识别并存储相关数据即可。它可以是物理实体、企业相关事实,或是现实世界中发生的事件。实体可以包括人、地点、物体、事件或概念。
按类别划分的实体示例:
- 人: 员工、学生、病人、顾客
- 地点: 商店、建筑物、办公室、仓库
- 摆件: 机器、产品、汽车、书籍
- 事件: 销售、登记、续期、交易
- 概念: 账户、课程、部门、项目
实体集
实体集是一组具有共同属性的相似实体。例如,大学里的所有学生构成一个“学生”实体集。在ER图中,实体用矩形表示,实体名称写在矩形内。
实体由其属性表示,这些属性也称为特性。所有特性都有各自的值。例如,一个学生实体可能具有姓名、年龄和班级等特性。
强势实体与弱势实体
实体根据其独立存在的能力分为强实体和弱实体。理解这一区别对于正确的数据库设计至关重要。
强实体拥有自己的主键,可以独立存在。例如,“学生”实体可以通过 Student_ID 唯一标识,而无需依赖任何其他实体。
弱实体自身没有主键,需要依赖强实体(称为所有者实体)来标识自身。它使用部分键(鉴别器)与所有者实体的主键结合使用,以实现唯一性。例如,在银行系统中,“交易”实体依赖于“账户”实体——交易号本身在整个数据库中并不唯一,但与账户号结合使用后,就具有唯一性。
| 强实体 | 弱势实体 |
|---|---|
| 它有自己的主键 | 没有主键;使用部分键 |
| 用单个矩形表示 | 用双矩形表示 |
| 主键下方用实线标出 | 部分图例用虚线标出 |
| 可以独立存在 | 其存在取决于所有者实体。 |
| 与单钻关系相关 | 与双菱形相连(表示关联关系) |
| 例如:学生、员工、产品 | 示例:交易、依赖项、订单项 |
关系
关系表示两个或多个实体之间的关联。关系通常用动词或动词短语来描述实体之间的交互方式。在实体关系图中,关系用菱形表示。例如:汤姆在化学系工作。
实体参与关系。我们通常可以通过动词或动词短语来识别关系。
例子:
- 您正在参加本次讲座
- 我正在讲课
- 一名学生参加讲座
- 一位讲师正在讲课
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图的步骤:
让我们通过实体关系图示例来研究它们:
在大学里,学生选修课程。每位学生必须至少选修一门课程。每门课程由一位教授授课。为了保证教学质量,一位教授只能教授一门课程。
步骤1)实体识别
我们旗下有三个实体:
- 学生
- 课程
- 教授
步骤2)关系识别
我们之间存在以下两种关系:
- 学生是 分配 一门课程
- 教授 提供 一门课程
步骤 3)基数识别
从问题描述中,我们知道:
- 可以分配一名学生 多 课程
- 教授只能讲授 一种 与MYP课程衔接
步骤 4)识别属性
你需要研究组织当前维护的文件、表格、报告和数据,以识别属性。你还可以与各利益相关者进行访谈,以确定实体。最初,重要的是在不将属性映射到特定实体的情况下识别它们。
获得属性列表后,需要将它们映射到已识别的实体。确保每个属性只与一个实体配对。如果认为某个属性应该属于多个实体,请使用修饰符使其唯一。
映射完成后,确定主键。如果没有现成的唯一键,请创建一个。
| 实体 | 首要的关键 | 属性 |
|---|---|---|
| 学生 | 学生卡 | 学生姓名 |
| 教授 | 员工ID | 教授姓名 |
| 课程 | 课程编号 | 课程名 |
对于课程实体,属性可以是持续时间、学分、作业等。为了简单起见,我们只考虑了一个属性。
步骤 5)创建 ER 图
实体关系图示例的更现代表示方法:
有效ER图的最佳实践
遵循以下准则,创建清晰、易于维护且有效的实体关系图:
- 消除冗余: 删除重复的实体、属性或关系。
- 使用清晰的命名约定: 使用一致且描述性的名称。避免使用缩写。
- 根据需求进行验证: 确保该结构图满足所有数据存储需求。
- 把事情简单化: 与其绘制一个杂乱的图表,不如创建多个不同层次的图表。
- 谨慎使用颜色: 使用一致的颜色来突出显示类别。
- 文件假设: 添加注释,解释有关业务规则的假设。
- Rev与利益相关者交流: 请业务用户和技术团队审核该图表。
- 版本控制: 随着设计演变,维护版本号。
ER图与UML类图
虽然实体关系图(ER图)和UML类图都用于数据建模,但它们的用途和适用场景不同。了解何时使用哪种图对于有效的系统设计至关重要。
| 方面 | ER图 | UML 类图 |
|---|---|---|
| 主要目的 | 数据库设计 | 软件/对象设计 |
| 专注 | 数据和关系 | 对象、方法和行为 |
| 方法/Opera系统蒸发散 | 不支持 | 完全支持 |
| 遗产 | 有限(仅限 EER) | 全力支持 |
| 工业用途 | 数据库管理员、数据分析师 | 软件开发人员、架构师 |
















