【发布时间】: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