【问题标题】:Can I Join 3 table using Natural Join?我可以使用自然连接加入 3 个表吗?
【发布时间】:2013-11-02 08:01:49
【问题描述】:

下图显示了一个小型数据库,

我有个问题

给出一个关系代数表达式来找出法官的名字 主持对被称为“迈克”的被告的审判 2012 年 1 月 12 日。

给出的答案是


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

如果我错了,请发表评论

【问题讨论】:

    标签: relational-algebra


    【解决方案1】:

    不,您无需加入JUDGE 表即可获取法官的姓名。

    注意JnameJUDGEs的主键,也就是说,一个法官是由她的名字唯一标识的; 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。请注意,自然连接也具有很好的可交换性和关联性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-29
      • 1970-01-01
      • 2017-06-30
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多