从三个与关系代数的关系中选择

时间:2014-05-21 10:47:49

标签: sql database relational-algebra

我有前表格

Customer{cid, name, phone, address}
Employee{eid, name, positon, salary}
Resp_for{cid,eid}

现在我想在关系代数中询问它应该打印出所有对客户负责的员工:'奥巴马'

我正在尝试但不确定我清楚地理解关系代数,所以我创建了这个:

PROJECT   (SELECT                 (Customer x Employeee x Resp_for))
       E.eid       C.name = 'Obama'
                 AND R.cid = C.cid
                 And R.eid = E.eid

那么它看起来像sql查询?

SELECT E.eid
FROM Customer JOIN Employee JOIN Resp_for
WHERE C.name = 'Obama'
      AND R.cid = C.cid
      And R.eid = E.eid

是正确的吗?

2 个答案:

答案 0 :(得分:0)

对此的正确SQL查询将是: -

SELECT E.EID FROM CUSTOMERS C, EMPLOYEE E, RESP_FOR R
WHERE E.EID = R.EID
AND R.CID = C.CID
AND C.NAME = 'OBAMA';

现在你可以将这个查询转换为关系代数。

答案 1 :(得分:0)

这是正确的,虽然没有将表别名(R,C和E)放在它们各自的表中,但它不太可能运行。

有一种新的表达联接的形式,这种情况现在更常见:

SELECT E.eid
FROM Customer C
INNER JOIN Resp_for R
    ON R.cid = C.cid
INNER JOIN Employee E
    ON E.eid = R.eid
WHERE C.name = 'Obama'

相同的含义,不同的格式和恕我直言更易于同化。