实体关系模型和关系模型有什么区别?

10

我只能找到以下两个差异:

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

既然我们有E-R图,为什么要使用关系模型?

3个回答

14

你误解了。

  1. E-R模型中的关系是明确定义的,而在关系模型中则是隐含的。

不是这样的。每个关系模型(RM)数据库基础表和查询结果都代表着一个应用程序关系。实体-关系建模(E-RM)模式只是一种组织关系表和约束条件的方式,但其使用和规范化程度不足(并且存在误解)。

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

不是这样的。对象-关系映射(ORM)方法才会掩盖其基础的简单关系应用关系、表和约束条件。"连接表" 的概念源于 ORM 对 E-RM 的混淆解释,而 E-RM 本身就误解了 RM。

正如 C J Date 在《数据库系统介绍》第8版中所说:

  

「(慈善地解读陈氏原始论文)会认为 E/R 模型确实是一种数据模型,但它本质上只是基本关系模型上的一层薄膜。」[p 426]

  

「即使过于简单,简单的解决方案在 IT 领域也很受欢迎,这是对 IT 领域状况的悲哀评价。」[p 427]

关系模型

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

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

这种东西的数学术语,也是表示一个有序数学元组集的数学术语,称为“关系”。因此有了“关系模型”(以及“实体-关系建模”)。在数学中,关系通常通过参数化语句模板来描述,其中一种数学术语是“特征谓词”。 谓词的参数是表格的列。在关系模型中,数据库管理员为每个基本表提供一个谓词,用户将使语句真实的行和谓词的列值放入表中,并将不真实的行留出。

/* 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'

在数据库中,我们通过使用真实语句的行和没有语句的行来记录应用程序状态,并解释数据库对应用程序状态的描述。如果没有谓词即应用程序关系的理解和掌握,就无法使用或解释数据库。

实体-关系建模

实体-关系建模(简称ERM)本质上是一种不必要、有限制和限制性的图示符号,用于描述一些部分和有限形式的关系型数据库。最初,存在“实体(类)”图标/关系,其中候选键(CK)值与应用程序实体及其它列(“实体”的“属性”)的1:1对应,以及“关系(类)”图标/表,该表具有外键(FK),指向表示多个实体之间的应用程序关系的实体表,以及其它东西(“关联”的“属性”)。一个应用程序关系由一个图标表示,该图标与参与其中的各个实体图标相连。(即这些线条表示外键。而外键并不是关系,而是有关表约束的语句。)

ERM并不理解关系模型。它做出了毫无意义且误导性的区分,将应用程序实体和关系区分开来。毕竟,每个基本表或查询结果的超键(唯一列集)都与某个应用程序实体的1:1对应,而不仅仅是拥有实体表的实体。例如,人可以通过结婚而相互关联;但每个这样的关联都与一个名为“婚姻”的实体1:1对应。这导致了不充分的规范化和约束,因此会产生冗余和完整性丢失。或者,当这些步骤被充分执行时,ERM图实际上并未描述应用程序,而实际上描述应用程序的是关系型数据库谓词、表和约束。然后ERM图既模糊、又冗余和错误。

简写ERM和ORMs

许多声称自己是ERM的演示文稿和产品都扭曲了ERM,甚至RM。它们使用“关系”一词来表示FK约束。这是由于以下原因。当ERM关系是二元的时,它是一个符号,有两条线到其FKs。因此,这些三个事物可以由FK之间的一条线代替。这种类型的线表示特定的二元关系及其FKs,但现在ERM关系在图中不再明确,虽然长格式ERM版本中ERM关系在表中显式地表示出来(即图表述的内容),即所描述的关系型数据库。这被称为“连接表”。人们谈论该行/表是/代表两个实体和/或关联之间的“X:Y关系”,而实际上从未注意到它是一个特定的应用程序关系。同样,同两个实体和/或关联之间可能存在许多这样的应用程序关系。

ORMs也是如此,但它们还通过仅使用FK来替换n元关联,进一步模糊了相关的应用程序关系和表。Active Records更进一步,通过一次定义多个简写关系及其表,相当于长格式ERM图中FK线和关联图标的链。许多建模技术(包括ERM和ORM的版本)也认为应用程序关系只能是二元的。再次强调,这源于对RM缺乏理解。


2

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

与此同时,ER图使用实体来建模用户和系统中底层数据之间的关系。ER图可以映射到关系模型,最终映射到工作模式。


1
  • ER模型:它是一个高级或概念性模型,即具有业务逻辑抽象的内容。
  • 关系模型:这个模型是数据模型的逻辑表示,仅与关系数据库管理系统相关。

关键点是,它们处于不同的抽象层级之间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接