er图转为数据流程图_「数据架构」实体关系模型介绍

实体-关系模型(或ER模型)描述特定知识领域中相关的事物。基本的ER模型由实体类型(对感兴趣的事物进行分类)和指定实体之间可能存在的关系(那些实体类型的实例)组成。

在软件工程中,为了执行业务流程,ER模型通常用于表示业务需要记住的内容。因此,ER模型变成了一个抽象的数据模型,它定义了一个可以在数据库(通常是关系数据库)中实现的数据或信息结构。

实体-关系建模是由Peter Chen开发的数据库和设计,并在1976年发表了一篇论文。然而,这个想法的变体之前就已经存在了。一些ER模型显示由一般化-专门化关系连接的超实体和子类型实体,[3]和ER模型也可用于特定领域本体的规范

1bbec0fa20334b8632e90fcc7a8412e9.png

使用Chen符号的MMORPG的实体关系图。

介绍

E-R模型通常是系统分析的结果,用于定义和描述业务领域中哪些流程是重要的。它没有定义业务流程;它只以图形形式表示业务数据模式。它通常以图形形式绘制为方框(实体),这些方框由表示实体之间的关联和依赖关系的线(关系)连接。ER模型也可以用口头形式表达,例如:一栋建筑可以分为零个或多个公寓,但一个公寓只能位于一栋建筑内。

实体不仅可以由关系来描述,还可以由附加的属性(属性)来描述,这些属性包括称为“主键”的标识符。为表示属性以及实体和关系而创建的图可以称为实体-属性-关系图,而不是实体-关系模型。

ER模型通常作为数据库实现。在简单关系数据库实现中,表的每一行表示实体类型的一个实例,表中的每个字段表示属性类型。在关系数据库中,实体之间的关系是通过将一个实体的主键作为指针或“外键”存储在另一个实体的表中来实现的

传统上,ER/数据模型是在两个或三个抽象级别上构建的。注意,下面的概念-逻辑-物理层次结构用于其他类型的规范,并且与软件工程的三种模式方法不同。

概念数据模型

这是最高级别的ER模型,因为它包含了最少的粒度细节,但是建立了模型集中所包含内容的总体范围。概念ER模型通常定义了组织通常使用的主引用数据实体。开发企业范围的概念ER模型对于支持组织的数据架构文档化非常有用。

一个概念性的ER模型可以用作一个或多个逻辑数据模型的基础(参见下面)。概念ER模型的目的是在一组逻辑ER模型之间建立主数据实体的结构元数据共性。概念数据模型可用于在ER模型之间形成共性关系,作为数据模型集成的基础。

逻辑数据模型

逻辑ER模型不需要概念ER模型,特别是当逻辑ER模型的范围仅包括开发不同的信息系统时。逻辑ER模型比概念ER模型包含更多的细节。除了主数据实体之外,现在还定义了操作和事务数据实体。开发每个数据实体的详细信息,并建立这些数据实体之间的关系。然而,逻辑ER模型是独立于特定的数据库管理系统开发的,它可以在该系统中实现。

物理数据模型

可以从每个逻辑ER模型开发一个或多个物理ER模型。物理ER模型通常被开发为实例化为数据库。因此,每个物理ER模型必须包含足够的细节来生成数据库,而且每个物理ER模型都依赖于技术,因为每个数据库管理系统有所不同。

物理模型通常在数据库管理系统的结构元数据中实例化,如关系数据库对象(如数据库表)、数据库索引(如惟一键索引)和数据库约束(如外键约束或共性约束)。ER模型通常还用于设计对关系数据库对象的修改和维护数据库的结构元数据。

信息系统设计的第一阶段在需求分析期间使用这些模型来描述信息需求或将存储在数据库中的信息类型。数据建模技术可以用来描述某个兴趣领域的任何本体(即使用术语及其关系的概述和分类)。在设计基于数据库的信息系统时,概念数据模型在后期(通常称为逻辑设计)被映射到逻辑数据模型,例如关系模型;这反过来又在物理设计期间映射到物理模型。注意,有时这两个阶段都被称为“物理设计”。

实体关系模型

a387188434f97e938417c3fe157d6b5f.png

