ER图保证哪种范式?

Which normal form does the ER Diagram guarantee?

每当为数据库绘制适当的 ER图然后映射到关系模式时,我被告知它保证3NF

这个说法是真的吗?

如果没有,谁能给我一个反例。

另外,请问从完美的ER图映射关系模式时,是否可以声称严格遵循任何范式?

让我们看一个例子(在 oracle 中):

CREATE TABLE STUDENT (
  ID INTEGER PRIMARY KEY,
  NAME VARCHAR2(64) NOT NULL,
  RESIDENCE_STREET VARCHAR2(64),
  RESIDENCE_CITY VARCHAR2(64),
  RESIDENCE_PROVINCE VARCHAR2(64),
  RESIDENCE_POSTALCODE NUMBER(8)
);

在某些国家/地区,邮政编码使用前缀来标识地区或省份,因此 RESIDENCE_PROVINCE 具有来自 RESIDENCE_POSTALCODE 的功能依赖性。但是 RESIDENCE_POSTALCODE 是一个非素数属性。那么这个简单而常见的例子是 "legal" 而它不在 3NF.

该图仅显示了您拥有的实体和属性以及实体之间的关系。您的属性可能违反正常形式。 ER图只是一种表示,它不强制执行任何规则。

在 ER 图中表示模型并不意味着满足 3NF。

错误声明背后的想法可能基于以下想法:例如,当您将子项中的重复组从列转换为行时 table,或者将部分依赖的列移除到另一个 table,你正在增加你关系的正常形式。但是,图表约定不会以任何方式强制执行此操作。

简短的回答是否定的。根据分析和设计方法,可能会有一些 ER 模型示例,这些示例在 ER 术语中看起来非常合理,但不一定转换为 3NF 中的关系模式。 ER 建模和符号的表达力或正式程度不足以保证在数据库设计中正确执行所有功能依赖性。经验丰富的数据库设计人员意识到这一点,并应用其他技术来提出 "proper" 设计。

Terry Halpin 设计了一种正式的数据库设计方法,可保证关系模式满足第五范式(参见 orm.net)。他使用对象角色建模方法,而不是 ER 建模。