「数据架构」什么是实体关系图(ERD)?
Posted 超级架构师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「数据架构」什么是实体关系图(ERD)?相关的知识,希望对你有一定的参考价值。
数据库绝对是软件系统不可分割的一部分。在数据库工程中充分利用ER关系图,可以保证在数据库创建、管理和维护中产生高质量的数据库设计。ER模型还提供了一种通信手段。
今天我们将带你了解所有你需要知道的关于ER图解的知识。通过阅读ERD指南,您将获得关于ER图和数据库设计的基本知识和技能。你会学到ERD是什么,为什么,ERD符号,如何画ERD,等等,以及一些ERD的例子。
什么是ER图?
首先,什么是实体关系图?
实体关系图,又称ERD、ER图或ER模型,是一种用于数据库设计的结构图。ERD包含不同的符号和连接器,它们可视化两个重要的信息:系统范围内的主要实体,以及这些实体之间的相互关系。
这就是为什么它被称为“实体”“关系”图(ERD)!
当我们在ERD中谈到实体时,我们通常指的是业务对象,例如人员/角色(例如学生)、有形的业务对象(例如产品)、无形的业务对象(例如日志)等。“关系”是关于这些实体如何在系统中相互关联的。
在典型的ER设计中,您可以找到描述实体、实体属性和相互关系的符号,如圆角矩形和连接器(具有不同的端点样式)。
什么时候画ER图?
什么时候画erd ?虽然ER模型主要用于在概念可视化和物理数据库设计方面设计关系数据库,但是在其他情况下,ER图也可以提供帮助。下面是一些典型的用例。
数据库设计
——根据变化的规模,直接在DBMS中更改数据库结构可能有风险。为了避免破坏生产数据库中的数据,仔细计划更改是很重要的。ERD是一个有用的工具。通过绘制ER图来可视化数据库设计思想,您有机会识别错误和设计缺陷,并在数据库中执行更改之前进行更正。
数据库调试
——调试数据库问题很有挑战性,特别是当数据库包含许多表时,需要编写复杂的SQL来获取所需的信息。通过使用ERD可视化数据库模式,您可以全面了解整个数据库模式。您可以轻松地定位实体、查看它们的属性并确定它们与其他实体之间的关系。所有这些都允许您分析现有数据库并更容易地发现数据库问题。
数据库创建和补丁
—Visual Paradigm是一个ERD工具,它支持一个数据库生成工具,可以通过ER图的方式自动创建和补丁数据库。因此,有了这个ER图工具,ER设计就不再是一个静态的图,而是反映物理数据库结构的一面镜子。
帮助收集需求
——通过绘制描述系统高级业务对象的概念性ERD来确定信息系统的需求。这样的初始模型还可以演化为物理数据库模型,以帮助创建关系数据库,或帮助创建流程图和数据流模式。
ERD符号指南
ER图包含实体、属性和关系。在这一节中,我们将详细讨论ERD符号。
实体
ERD实体是一个系统内可定义的事物或概念,例如人/角色(例如学生)、对象(例如发票)、概念(例如概要)或事件(例如交易)(注:在ERD中,术语“实体”经常被用来代替“表”,但它们是相同的)。在确定实体时,将它们视为名词。在ER模型中,实体显示为圆角矩形,其名称位于顶部,其属性列在实体形状的主体中。下面的ERD示例显示了一个ER实体的示例。
实体属性
属性也称为列,是持有它的实体的属性或特征。
属性具有描述属性的名称和描述属性类型的类型,如字符串的varchar和整数的int。在为物理数据库开发绘制ERD时,务必确保使用目标RDBMS支持的类型。
下面的ER关系图示例显示了一个包含一些属性的实体。
主键
主键是一种特殊的实体属性,它惟一地定义了数据库表中的一条记录。换句话说,不能有两个(或多个)记录共享主键属性的相同值。下面的ERD示例显示了具有主键属性“ID”的实体“Product”,以及数据库中表记录的预览。第三条记录无效,因为另一条记录已经使用了ID 'PDT-0002'的值。
外键
外键也称为FK,是对表中主键的引用。它用于标识实体之间的关系。注意,外键不一定是唯一的。多条记录可以共享相同的值。下面的ER关系图示例显示了一个具有一些列的实体,其中外键用于引用另一个实体。
关系
两个实体之间的关系表示这两个实体以某种方式相互关联。例如,一个学生可能注册了一个课程。因此,实体学生与课程是相关的,而一种关系是连接他们之间的连接器。
基数
基数定义一个实体中可能出现的事件数,该实体与另一个实体中可能出现的事件数相关联。例如,一个队有很多队员。当在ERD中出现时,实体团队和玩家以一对多的关系相互连接。
在ER图中,基数表示为连接器两端的鱼尾纹。三种常见的基本关系是一对一、一对多和多对多。
一对一的基数的例子
一对一关系主要用于将一个实体一分为二,以提供简明的信息并使其更易于理解。下图显示了一对一关系的一个示例。
一对多的基数的例子
一对多关系是指两个实体X和Y之间的关系,其中X的一个实例可能链接到Y的多个实例,而Y的一个实例只链接到X的一个实例。
多对多的基数的例子
多对多关系是指两个实体X和Y之间的关系,其中X可以链接到Y的多个实例,反之亦然。下图显示了一个多对多关系的示例。注意,在物理ERD中,多对多关系被分割为一对一对多关系。在下一节中,您将了解什么是物理ERD。
概念、逻辑和物理数据模型
ER模型通常是在三个抽象层次上绘制的:
概念ERD /概念数据模型
逻辑ERD /逻辑数据模型
物理ERD /物理数据模型
虽然ER模型的所有三个级别都包含具有属性和关系的实体,但是它们在创建的目的和目标受众方面有所不同。
一般理解的三个数据模型是业务分析师使用概念模型和逻辑模型系统中的业务对象存在,而数据库设计师或数据库工程师阐述了概念和逻辑ER模型生成物理模型,提出了物理数据库结构准备创建数据库。下表显示了三种数据模型之间的差异。
概念模型vs逻辑模型vs数据模型:
ERD featuresConceptualLogicalPhysicalEntity (Name)YesYesYesRelationshipYesYesYesColumns YesYesColumn's Types OptionalYesPrimary Key YesForeign Key Yes
概念数据模型
概念性的ERD对系统中应该存在的业务对象及其之间的关系进行建模。开发了一个概念模型,通过识别所涉及的业务对象来呈现系统的总体情况。它定义了哪些实体存在,而不是哪些表。例如,“多对多”表可能存在于逻辑或物理数据模型中,但在概念数据模型中,它们只是作为没有基数的关系显示。
概念数据模型示例
注意:概念性ERD支持在建模两个实体之间的“一种”关系时使用泛化,例如,三角形是一种形状。这种用法类似于UML中的泛化。注意,只有概念性的ERD支持泛化。
逻辑数据模型
逻辑ERD是概念ERD的详细版本。通过显式定义每个实体中的列并引入操作实体和事务实体,可以开发逻辑ER模型来丰富概念模型。虽然逻辑数据模型仍然独立于将要创建数据库的实际数据库系统,但是如果它影响设计,您仍然可以考虑这一点。
逻辑数据模型示例
物理数据模型
物理ERD表示关系数据库的实际设计蓝图。物理数据模型通过为每个列分配类型、长度、可空值等来详细说明逻辑数据模型。由于物理ERD表示在特定DBMS中数据应该如何结构化和关联,因此考虑实际数据库系统的约定和限制是很重要的。确保DBMS支持列类型,并且在命名实体和列时不使用保留字。
物理数据模型示例
如何绘制ER图?
如果你发现很难开始画ER图,不要担心。在这一节中,我们将为您提供一些ERD技巧。尝试按照下面的步骤来理解如何有效地绘制ER图。
确定你清楚绘制ERD的目的。您是否试图呈现涉及业务对象定义的整个系统体系结构?或者您正在开发一个为数据库创建准备好的ER模型吗?您必须清楚在适当的细节级别开发ER关系图的目的(有关更多细节,请阅读“概念、逻辑和物理数据模型”一节)
确保您清楚要建模的范围。了解建模范围可以防止在设计中包含冗余实体和关系。
绘制范围中涉及的主要实体。
通过添加列来定义实体的属性。
仔细检查ERD,检查实体和列是否足够存储系统的数据。如果没有,则考虑添加其他实体和列。通常,您可以在此步骤中标识一些事务、操作和事件实体。
考虑所有实体之间的关系,并使用适当的基数(e。实体客户和订单之间的一对多关系)。不要担心是否存在孤儿实体。虽然不常见,但却是合法的。
应用数据库规范化技术以减少数据冗余和提高数据完整性的方式重构实体。例如,制造商的详细信息最初可能存储在Product实体下。在规范化的过程中,您可能会发现详细信息会重复记录,然后您可以将其作为单独的实体制造商进行拆分,并使用一个外键在产品和制造商之间进行链接。
数据模型的例子
ERD例子-电影租赁系统
ERD示例-贷款系统
ERD的例子-网上商店
将ERD与数据流图(DFD)结合使用
在系统分析和设计中,可以绘制数据流图来可视化系统过程中的信息流。在数据流图中,有一个称为数据存储的符号,它表示一个数据库表,该表提供系统所需的信息。
由于物理ER关系图提供了实际数据库的蓝图,所以ERD中的实体与DFD中的数据存储保持一致。您可以通过表示系统内流动的信息结构来绘制ERD,作为对DFD的补充,或者相反,通过显示系统在运行时将如何使用数据来绘制DFD,以补充ERD。
将ERD与BPMN业务流程图(BPD)一起使用
在业务流程映射中,可以绘制BPMN业务流程图(BPD)来可视化业务工作流。在业务流程图中,有一个称为数据对象的符号,它表示流程活动的数据输入/输出。
由于概念和逻辑数据模型提供了系统内业务对象的高级视图,因此此类erd中的实体与BPD中的数据对象是一致的。您可以通过表示业务工作流所需的数据对象的结构来绘制ERD,作为对BPD的补充,或者相反,通过显示如何在整个业务流程中使用数据来绘制BPD,以补充ERD。
选择ERD工具
使用ERD开发数据模型需要时间和精力。一个有用的数据库设计工具应该能够减少您所花费的时间和精力。Visual Paradigm不仅为您提供了ERD工具,还提供了一组可视化建模功能,帮助您更快、更轻松地绘制图形。它支持当今市场上大多数流行的关系数据库管理系统,包括数据库设计、数据库生成和ERD反转。
本文 | http://jiagoushi.pro/node/856 | |
讨论:请加入知识星球【首席架构师圈】或者加微信小号【jiagoushi_pro】或者加QQ群【11107777】 | ||
公众号 | 【jiagoushipro】 【超级架构师】 精彩图文详解架构方法论,架构实践,技术原理,技术趋势。 我们在等你,赶快扫描关注吧。 | |
微信小号 | 【cea_csa_cto】 50000人社区,讨论:企业架构,云计算,大数据,数据科学,物联网,人工智能,安全,全栈开发,DevOps,数字化. | |
QQ群 | 【11107767】深度交流企业架构,业务架构,应用架构,数据架构,技术架构,集成架构,安全架构。以及大数据,云计算,物联网,人工智能等各种新兴技术。 加QQ群,有珍贵的报告和干货资料分享。 | |
视频号 | 【超级架构师】 1分钟快速了解架构相关的基本概念,模型,方法,经验。 每天1分钟,架构心中熟。 | |
知识星球 | 向大咖提问,近距离接触,或者获得私密资料分享。 | 知识星球【首席架构师圈】 |
微信圈子 | 志趣相投的同好交流。 | 微信圈子【首席架构师圈】 |
喜马拉雅 | 路上或者车上了解最新黑科技资讯,架构心得。 | 【智能时刻,架构君和你聊黑科技】 |
知识星球 | 认识更多朋友,职场和技术闲聊。 | 知识星球【职场和技术】 |
微博 | 【智能时刻】 | 智能时刻 |
哔哩哔哩 | 【超级架构师】 | |
抖音 | 【cea_csa_cto】超级架构师 | |
快手 | 【cea_csa_cto】超级架构师 | |
小红书 | 【cea_csa_cto】超级架构师 | 首席架构师智库 |
谢谢大家关注,转发,点赞和点在看。
从 Rails 代码创建 ERD 类型图
【中文标题】从 Rails 代码创建 ERD 类型图【英文标题】:Create ERD type diagrams from Rails code 【发布时间】:2010-10-14 04:57:14 【问题描述】:我开始学习 Ruby on Rails,并查看其他人的代码。有什么方法可以利用现有的代码库并创建对象关系图或实体关系图 (ERD)?
我知道 Visio 可以在给定数据库的情况下做一些事情,但我希望生成类和对象的图表。
【问题讨论】:
【参考方案1】:另外Rails ERD也不错。它比 Railroad 简单一点,但它仍然是一个伟大的项目。
【讨论】:
【参考方案2】:Rails ERD 具有出色的文档和图库: http://rails-erd.rubyforge.org/gallery.html
【讨论】:
【参考方案3】:如果我没记错的话,一些 IDE 有这个功能。
【讨论】:
【参考方案4】:您可能想查看Railroad。它需要您的 Rails 项目并将其可视化。它可以根据您的模型(基于 has_many、has_and_belongs_to_many 等)、控制器(基于继承层次结构)和状态机图创建图表,我从未使用过。
但它非常酷,并且可以做它应该做的事情。它可能没有 Visio 的所有功能,但它是一个非常好的解决方案。
【讨论】:
Railroad 不适用于 Rails 3,但是这个插件可以正常工作:github.com/voormedia/rails-erd 我希望我能支持 rdvddijk 的评论 - 铁路现在已经很老了。然而,Rails ERD 只需几秒钟即可安装并且效果很好。 由于 Railroad 无法使用 ruby 1.9.2 和 rails 3.0.10,您可以使用 Railroady,正如我在另一篇 SO 帖子中了解到的那样:***.com/questions/7624457/…以上是关于「数据架构」什么是实体关系图(ERD)?的主要内容,如果未能解决你的问题,请参考以下文章