两个相关的实体

cff1e6c764310fb56feab943c78e759b.png

具有属性的实体

79f6dd405be17d2badbbf7f48d450199.png

与属性的关系

5cfb8ecee9115e485c55697f4f360e88.png

主键

一个实体可以被定义为一个能够被唯一识别的独立存在的事物。实体是对领域复杂性的抽象。当我们谈到一个实体时,我们通常指的是现实世界的某些方面,这些方面与现实世界的其他方面是不同的

实体是物理上或逻辑上存在的事物。实体可以是一个物理对象,如房子或汽车(它们以物理形式存在),一个事件,如房屋销售或汽车服务,或一个概念,如客户交易或订单(它们以概念的形式逻辑地存在)。虽然“实体”是最常用的一个术语,但在陈之后,我们应该真正区分实体和实体类型。实体类型是一个类别。严格地说,实体是给定实体类型的实例。实体类型通常有许多实例。因为术语实体类型有点麻烦,大多数人倾向于使用术语实体作为该术语的同义词

实体可以被认为是名词。例如:一台电脑,一个雇员,一首歌,一个数学定理,等等。

关系捕获实体之间的关系。关系可以被认为是动词,连接两个或多个名词。例如:a拥有公司和电脑之间的关系,a管理员工和部门之间的关系,a表演艺术家和一首歌之间的关系,a证明数学家和一个猜想之间的关系,等等。

上面描述的模型的语言方面在模仿自然语言构造的声明式数据库查询语言ERROL中得到了利用。ERROL的语义和实现基于重新构造的关系代数(RRA), RRA是一种适应实体-关系模型并捕捉其语言方面的关系代数。

实体和关系都可以有属性。示例:雇员实体可能具有社会保险号(SSN)属性,而已证明的关系可能具有日期属性。

每个实体(除非它是弱实体)必须有一组最小的惟一标识属性,这称为实体的主键。

实体关系图不显示单个实体或单个关系实例。相反,它们显示实体集(同一实体类型的所有实体)和关系集(同一关系类型的所有关系)。例如:一首歌是一个实体;数据库中所有歌曲的集合是一个实体集;孩子和午餐之间被吃掉的关系是单一的关系;数据库中所有这些儿童-午餐关系的集合就是一个关系集合。换句话说,一个关系集合对应于数学上的一个关系,而一个关系对应于关系中的一个成员。

还可以指定关系集上的某些基数约束。

映射自然语言

陈提出了将自然语言描述映射到ER图的“经验法则”:Peter Chen的“英语、汉语和ER图”。

English grammar structureER structureCommon nounEntity typeProper nounEntityTransitive verbRelationship typeIntransitive verbAttribute typeAdjectiveAttribute for entityAdverbAttribute for relationship

物理视图显示数据的实际存储方式。

关系、角色和基数

在陈的原始论文中,他给出了一个关系及其作用的例子。他将一段关系描述为“婚姻”,并将其分为“丈夫”和“妻子”两个角色。

一个人在婚姻(关系)中扮演丈夫,另一个人在同一婚姻中扮演妻子。这些词是名词。这并不奇怪;给东西命名需要一个名词。

陈的术语也被用于早期的思想。一些图表的线条、箭头和鱼尾纹更多的是源于早期的巴赫曼图表,而不是陈的关系图表。

陈模型的另一个常见扩展是将关系和角色“命名”为动词或短语。

角色的命名

用is的所有者和is所属的短语来命名角色也变得很流行。这里正确的名词是owner和possession。因此,人扮演所有者的角色,汽车扮演占有的角色,而不是人扮演所有者的角色,等等。

当从语义模型生成物理实现时,名词的使用有直接的好处。当一个人与car有两种关系时,就有可能产生像owner_person和driver_person这样的名字,这是有意义的

基数

对原始规范的修改是有益的。陈描述了四处查看的基数。顺便说一句,在Oracle Designer中使用的Barker-Ellis符号使用同侧表示最小基数(类似于可选性)和角色,但是查找最大基数(乌鸦脚)。(需要澄清)

