关系图、ER 图和 EER 图有什么区别



当我问一个关于EER模型的问题时,有人谈到关系模型时,我感到很困惑。我已经了解了ER图和EER图之间的区别,但我想了解整个建模过程。。。我知道EER是增强的ER模型,即具有专业化/通用化的ER模型。

当有人说ER建模时,他是否也暗示了EER建模?

数据库规范化怎么办?这只适用于关系图吗?

ER模型最初是由Peter Chen于1976年提出的,尽管它受到了早期工作的影响。在20世纪80年代初,它几乎完全用于概念层面的数据建模,其主要价值在于它在执行方面是公正的。虽然将ER模型转换为关系模型过去和现在都非常容易,但在某些情况下,ER模型也被视为有用的,在这些情况下,最终实现是某种前关系DBMS,如IMS。它还被用于项目的初步阶段,其中最终实现是在某种非结构化或后关系DBMS或对象数据库中。

许多从业者将ER建模和关系建模合并在一起,并提出了一个同时满足这两个目的的单一模型。虽然这两个模型有很多重叠,但差异足够重要,因此将两者合并会使两者都淡化。这种合并在ER图中最为明显。许多,也许是大多数,所谓的ER图实际上是关系模型,即使它们使用ER图约定。

在维基百科关于ER的文章中,它提到了经典的三层:概念层、逻辑层和物理层,并将它们视为ER模型的所有变体。20世纪80年代的情况并非如此。ER模型是概念性的。逻辑模型是关系型的,前提是最终目标是关系型数据库。物理级别是特定于DBMS的,并试图满足性能和容量目标以及逻辑和概念级别的更抽象的目标。

所有这些都可能是古老的历史,甚至是永远年轻的IT世界的前历史。

最大的区别在于ER模型中不存在外键。关系在ER模型中是可见的,但ER对如何实现它们保持沉默。外键只是实现关系的一种方式。在关系数据库中,它们是唯一有意义的方法。ER还直接对许多关系进行建模,而不将另一个实体在中间。关系模型需要一个中间表(通常称为"接线盒")来容纳实现多对多关系的两个外键。

EER中包含的增强主要包括在建模约定中添加gen规范(超类/子类)和并集。到目前为止,这些几乎都是ER的一部分,所以EER这个词实际上是一个历史事故。

最初开发的规范化是关系数据库设计的一部分。它不可能真正应用于非关系的情况,而不实质上干扰正常形式(1NF到5NF和DKNF)。正确地说,规范化在ER建模中是无关紧要的。然而,在ER建模中,有一个建模错误很容易发生,它几乎总是与逻辑层面的规范化错误相关:它将一个属性与错误的实体相关联,或者将两个不同的属性合并为一个。

我可以继续说下去,但这已经太长了。

最新更新