10

我只能找到以下两个不同之处:

  1. ER 模型中的关系是明确定义的,而它们在关系模型中是隐含的。
  2. 关系模型需要一个中间表(通常称为“联结表”)来保存实现多对多关系的两个外键。

当我们有 ER 图时,为什么我们要使用关系模型?

4

2 回答 2

13

你倒过来了。

  1. ER 模型中的关系是明确定义的,而它们在关系模型中是隐含的。

不,每个关系模型 (RM) 数据库基表和查询结果都代表一个应用程序关系。实体关系建模 (E-RM) 模式只是一种组织(但未充分使用和未指定)(但存在误解)关系表和约束的方式。

  1. 关系模型需要一个中间表(通常称为“联结表”)来保存实现多对多关系的两个外键。

不,是对象-关系映射 (ORM) 方法掩盖了它们底层的直接关系应用程序关系、表和约束。“连接表”的概念源于 ORM 对 E-RM 的混淆表示的误解,而 E-RM 本身误解了 RM。

正如 CJ Date 所说,数据库系统简介,第 8 版:

对 [Chen 的原始论文] 的慈善阅读表明 E/R 模型确实是一种数据模型,但它本质上只是基本关系模型之上的一个薄层[p 426]

简单的解决方案很受欢迎,即使它们简单了,这是对 IT 领域现状的悲哀评论。[第 427 页]

关系模型

每个关系表都代表一个应用程序关系。

-- employee EID has name NAME and ...
E(EID,NAME,...)

这种事物的数学术语,以及表示一个的数学有序元组集合,是“关系”。因此出现了“关系模型”(和“实体关系模型”)。在数学中,关系经常由参数化语句模板来描述,其中一个数学术语是“特征谓词”。谓词的参数是表的列。在 RM 中,DBA 为每个基表提供一个谓词,用户将根据列值和谓词做出正确陈述的行放入表中,并将做出错误陈述的行排除在外。

/* now also employee 717 has name 'Smith' and ...
    AND employee 202 has name 'Doodle' and ...
*/
INSERT INTO E VALUES (EID,NAME,...)
    (717,'Smith',...),(202,'Doodle',...)

查询表达式还有一个由关系运算符和逻辑运算符(在条件中)构建的谓词。它的值还包含使其谓词为真的行,并忽略使其为假的行。

/* rows where
   FOR SOME E.*, M.*,
        EID = E.EID AND ... AND MID = M.MID
   AND employee E.EID has name E.NAME and ...
   AND manager M.MID has 
   AND E.DEPT = M.DEPT AND E.NAME = 'Smith'
/*
SELECT E.*, M.MID
FROM E JOIN M ON E.DEPT = M.DEPT
WHERE E.NAME = 'Smith'

表的当前行做出正确的陈述,而缺席的行做出错误的陈述是我们如何在数据库中记录应用程序情况以及我们如何解释数据库对应用程序情况所说的内容。如果没有并理解谓词,即应用程序关系,就无法使用或解释数据库。

实体关系建模

E-RM(它并不真正理解 RM)本质上是一种(n 不必要的、受限制的和限制性的)图表符号,用于描述(某些部分)(有限形式的)关系数据库。最初有“实体(类)”图标/关系,其中候选键(CK)值与应用程序实体加上其他列(“实体”的“属性”)为 1:1,并且有“关系(类)”图标/tables 具有实体表的外键 (FK),表示多个实体上的应用程序关系以及其他事物(“关联”的“属性”)。应用程序关系由一个图标表示,该图标与参与其中的各种实体图标连线。(即线条代表 FK。

E-RM 不理解关系模型。它在应用程序实体和关系之间做出了毫无意义和误导性的区分。毕竟,每个基表或查询结果的每个超键(唯一列集)都与某些应用程序实体 1:1 对应,而不仅仅是具有实体表的实体。例如,人们可以通过结婚来联系;但每个这样的关联都是与一个称为婚姻的实体 1:1 的。这会导致标准化和约束不足,从而导致冗余和完整性损失。或者,当这些步骤充分完成时,它会导致 ER 图实际上没有描述应用程序,而应用程序实际上是由关系数据库谓词、表和约束来描述的。那么ER图既是模糊的、多余的又是错误的。

速记 E-RM 和 ORM

许多声称是 E-RM 的演示文稿和产品都扭曲了 E-RM,更不用说 RM了。他们使用“关系”一词来表示 FK 约束。这出现如下。当 E-RM 关系是二进制时,它是一个符号,其 FK 有两行。所以这三件事可以用 FK 之间的一条线代替。这种线表示特定的二元关系及其 FK,但现在 ER 关系在图中并不明确,尽管 ER 关系在简写版本中是明确的,并且它通过图表中图片来反映,即他们正在描述的关系数据库。这被称为“连接表”。人们谈论那条线/表是/代表“X:Y关系”实际上没有注意到这是一个特定的应用程序关系。并且在相同的两个实体和/或关联之间可能存在许多这样的应用关系。

ORM 也这样做,但也仅用它们的 FK 替换 n 元关联,以便进一步模糊关联的应用程序关系和表。Active Records 更进一步,一次定义了几个速记关系及其表,相当于速记 E-RM 图中的一系列 FK 线和关联图标。许多建模技术加剧了这种情况,包括 E-RM 和 ORM 的版本,还认为应用程序关系只能是二进制的。同样,这在历史上源于对 RM 缺乏了解。

于 2014-12-03T12:44:19.493 回答
2

它们本身就是两个不同的东西。关系模型将信息表示为元组,直接映射到关系模式。该指南源于关系代数。

同时,ER 图使用实体对系统中用户与其基础数据之间的关系进行建模。ER 图可以映射到关系模型,最后映射到工作模式。

于 2014-12-03T10:13:00.227 回答