【问题标题】:Relational Calculus Left Outer Join关系演算左外连接
【发布时间】:2014-05-03 18:58:38
【问题描述】:

我只是希望得到指导,而不是答案。

关系演算中的左外连接是如何写的?

这是我用代数符号写的语句:

Doctor (⟕) Doctor.Doc_id = Duty.Doc_id Duty

(左外连接符号)

这是我写的微积分符号:

{S|∃ D ∈ Doctor (∃ C ∈ Duty (D.Doc_id = C.Doc_id ^
 S.Doc_id = D.Doc_id ^
 S.Doc_fName = D.Doc_fName ^
 S.Doc_lName = D.Doc_lName ^
 S.Position = D.Position ^
 S.Qualification = D. Qualification ^
 S.YearsExperience = D.YearsExperience ^
 S.Dept_id = D.Dept_id ^
 S.Duty_id = D.Duty_id ^
 S.Staff_id = D.Staff_id ^
 S.Date = D.Date ^
 S.Duty_type = D.Duty_type ^
 S.Max_no = D.Max_no ^
 S.Given_no = D.Given_no ^
 S.Avaliable_no = D.Avaliable_no ^
 S.Current_no = D.Current_no ^
 S.Room_no = D.Room_no)}

我了解外部连接意味着关系中的所有内容都将被显示。但是我不知道在显示的地方怎么写。

我的微积分符号对吗?如果没有,我做错了什么?

【问题讨论】:

  • 首先,我看不到你没有关闭所有的 '('。我也同意 IMSoP 这不是 SQL。也就是说,在你的左外连接中,你正在检查在 DocID 上,但在您的微积分符号中,您正在检查更多字段。我对那个符号不太熟悉,但无论如何,我看不出这可能是相同的。
  • 这在技术上属于math.stackexchange.com,它也完全支持显示数学符号。

标签: database tuples left-join relational-algebra tuple-relational-calculus


【解决方案1】:

这是您的公式的 SQL 转换,以

开头
{S|∃ D ∈ Doctor (∃ C ∈ Duty (D.Doc_id = C.Doc_id ^ (etc..) ) ) }

SELECT * FROM S
    WHERE EXISTS (SELECT * FROM Doctor D
        WHERE EXISTS (SELECT * FROM Duty C
             WHERE (D.Doc_id = C.Doc_id)
             AND (etc...)));

所以我猜答案是否定的,这不是左外连接。

【讨论】:

    猜你喜欢
    • 2013-12-28
    • 2011-08-23
    • 2018-12-05
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 2013-01-23
    • 1970-01-01
    相关资源
    最近更新 更多