relational-algebra - 我可以使用自然连接来连接 3 个表吗?

标签 relational-algebra

下图显示了一个小型数据库, enter image description here

我有一个问题

Give a relational algebra expression to find the name of the judge who presides over the trial for defendant known as “Mike” starting on 1.12.2012.

给出的答案是

enter image description here


但我认为它应该加入 JUDGE 表以及类似这样的内容:

如果我的观点有误,请发表评论

enter image description here

最佳答案

不,您不需要加入 JUDGE 表来获取法官的姓名。

注意JnameJUDGE的主键,也就是说,法官由她的名字唯一标识; TRIAL 表实际上包含 Jname 表示哪个法官主持了给定的审判:

Judge | Defendant | Number | Sdate
Dredd |  1        |   1    | 1.12.2012
Dredd |  2        |   2    | 2.12.2012
Rico  |  1        |   3    | 1.12.2012

您可以看到选择元组如何在不加入任何内容的情况下为我们提供法官的名字。(如果您想知道,这是一个非常糟糕的设计,您永远不应该在现实世界中使用。)

相反,我们必须将 DEFENDANTTRIAL 连接起来:DEFENDANT 的主键是他的 ID,因此只有该 ID出现在 TRIAL 表中,因此如果我们需要按姓名选择被告,我们必须使用联接。

至于你的问题标题:是的,你当然可以加入三个以上的表。如果您觉得很难想象,请回想一下R ⨝ S ⨝ T = (R ⨝ S) ⨝ T。请注意,自然连接也具有良好的交换性和关联性。

关于relational-algebra - 我可以使用自然连接来连接 3 个表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19740069/

相关文章:

relational-algebra - 如何计算自然连接?

postgresql - 如何在 PostgreSQL 中创建 4VL "boolean"类型?

sql - 关系代数 - 笛卡尔积与自然连接?

database - 关系数据库和数学?

mysql - 如何根据第三个表中的关系合并两个表?

sql - 如何在关系代数中用 HAVING COUNT(*)>1 表示 GROUP BY?

database - 选择和投影是关联的吗?

database - 如何建模或查询关系代数中不存在的东西

mysql - 表 (A) 与其自身的自然连接

relational-algebra - 关系代数 - 列出不在项目中工作的员工姓名 1