当我问一个关于 EER 模型的问题时,当有人谈到关系模型时,我感到很困惑。我已经了解了 ER 和 EER 图之间的区别,但我想了解整个建模过程……我知道 EER 是增强的 ER 模型,即具有专业化/泛化的 ER 模型。
当有人说 ER 建模时,他是否也暗示了 EER 建模?
那么数据库规范化呢?这仅适用于关系图吗?
当我问一个关于 EER 模型的问题时,当有人谈到关系模型时,我感到很困惑。我已经了解了 ER 和 EER 图之间的区别,但我想了解整个建模过程……我知道 EER 是增强的 ER 模型,即具有专业化/泛化的 ER 模型。
当有人说 ER 建模时,他是否也暗示了 EER 建模?
那么数据库规范化呢?这仅适用于关系图吗?
ER 模型最初是由 Peter Chen 于 1976 年引入的,尽管它受到了早期工作的影响。在 1980 年代初期,它几乎专门用于概念级别的数据建模,其主要价值在于它在实施方面没有偏见。虽然将 ER 模型转换为关系模型非常容易,并且仍然很容易,但在某些情况下,ER 模型也被认为是有用的,其中最终实现是某种预关系 DBMS,如 IMS。它还被用于项目的初步阶段,最终实现是在某种非结构化或后关系 DBMS 或对象数据库中。
许多从业者将 ER 建模和关系建模合并在一起,并提出了一个同时满足这两个目的的模型。虽然这两个模型有很多重叠,但差异非常重要,因此将两者合并会削弱它们。当涉及到 ER 图时,这种合并最为明显。许多(也许是大多数)所谓的 ER 图实际上是关系模型,即使它们使用 ER 图表约定。
在关于 ER 的 Wikipedia 文章中,它提到了经典的三层:概念层、逻辑层和物理层,并将它们视为 ER 模型上的所有变体。这不是 1980 年代的情况。ER 模型是概念性的。逻辑模型是关系型的,前提是最终目标是关系型数据库。物理级别是特定于 DBMS 的,并试图满足性能和容量目标以及逻辑和概念级别的更抽象的目标。
这一切可能是古老的历史,甚至是永远年轻的 IT 世界的史前史。
最大的区别是 ER 模型中不存在外键。关系在 ER 模型中是可见的,但 ER 对它们将如何实现保持沉默。外键只是实现关系的一种方式。在关系数据库中,它们是唯一有意义的方法。ER 还直接对多对多关系进行建模,而无需将另一个实体放在中间。关系模型需要一个中间表(通常称为“接线盒”)来保存两个实现多对多关系的外键。
EER 中包含的增强功能主要包括将 gen-spec(超类/子类)和联合添加到建模约定中。到目前为止,这些几乎都是 ER 的一部分,因此 EER 一词实际上是一个历史意外。
最初开发的规范化是关系数据库设计的适当部分。它不能真正应用在非关系情况下,而不会与正常形式(1NF 到 5NF 和 DKNF)有很大关系。正确地说,归一化与 ER 建模无关。但是,在 ER 建模中很容易犯一个建模错误,该错误几乎总是与逻辑级别的规范化错误相关:它将一个属性与错误的实体相关联,或者将两个不同的属性合并为一个。
我可以继续,但这已经太长了。