下面的图片显示了一个小型数据库,
我有一个问题
给出关系代数表达式来查找法官的姓名 主持被告称为“迈克”的审判开始 二零一二年十二月一日。
答案是
但我认为它应该加入JUDGE
表,如下所示:
如果我错误的话,请留下一些评论
答案 0 :(得分:1)
不,你不需要加入JUDGE
表来获得法官的名字。
注意Jname
是JUDGE
的主键,也就是说,法官是由她的名字唯一标识的;并且TRIAL
表实际上包含Jname
表示哪位法官主持了特定的审判:
Judge | Defendant | Number | Sdate
Dredd | 1 | 1 | 1.12.2012
Dredd | 2 | 2 | 2.12.2012
Rico | 1 | 3 | 1.12.2012
你可以看到选择元组如何在不加入任何内容的情况下为我们提供法官的名字。(如果你想知道,这是一个非常糟糕的设计,你不应该在现实世界中使用。)
相反,我们必须将DEFENDANT
加入TRIAL
:DEFENDANT
的主键是他的ID,因此TRIAL
表中只显示该ID ,如果我们需要按名称选择被告,我们必须使用加入。
至于你的问题标题:是的,你当然可以加入三个以上的表格。如果您发现很难想象,请回忆R ⨝ S ⨝ T = (R ⨝ S) ⨝ T
。请注意,自然连接也很好地交换和关联。