关系图,ER图和EER图之间的区别是什么

时间:2014-09-12 14:55:01

标签: erd relational-model

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

当有人说ER建模时,他还暗示了EER建模吗?

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

1 个答案:

答案 0 :(得分:6)

ER模型最初由Peter Chen于1976年推出,尽管它受到早期工作的影响。在20世纪80年代早期,它几乎专门用于在概念层面对数据进行建模,其主要价值在于它在实施方面是公正的。尽管将ER模型转换为关系模型已经并且仍然非常容易,但在最终实现是某种类似IMS的关系前DBMS的情况下,ER模型也被认为是有用的。它也被用于项目的初步阶段,最终的实现是在某种非结构化或后关系型DBMS或对象数据库中。

许多从业者合并了ER建模和关系建模,并提出了一个同时满足这两个目的的模型。虽然这两个模型有很多重叠,但差异非常重要,因此合并它们中的两个可以将它们都降低。当涉及ER图时,这种合并最为明显。许多(也许是大多数)所谓的ER图都是关系模型,即使它们使用ER图表约定。

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

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

最大的区别是ER模型中不存在外键。在ER模型中可以看到关系,但ER对如何实现这些关系保持沉默。外键只是实现关系的一种方式。在关系数据库中,它们是唯一有意义的方法。 ER还可以直接模拟多对多关系,而无需在中间放置另一个实体。关系模型需要一个中间表(通常称为“接线盒”)来保存两个实现多对多关系的外键。

EER中包含的增强功能主要包括将gen-spec(超类/子类)和联合添加到建模约定中。到目前为止,这几乎是ER的一部分,所以EER这个词实际上是一个历史性的事故。

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

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