在Merise,[6] Elmasri & Navathe[7]和其他[8]中,对于角色以及最小和最大基数都有对同侧的偏好。最近的研究人员(Feinerer,[9] Dullea等人,[10])已经表明,当应用于n元关系大于2时,这是更连贯的。

在Dullea等人看来,“在UML中使用的‘查看’表示法并不能有效地表示施加在关系上的参与约束的语义,这些关系的程度高于二进制。”

Feinerer说:“如果我们像使用UML关联那样在查找语义下操作,就会出现问题。”Hartmann[11]调查了这种情况,并展示了不同的转换是如何以及为什么会失败。”(虽然上面提到的“简化”是虚假的,因为两个图3.4和3.5实际上是相同的),而且“正如我们在接下来的几页中看到的,这种交叉解释引入了一些困难,这些困难阻止了简单机制从二元关联扩展到n元关联。”

陈的实体-关系建模表示法使用矩形表示实体集,用菱形表示适合于一级对象的关系:它们可以有自己的属性和关系。如果一个实体集参与了一个关系集,它们将被连接到一条线上。

属性被绘制为椭圆,并与一条线连接到一个实体或关系集。

基数约束表示如下:

  • 双线表示参与约束、总体或满射:实体集合中的所有实体必须参与关系集合中的至少一个关系;
  • 从实体集到关系集的箭头表示一个关键约束,即注入性:实体集的每个实体最多可以参与关系集中的一个关系;
  • 粗线表示两者,即双射性:实体集合中的每个实体只涉及一个关系。
  • 属性的带下划线名称表示它是键:与此属性相关的两个不同实体或关系总是具有此属性的不同值。
  • 属性经常被省略,因为它们会使图表混乱;其他图表技术通常在为实体集绘制的矩形中列出实体属性。

相关图表的约定技术:

  • 巴赫曼符号
  • 巴克的符号
  • 表达
  • IDEF1X
  • 鱼尾纹符号(也叫马丁符号)
  • (min, max)- 1974年Jean-Raymond Abrial的记谱法
  • UML类图
  • Merise
  • Object-role建模
d7fa94347306ac8a4947a51bd9a5dec6.png

将同一关系表示为多个关系的各种方法。在每种情况下,图表都显示了一个人和一个出生地之间的关系:每个人都必须在一个地点出生,而且只能在一个地点出生,但是每个地点可能没有或有更多的人出生在那里。

48017e1407800ee9d991a0245a868687.png

两个相关的实体显示使用鱼尾纹符号。在这个例子中,歌手和歌曲之间显示了一个可选的关系;最接近歌曲实体的符号代表“0、1或多个”,而一首歌有“一个且只有一个”艺术家。因此,前者被理解为艺术家可以表演“零首,一首,或多首”歌曲。

乌鸦脚符号

鱼尾纹符号,其起源可追溯到戈登埃佛勒斯特(1976)的一篇文章,[12]用于巴克的符号,结构化系统分析与设计方法(SSADM)和信息技术工程。鱼尾纹图将实体表示为框,将关系表示为框之间的线。这些线两端的不同形状表示关系的相对基数。

在咨询公司CACI中使用了鱼尾纹符号。CACI的许多顾问(包括Richard Barker)后来都搬到了Oracle英国,在那里他们开发了Oracle CASE工具的早期版本,并将这种表示法介绍给更广泛的用户。

使用这种表示法,关系不能有属性。在必要时,关系提升为实体的:例如,如果需要捕捉艺术家表演歌曲,介绍了一个新的实体“性能”(属性反映了时间和地点),和艺术家,歌曲的关系成为一个间接的通过性能(artist-performs-performance performance-features-song)的关系。

三个符号用来表示基数:

  • 这个环代表“0”
  • 破折号代表“1”
  • 鱼尾纹代表“许多”或“无限”

这些符号成对使用,表示一个实体在关系中可能具有的四种基数类型。符号的内部分量表示最小值,外部分量表示最大值。

  • 环和破折号→最小零,最大一(可选)
  • 破折号与破折号→最小一,最大一(强制)
  • 环和鱼尾纹→最小零,最大多(可选)
  • 破折号和鱼尾纹→最少一项,最多多项(强制)

模型可用性问题

在使用建模的数据库时,用户可能会遇到两个众所周知的问题,其中返回的结果与查询作者假定的结果不同。

