参考文章:

本文链接:https://blog.csdn.net/chktsang/article/details/122110197

一、简介

实体关系图(Entity Relationship Diagram,ERD),可以查看不同实体(例如人员、客户或其他对象)在应用程序或数据库中如何相互关联,是一种用于数据库设计的结构图。

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

数据库是软件系统中不可或缺的一个组成部分,若能在数据库工程中好好利用 ERD 图,便能让您生成高质量的数据库设计,用于数据库创建,管理和维护,也为人员间的交流提供了有意义的基础。

二、实体关系图(ERD)的组成元素

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

1.实体(Entity)

实体是可以存储有关它的数据的事物。它可以是物理对象(例如汽车、人)、概念(例如地址)或事件(例如学生注册课程、交易)。它们代表名词。(注:在 ERD 中,术语“实体”通常用来代替“表”,但它们是一样的)。

在 ERD模型中,实体显示为圆角矩形,其名称位于上方,其属性列在实体形状的主体中。下面的 ERD 示例显示了 ERD 实体的一个用例。它们通常表示为 ERD 上的矩形,矩形内带有实体名称。

实体分为强实体和弱实体:

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

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

2.关系(Relationship)

实体关系图(ERD)中的关系定义了两个实体如何相互关联。当谈到数据库或一组实体时,它们可以从动词派生。例如,学生可能参加课程。实体“学生”因此与“课程”相关,而这关系则在 ER 图中以连接线表达着。

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

基数 (Cardinality)

基数定义了一个实体与另一个实体的关系里面,某方可能出现次数。例如,一个团队有许多球员,若把这关系呈现于 ERD 时,团队和球员之间是一对多的关系。

在 ERD中,基数表示为连接线端的乌鸦脚。三种常见的主要关系是一对一,一对多和多对多。

乌鸦脚 (Crow's Foot)

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

下面是一个使用乌鸦脚符号的 ERD 示例: 

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

一对一:实体的一条记录与实体的另一条记录直接相关,一对一关系主要用于将实体分成两部分,简洁地将资讯呈现,使读者更容易理解。下图显示了一对一关系的示例。

 一对多:一个实体的一个记录与另一个实体的一个或多个记录相关。一对多关系是指两个实体 X 和 Y 之间的关系,其中 X 的一个实例可以链接到Y的许多实例,而 Y 的一个实例仅链接到 X 的一个实例。下图显示了一对多关系的一个例子。


多对多:一个实体的多条记录可以与另一实体的多条记录相关。多对多关系是指两个实体 X 和 Y 之间的关系,其中 X 可以被链接到 Y 的许多实例,反之亦然。下图显示了一个多对多关系的例子。

3.属性(Attribute)

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

也称为列 (Row),意思是持有它的实体的属性或特性。

一个属性有一个描述属性的名称和一个描述属性种类的类型,例如代表字符串的 varchar,整数的 int。当为物理数据库开发绘制 ERD 时,得使用目标 RDBMS 支持的类型,以确保设计和物理数据库的一致性。

下面的 ER图示例显示了包含属性的实体。

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

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


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

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

主键 (Primary Key)

主键又称 PK,是一种特殊的实体属性,用于界定数据库表中的记录的独特性。一个表不能有两笔(或更多)拥有相同的主键属性值的记录,像是身份证明内的 ID 便是典型的例子,两个人即使性名相同,ID 是不会一样,若身份证明是个表,那ID 便是主键了。下面的 ERD 示例显示了拥有主键属性 “ID” 的实体 “Product”,以及数据库中表记录的预览。第三个记录是无效的,因为 ID 'PDT-0002' 的值已被另一个记录使用。

 

外键 (Foreign Key)

外键又称外来键和外部键,是对主键的引用,用于识别实体之间的关系。请注意,有别于主键,外键不必是唯一的,多个记录可以共享相同的值。下面的 ERD示例显示了一个包含一些列的实体,其中一个外键用于引用另一个实体。

 

三、不同的层次上绘制实体关系图(ERD)

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

1.概念数据模型(Conceptual Model)

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

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

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

2.逻辑数据模型 (Logical Model)

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

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


 

3.物理数据模型 (Physical Model)

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

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

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


四、什么时候绘制实体关系图(ERD)

  • 数据库设计 - 直接在数据库更改数据库结构会有风险, 为避免破坏数据库中的数据,我们得仔细规划一切变更。通过绘制 ERD 图来展示数据库设计意念,您能轻松找出错误和识别设计缺陷,并在执行数据库更改之前作出修正。
  • 数据库调试 - 调试数据库问题往往具有挑战性,特别是当数据库包含许多表时,你我编写复杂的SQL来获取所需的信息。通过 ERD 来展示数据库结构,您可以全面地了解整个数据库的结构。您可以轻松找到实体,查看其属性并确定与别的实体的关系,有助您更轻松地找出数据库的问题。
  • 数据库创建和修补 - 像 Visual Paradigm 这样的 ERD 软件支持数据库生成工具,可以通过ER图来自动生成和修补数据库。使用这个 ERD 图工具,您的ER设计不再仅仅是一个静态图,而是一个真实反映物理数据库结构的镜像。
  • 帮助收集需求 - 您可以通过绘制 ERD 来表达系统中的高级业务对象以用于确定系统的需求。这种初始模型也可以演化为物理数据库模型,用于创建关系数据库,或为创建流程图和数据流模型提供有力的参考。

五、创建实体关系图(ERD)

创建实体关系图(ERD)的过程是:

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

创建实体关系图(ERD)的技巧:

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

如果您想开始为您的系统创建ERD,可以考虑在纸上画一个,或者使用Visual Paradigm Online 工具。Visual Paradigm 的在线 ERD 软件使数据库设计变得快速而直接。ERD 图表工具具有创建专业、行业标准 ER 模型所需的所有 ERD 符号和连接器。

六、ERD示例

下面汇总了一些 ERD 示例以帮助您入门。

大学


在线相册

小额贷款系统

科研合作交流

 简单的订单系统

管理信息系统

 

考试安排

 

网上书店

 

最喜欢的球队统计

 

学生成绩-二元关系

 

学生成绩-三元关系

 

医院 

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