我有前表格
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
是正确的吗?
答案 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'
相同的含义,不同的格式和恕我直言更易于同化。