【问题标题】:What is the equivalent, in Relational Algebra, of a SQL Table Relationship?在关系代数中,SQL 表关系的等价物是什么?
【发布时间】:2018-08-01 00:21:11
【问题描述】:

如果我理解正确,关系代数相当于 SQL tablerelation

SQLrelationship即在两个表之间)在关系代数中的等效项是什么?

【问题讨论】:

  • 我记不清我的笔记了,但我认为没有。您在关系代数中有一个 JOIN,它是一个边上闭合的 X,但这是一个运算符而不是一个概念。
  • 应该注意的是,SQL 也没有真正谈论“关系”。 SQL 具有引用表的外键。我相信,“关系”术语的出现是由于人们误用了 ERD 中的术语,并对 SQL 声称是“关系”这一事实感到困惑。人们将 1 和 1 放在一起得到了奶酪,但似乎不可能将其剔除 :-(

标签: sql foreign-keys relationship entity-relationship relational-algebra


【解决方案1】:

两个表或关系之间的“关系”[原文如此] 是来自伪 ERM(实体关系模型)信息建模方法、产品和演示文稿的概念,它们自称为 ERM,但不是因为它们误解、误用和歪曲ERM & RM(关系模型)。这不是 SQL 中的术语。它对应于 RM 中的 FK(外键)。

(在 ERM 和 RM 中,“关系”是“关联”,是真值函数意义上的“关系”。如 RM“关系”在元组集合的意义上表示共同参与的实体/价值。)

SQL FK 对应于我们可以合理地称为 RM 中的外部超键。 Does an empty SQL table have a superkey? Does every SQL table?

(ERM 和 SQL 也会误解、误用和歪曲 RM。What is the difference between an entity relationship model and a relational model?

RA(关系代数)是一个关于关系的值和运算符的系统,也许还有其他类型。其表达式本质上是嵌套的 RA 运算符调用的语言通常也被草率地称为 RA。关系(值或变量)FK 是一组或一组属性,其子元组值被限制在其他地方出现。 FK 约束表示给定命名关系中给定集合或属性列表的子元组值也出现在第二个给定命名关系的给定属性下。 (这样的约束也草率地称为 FK。)由于 FK 约束是关于关系值而不是关系值的陈述,因此不能直接用关系值和运算符表示。它可以是一种特定的 RA 样式查询语言,可让您编写布尔值表达式。

project r, ... (R)project r,... (S) 的限制时,FK 的一个 RM 概念是 {r, ...} 是 R 中的 FK,引用 S 中的 CK {r, ...}。 FK 作为列表的一个概念是 (r, ...) 是 R 中的 FK 引用 S 中的 (s, ...) iff/当 {s, ...} 是 S 的 CK 并且rename r\s, ... (project r, ... (R))project s,... (S) 的限制。

尽管如此,在将我们限制在关系名称和嵌套的 RA 调用的同时表达约束是很简单的。我们通过一个查询来表达一个约束是否在给定的命名关系上成立,该查询具有一些商定的属性 iff/when 约束成立。一个这样的约定是给出一个查询,当它的命名关系满足约束时,它返回一个空关系。最简单的约定是一个查询,它返回一个没有列的关系(其中有两个,一个有一个元组,一个没有),它有一个元组 iff/当满足约束时。

【讨论】:

    【解决方案2】:

    我不相信有一个。相关集合的概念不是集合论的一部分。你只有集合和对它们起作用的操作符。

    【讨论】:

    • 我同意:如果 SQL 中的表之间存在交叉引用(避免使用“关系”一词),那么这就是数据库中的表。由于通常介绍关系代数,它只讨论关系,而不是数据库、持久性或更新。但是,请参阅 Date 和 Darwen 的著作以了解完整的模型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    相关资源
    最近更新 更多