第一个是“粉丝陷阱”。它与一个(主)表一起出现,该表以一对多的关系链接到多个表。这个问题的名称来自于模型在实体关系图中绘制时的样子:从主表“展开”的链接表。这种类型的模型与星型模式类似,星型模式是数据仓库中使用的一种模型。当试图使用主表上的标准SQL计算聚合的总和时,会出现意外(和不正确)的结果。解决方案是调整模型或SQL。此问题主要发生在决策支持系统的数据库中,查询此类系统的软件有时包括处理此问题的特定方法。

第二个问题是“鸿沟陷阱”。当模型表明实体类型之间存在某种关系,但某些实体之间不存在路径时,就会出现鸿沟陷阱。例如,一个建筑物有一个或多个房间,这些房间可以容纳0或更多的计算机。人们希望能够查询该模型以查看大楼中的所有计算机。然而,目前没有分配到房间的电脑(因为它们正在修理或在其他地方)不在列表中。建筑和计算机之间的另一种关系是需要捕获建筑中所有的计算机。最后一个建模问题是由于未能在模型中捕获现实世界中存在的所有关系。详见实体-关系建模2。

实体关系和语义建模

语义模型

语义模型是概念的模型,有时被称为“平台无关模型”。这是一个内涵模式。自Carnap以来,最晚的是众所周知的:[13]

“…概念的全部意义由概念的内涵和外延两个方面构成。第一部分包括概念作为一个整体嵌入到概念的世界中,即所有与其他概念的关系的总和。第二部分确立了概念的指称意义,即它在现实世界或可能世界中的对应物。

扩展模型

扩展模型是映射到特定方法或技术元素的模型,因此是“特定于平台的模型”。UML规范明确地声明类模型中的关联是扩展的,通过考虑规范提供的比任何先前候选的“语义建模语言”提供的更多的“装饰”,这实际上是不言而喻的。UML作为数据建模符号,第2部分"

实体关系的起源

ER建模之父Peter Chen在他的开创性论文中说:

实体-关系模型采用更自然的观点,认为现实世界由实体和关系组成。它整合了一些关于现实世界的重要语义信息。”[1]

在他1976年的原始文章中,陈明确对比了实体关系图和记录建模技术:

数据结构图是记录组织的表示,而不是实体和关系的精确表示。

其他几位作者也支持陈的项目:[14][15][16][17][18]

哲学对齐

从古希腊哲学家苏格拉底、柏拉图和亚里士多德(公元前428年)到现代认识论、符号学和逻辑学的皮尔斯、弗雷格和罗素,陈都符合他们的哲学和理论传统。

柏拉图本人将知识与对不变形式的理解(根据苏格拉底的说法,这些形式大致上是许多类型的事物和属性的原型或抽象表示)及其相互之间的关系联系起来。

