【问题标题】:Trying to understand Tuple Relational Calculus试图理解元组关系演算
【发布时间】:2014-07-01 16:21:40
【问题描述】:

在什么情况下你会使用域关系演算而不是元组关系演算?

例如,我使用元组关系解决了这个问题:

列出 John Smith 的共同作者(与 John Smith 共同撰写文章的作者)

与这些关系: 作者(authorID,姓名) 和创作(articleID,authorID) 主键和外键以粗体显示。

{t: 文章 ID,名称 | ∃ a ∈ 作者 ∃ au 创作 a.authorID = au.AuthorID ∧ a.name = ‘John Smith’ ∧ a.authorID = au.AuthorID}

此外,您如何表达两者的集合差异?我正在尝试解决以下问题:

哪位作者与每位作者共同撰写了至少 1 篇论文(没有聚合函数)。

【问题讨论】:

  • @philipxy,如果我设置条件,怎么会有冗余?
  • @philipxy, 另一个问题:列出我得到的由 John Smith 撰写的文章 {t: articleID | ∃ a ∈ Author ∃ au ∈ Authoring a.authorID = au.AuthorID ∧ a.name = 'John Smith'} 我看到我错过了 ∈ 但如果我删除第二个子句,我不会只是说这两个问题有相同的查询?
  • AuthorID 是 authorID 的错字还是应该不同?您认为两次“a.authorID = au.AuthorID”在您的问题中是否重要?同样在其中,您如何期望名称是非名称而不是名称?史密斯是否与自己合作? (你的微积分错了。)请回答问题。
  • 它可以帮助你阅读this关于域微积分。但是在元组演算中,对于行/元组 t,我们说 `"t ∈ D ∧ ... t.c ..." 或 "D(t) ∧ ... t.c ..." 而不是 "D(c,.. .) ∧ ... c ..." 用于列/属性 c。
  • @philipxy,这是关系代数,不是微积分。

标签: relational tuple-relational-calculus


【解决方案1】:

在什么情况下你会在元组上使用域关系演算 关系演算?

假设您可以对列的值访问相同的运算符,则元组关系演算、域谓词演算或关系代数的任何表达式都可以转换为另一个表达式。您可以在特定情况下使用它们中的任何一个。

元组演算表达式

{ t < c,... > | ∃ u ∈ U : ... t.c ... u.x ...}

描述与域微积分表达式相同的集合

{ < c,... > | ∃ x,... : U(x,...) ∧ ... c ... x ...}.

“U”命名一个给定的关系,“u”从中命名一个任意元组,“x,...”是它的属性。 “U(x,...)”被称为原子公式。 “∃”被称为量词,意思是“存在”或“对于某些人”。)

所以要将元组演算转换为域演算:

  1. 在结果中删除元组的名称。
  2. 将量化的元组名称和关系名称替换为其属性名称的量化列表和使用它们的原子公式。
  3. 删除点元组名称。

并将域演算转换为元组演算:

  1. 在结果中插入一个元组的名称。
  2. 重新排列,使每个量化的属性列表准确地包含一个关系的属性,并且该关系的原子公式跟在它后面。
  3. 用一些新的量化元组名称和关系名称替换关系属性名称的量化列表和使用它们的原子公式。
  4. 在它们的属性前面插入虚线元组名称。

此外,您如何表达两者的集合差异?

任一微积分中的表达式都描述了一组元组。集合差 A \ B 是在集合 A 中但不在集合 B 中的元组集合。如果关系 R 持有元组,其中 expressionR 并且关系 S 持有元组,其中 expressionS em> 然后 R \ S = R MINUS S = 元组,其中 expressionR ∧ ~ expressionS.

(它可以帮助您阅读this 关于通过自然语言构建查询然后转换为域演算然后转换为关系代数。它以参数化语句作为每个给定关系/表的含义开始。然后它找到一个这些组合来表达一个给定的查询。然后它将该表达式转换为类似于域演算的速记。(并且像标准谓词逻辑又名谓词演算一样。)要获得关系元组演算,您可以将域演算转换为元组演算,如所述在 SQL 中,JOIN ON、CROSS JOIN 和 "," 很像元组演算,而 JOIN USING 和 NATURAL JOIN 就像是域演算和元组演算的混合体。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    相关资源
    最近更新 更多