在本指南中了解有关实体关系图 (ERD)、它们的用途、如何理解它们、如何创建它们等的所有信息。

实体关系图 (ERD) 是一种图表,可让您查看不同实体(例如人员、客户或其他对象)在应用程序或数据库中如何相互关联。

巴克 ERD 符号

它们是在设计新系统时创建的,以便开发团队可以了解如何构建数据库。它们也可以在现有系统上创建,以帮助团队了解系统的工作方式并查找和解决任何问题。

实体关系图使用一组特定的符号(例如形状和箭头)来描述系统和数据库

这是 ERD 的示例:

College | Entity Relationship Diagram Template

ERD 的组成部分

实体关系图由许多不同的组件组成:

  • 实体 (Entity)
  • 关系 (Relationship)
  • 属性 (Attribute)

实体

实体是可以存储有关它的数据的事物。它可以是物理对象(例如汽车、人)、概念(例如地址)或事件(例如学生注册课程)。它们代表名词。

它们通常表示为 ERD 上的矩形,矩形内带有实体名称。

实体也可以是强实体或弱实体。有什么不同?

强实体具有标识符(主键)并且不依赖于任何其他实体以使其存在。例如,学生可能是一个强大的实体,因为它可以有一个主键并且不依赖于任何其他实体来存在。

弱实体是依赖于强实体存在的实体。这意味着它有另一个实体的外键。例如,学生的注册可能是一个弱实体,因为没有学生就不可能存在注册。

关系

ERD 中的关系定义了两个实体如何相互关联。当谈到数据库或一组实体时,它们可以从动词派生。

ERD 中的关系表示为两个实体之间的线,并且通常在线上有一个标签来进一步描述关系(例如“注册”、“注册”、“完成”)。

ERD 上表示了几种类型的关系:

  • 一对一:实体的一条记录与实体的另一条记录直接相关
  • 一对多:一个实体的一个记录与另一个实体的一个或多个记录相关。
  • 多对多:一个实体的多条记录可以与另一实体的多条记录相关。

属性

属性是实体的属性或可用于描述实体的东西。它们通常表示为椭圆形,或实体内的条目。

ERD 上表示了几种不同类型的属性:

  • 简单:不能拆分为其他属性的属性,例如名字。
  • 复合:可以拆分为其他属性的属性,例如将姓名拆分为名字、中间名和姓氏。
  • 派生:从另一个属性计算或确定的属性,例如从创建日期计算的记录年龄。

属性也可以是单值或多值:

  • 单值:只捕获一次的属性
  • 多值:可以为一个实体多次捕获的属性,例如多个电话号码。

什么是基数 (Cardinality)?

基数表示存在于两个实体之间的关系中的实体的实例数。这通常表示为数字,但也可以是符号,具体取决于所使用的图表样式。常见的基数值是零、一或多。

我们将在本指南后面看到一些基数示例。

自然语言 (Natural Language)

当我们创建 ERD 时,我们通常会知道我们想要捕捉什么。这通常可以用文字或“自然语言”来表达。

一些例子是:

  • “记录学生,他们注册的课程,以及教授课程的老师”
  • “捕获客户订单、客户详细信息以及订单发送地点”
  • “捕获患者数据及其进行的操作”

这些句子包括几种不同类型的单词,可用作 ERD 的起点。它们以几种不同的方式表示:

  • 名词:“东西”,如学生或顾客。表示为一个实体。
  • 动词:动作,例如注册或发送。表示为两个实体之间的关系。
  • 形容词:描述词,如住宅或高级。表示为实体的属性。

这可以帮助您将需要绘制的图表的描述转换为实际图表。

符号和符号

创建 ERD 时,可以很容易地在它们之间创建框和线。但是,就像软件开发中的许多事情一样,有几种不同的方法和标准可用。对于 ERD,有多种符号标准,用于定义所使用的符号。

Chen

以下是与 Chen 符号样式一起使用的符号示例。

陈记法

这是一个使用 Chen 符号的 ERD 示例:

Chen 符号示例 ERD

