将 SQL 查询转换为关系代数

translating SQL query to Relational Algebra

我必须以特定方式将 SQL 查询转换为关系代数,但我不确定我的答案是否正确。

数据库

Students: (studentID, firstname, familyname, address, borough)
Entries: (studentID, examID< result)
Exams: (examID, examName, qualification, board, date)

SQL查询

SELECT studentID
FROM Students s, Entries e, Exams x
WHERE s.studentID = e.studentID AND e.examID = x.examID AND 
s.borough='Haringey' AND e.result = 'pass' AND x.examName='Latin'

我必须在关系代数中重新表达此查询,其中 联接是在表被选择运算符减少后对表执行的

我的回答

PROJECTstudentID(SELECTs.borough='Haringey'(学生)) EQUIJOIN s.studentID=e.studentID((SELECTe.result='pass'(条目)) EQUIJOIN e.examID=x.examID (SELECTx.examName='Latin'(考试)))

您的查询是正确的。您已正确“推送”所有 select 操作。请注意,您还可以将每个 select 的结果投影到以下运算符所需的最少属性数。