当有人说ER建模时,他还暗示了EER建模吗?
那么数据库规范化呢?这只适用于关系图吗?
答案 0 :(得分:6)
许多从业者合并了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建模中存在一个很容易产生的建模错误,它几乎总是与逻辑层面的规范化错误相关联:它将属性与错误的实体相关联,或者将两个不同的属性合并为一个属性。
我可以继续,但这已经太长了。