乌鸦脚 (Crow's Foot)

这是用于乌鸦脚符号样式的符号示例。这是您在 Database Star 上看到最多的样式,因为它是我最熟悉的样式。它被称为“乌鸦的脚”,因为它象征着许多关系,看起来就像三爪乌鸦的脚。

乌鸦脚

这是一个使用 Crow's Foot 符号的 ERD 示例:

鱼尾纹的例子

巴赫曼 (Bachman)

下面是与巴赫曼符号风格一起使用的符号示例。

巴赫曼ERD

下面是一个使用 Bachman 符号的 ERD 示例:

Bachman 示例 ERD

IDEF1X

下面是用于 IDEF1X 符号样式的符号示例。

IDE1FX 符号

这是使用 IDEF1X 表示法的示例 ERD:

IDE1FX 示例 ERD

巴克 (Baker)

下面是与 Barker 符号样式一起使用的符号示例。

巴克 ERD 符号

下面是一个使用 Bachman 符号的 ERD 示例:

巴克示例 ERD

概念的 (Conceptual)、逻辑的 (Logical)、物理的 (Physical)

可以在三个不同的层次上绘制实体关系图:概念、逻辑或物理。

这些级别中的每一个都有不同的详细级别,用于不同的目的。

让我们看一些例子。

概念数据模型 (Conceptual Model)

概念数据模型显示系统中存在的业务对象以及它们如何相互关联。

它定义了存在的实体,这些实体不一定是表。对于这种类型的数据模型,对表格的思考过于详细。

此处显示了概念数据模型的示例。它显示了学生、课程以及它们之间的关系。

概念性ERD

逻辑数据模型 (Logical Model)

逻辑模型是概念数据模型的更详细版本。属性被添加到每个实体,并且可以添加更多实体来表示区域以在系统中捕获数据。

下面是作为逻辑数据模型创建的学生和课程数据模型的示例。

逻辑ERD

物理数据模型 (Physical Model)

物理数据模型是这个过程中最详细的数据模型。它定义了一组表和列以及它们如何相互关联。它包括主键和外键,以及每列的数据类型。

这些图表可以在数据建模工具中手动创建。它们通常也由 IDE 从现有数据库生成。

这是学生和课程物理数据模型的示例。

物理ERD

下表概述了概念、逻辑和物理模型之间的差异:

特征概念性的逻辑的身体的
实体是的是的是的
关系是的是的是的
属性是的是的
属性类型是的
钥匙是的

如何创建实体关系图

那么如何创建数据模型或实体关系图呢?

我在我的关系数据库设计课程中详细介绍了这一点,我也在我的数据库设计指南中进行了解释。

创建 ERD 的过程是:

  1. 写一两句关于您存储数据的内容
  2. 列出你存储的数据——名词/对象
  3. 列出要为每个对象存储的信息
  4. 描述每个对象之间的关系
  5. 画图

此处列出的步骤很简短,但该过程可能需要一些时间,具体取决于您对系统的熟悉程度以及您在创建实体关系图方面的经验。

创建实体关系图的技巧

以下是创建实体关系图的一些技巧:

  • 根据图表的目的确定正确的详细程度。开发团队通常会发现逻辑模型最有用,但其他人可能会发现概念模型更有价值。
  • 查看实体和属性以查看它们是否包含您要存储在系统中的所有内容。
  • 命名所有实体和属性。
  • 如果您有一个大图表,请考虑使用颜色来突出显示不同的部分,或将其分解为较小的图表。
  • 与您的命名和使用的符号保持一致。

结论

实体关系图是一个很好的工具,可以帮助您定义、理解和沟通系统的需求。它可以在高层(概念数据模型)、详细级别(物理数据模型)或中间级别(逻辑数据模型)进行建模。

有一系列的建模符号或符号类型,它们定义了如何捕获实体、属性和关系。

如果您想开始为您的系统创建ERD,可以考虑在纸上画一个,或者使用Visual Paradigm Online 工具。


Visual Paradigm 的在线 ERD 软件使数据库设计变得快速而直接。ERD 图表工具具有创建专业、行业标准 ER 模型所需的所有 ERD 符号和连接器。无论您想创建概念、逻辑或物理数据模型, 下面汇总了一些 ERD 示例以帮助您入门。

单击 ER 图进行查看,或单击编辑按钮开始编辑。

大学(ER图示例)

大学

在线相册(ER图示例)

在线相册

小额贷款系统(ER 图示例)

小额贷款系统

研究合作与交流(ER图示例)

科研合作交流

简单订单系统(ER 图示例)

简单的订单系统

MIS(ER图示例)

管理信息系统

考试安排(ER图示例)

考试安排

在线书店(ER图示例)

网上书店

最喜欢的球队统计(ER图示例)

最喜欢的球队统计

学生分数 - 二元关系(ER 图示例)

学生成绩 - 二元关系

学生分数 - 三元关系(ER 图示例)

学生成绩 - 三元关系

医院(ER图示例)

医院

汽车保险(ER 图示例)

汽车保险

UPS 系统(ER 图示例)

不间断电源系统

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