限制

  • ER假设可以在关系数据库中方便地表示信息内容。它们只描述了此信息的关系结构。
  • 它们不适用于信息不能以关系形式(需要引用)表示的系统,例如半结构化数据。
  • 对于许多系统来说,对所包含的信息进行可能的更改是非常重要的,足以保证明确的规范。
  • 一些(谁?作者扩展了ER建模,用结构来表示变化,这种方法得到了最初作者的支持;[19]是锚建模的一个例子。另一种方法是使用流程建模技术分别对更改进行建模。其他技术可以用于系统的其他方面。例如,ER模型大致对应于UML提供的14种不同建模技术中的1种。
  • 即使在原则上合适的地方,ER建模也很少作为单独的活动使用。原因之一是现在有大量的工具可以直接支持关系数据库管理系统上的图表绘制和其他设计支持。这些工具可以很容易地从现有数据库中提取与ER关系图非常接近的数据库关系图,并且它们提供了关于此类关系图中包含的信息的可选视图。
  • 在一项调查中,Brodie和Liu[20]在十个财富100强公司的样本中找不到一个实体-关系建模的实例。Badia和Lemire[21]将这种缺乏使用归咎于缺乏指导,但也归咎于缺乏好处,比如缺乏对数据集成的支持。
  • 增强实体-关系模型(EER建模)引入了一些与面向对象设计密切相关的概念,而不是ER建模,比如is-a关系。
  • 为了对时态数据库建模,已经考虑了许多ER扩展。类似地,ER模型被发现不适合多维数据库(用于OLAP应用程序);在这一领域还没有出现主流的概念模型,尽管它们通常围绕OLAP cube(在该领域内也称为数据立方体)的概念

另请参阅

  • Associative entity
  • Concept map
  • Database design
  • Data structure diagram
  • Enhanced entity–relationship model
  • Enterprise architecture framework
  • Value range structure diagrams
  • Comparison of data modeling tools
  • Ontology
  • Object-role modeling
  • Three schema approach
  • Structured-Entity-Relationship-Model
  • Schema-agnostic Databases

原文:https://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model

本文:http://jiagoushi.pro/entity-relationship-model-0

讨论:请加入知识星球【首席架构圈】或者飞聊小组【首席架构师智库】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312433.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WeihanLi.Npoi 1.7.0 更新介绍

WeihanLi.Npoi 1.7.0 更新介绍Intro昨天晚上发布了 WeihanLi.Npoi 1.7.0 版本,增加了 ColumnInputFormatter/ ColumnOutputFormatter,又进一步增强了导入导出的灵活性,来看下面的示例ColumnInputFormatter/ColumnOutputFormatter示例 Model:i…

【复杂系统迁移 .NET Core平台系列】之迁移项目工程

源宝导读:微软跨平台技术框架—.NET Core已经日趋成熟,已经具备了支撑大型系统稳定运行的条件。本文将介绍明源云ERP平台从.NET Framework向.NET Core迁移过程中的实践经验。一、背景随着ERP的产品线越来越多,业务关联也日益复杂,…

分析股票大数据_Python大数据分析量学祖师爷网站数据

本文通过Python抓取股海明灯涨停预报数据进行分析,股海明灯网站涨停预报数据跟踪功能是需要VIP权限,但这个权限分析数据的功能有限,我们抓取数据后丰富相关功能。一、点击涨停预报后打开以下页面。通过python程序将数据抓取到后台数据库&…

【复杂系统迁移 .NET Core平台系列】之界面层

源宝导读:微软跨平台技术框架—.NET Core已经日趋成熟,已经具备了支撑大型系统稳定运行的条件。本文将介绍明源云ERP平台从.NET Framework向.NET Core迁移过程中的实践经验。一、背景随着ERP的产品线越来越多,业务关联也日益复杂,…

.NET Core MVC扩展实践

源宝导读:明源云ERP的底层架构正在向.Net Core跨平台迁移,我们在过程中遇到了部分不兼容的问题。本文将介绍技术团队如何解决.Net Core与已有MVC框架不兼容问题的解决方案。一、背景云ERP的建模平台是基于.NET Framework构建的,在向.NET Core…

matlab title多个标题_MATLAB中的直方图处理及均衡化

直方图是多种空间域处理技术的基础。仿图操作能有效地用于图像增强,直方图固有的信息在其他图像处理应用中也是非常有用的,如图像压缩与分割。訪图在软件中易于计算,也适用于商用硬件设备,因此直方图成为实时图像处理的一个流行工…

成本计算引擎动态规则解析技术详解

源宝导读:随着企业数字系统应用的越来越深入,业务计算方式也变的越来越复杂,灵活度要求也越来越高。本文将介绍通过将配置动态转换成可执行代码的方式,解决业务计算高度灵活化配置的技术方案。一、背景ERP本质上是一种“业务密集型…

Kubernetes,多云和低代码数据科学:2020年最热门的数据管理趋势

新兴技术为我们的数据之旅铺平了道路。我们已经看到Kubernetes在应用程序自动化方面处于领先地位,越来越多的公司将赌注押在了云上,以及当今的企业对数据科学的依赖程度正不断提,再加上对大数据的人工智能高级分析,可以看到数据管…

matlab光盘映像文件可以删除吗_DVD-Cloner 2020 for mac(DVD光盘刻录工具) 7.00.715

DVD-Cloner Gold 2020版是功能强大的DVD光盘刻录工具,DVD-Cloner Gold 2020版可以轻松刻录光盘以及蓝光光盘,用户可以将任何的文件刻录到DVD光盘中,并可以制作为蓝光光盘,可以很方便地录入视频到光盘中进行保存,刻录好…

性能优化 = 改改代码?

大家好,我是Z哥。好久没写技术文章了,最近正好有进行一些思考,顺手写出来分享给大家。如果不是程序员的话,可以快速扫一眼正文的几个小标题,快速略过即可,毕竟思路和专业无关,很多是相通的。&am…

使用refs获取节点_闲庭信步聊前端 - 原来你是这样的Refs

一、refs 的由来什么是refsrefs是拿到真实的DOM节点和React元素实例的一种方法。在React官方文档中有提到Refs 提供了一种方式,允许我们访问 DOM 节点或在 render 方法中创建的 React 元素。 React是单向的数据流,父子组件的交互是通过props。修改子组件…

从TimeSpan说起

小编在编写WPF程序时,需要做一个判断:定时使用Modbus协议使用Quartz.net 定时任务读取设备中的数据,同时也使用定时任务判断是否长时间获取不到数据的情况,如果程序中超过一分钟没有获取到数据(数据没有更新&#xff0…

如何维持手机电池寿命_延长手机电池寿命终极技巧教学,iPhone和安卓手机皆适合...

每隔一阵子就开始有不少用户询问,iPhone电池健康度又剩下多少了,怎么朋友的还维持在100%,是不是我手机电池出问题,引起不少用户翻白眼。会有电池健康度,最主要是要让大家了解目前手机电池当前寿命,只要电池…

2020年了,再不会Https就老了

合格的web后端程序员,除搬砖技能,还必须会给各种web服务器启用Https,本文结合ASP.NET Core部署模型聊一聊启用Https的方式。温故知新目前常见的Http请求明文传输,请求可能被篡改,访问的站点可能被伪造。HTTPS是HTTP加上…

c语言枚举类型例题_[开源资讯]Zig 0.6.0 发布,想要挑战 C 语言

Zig 0.6.0 已发布,这是一门通用编程语言,专为稳定性、可维护性和性能而设计,追求替代 C 语言在系统编程上的最佳地位。Zig 具有以下值得关注的特性:手动管理内存与 C 语言竞争而非依赖它,Zig 标准库不依赖于 libc轻量而…

【实战 Ids4】║ 给授权服务器加个锁——HTTPS配置

在上篇文章《【实战 Ids4】║客户端、服务端、授权中心全线打通!》中,我们正式的将三站打通,发布过后,有小伙伴反馈,可能Nginx对配置HTTPS安全协议有点儿问题,我也就半夜趁着没人打扰,疯狂的研究…

快速幂 a*b%c

2020.12.30开始学习AcWing算法《算法竞赛进阶指南》&#xff1b; 在CSDN上传博客方便复习。 //wecccccccc //2020.12.30 #include <iostream> using namespace std; typedef long long int ll;ll fast_power(ll a, ll b, ll c) {ll ans 1;a % c;//防止一开始输入的值过…

thinkphp 助手函数url不生成https_如何用ThinkPHP框架写一个快递查询接口

ThinkPHP是php程序员们经常使用的框架之一&#xff0c;运用框架来开发网站无疑减轻了我们代码量&#xff0c;加快了我们的开发速度&#xff0c;框架底层封装的方法和函数使用起来简直不能太爽。今天给大家总结一个小案例&#xff0c;如何实现一个快递查询的接口。所谓接口&…

64位整数乘法

2020.12.30开始学习AcWing算法《算法竞赛进阶指南》&#xff1b; 上传博客方便复习。 //Wecccccccc //2020.12.30 #include <iostream> using namespace std; typedef unsigned long long int ull;int main() {ull a, b, c;cin >> a >> b >> c;ull ans…

分布式锁的实现与探索

源宝导读&#xff1a;大型的信息化系统对数据准确性的要求很高&#xff0c;所以经常会使用事务、锁、队列等技术&#xff0c;保障高并发下的数据一致性问题。本文将讨论在分布式部署模式下&#xff0c;如何利用锁机制保证业务数据准确的技术探索与实践。一、背景分布式场景下的…