将 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 的结果投影到以下运算符所需的最少属性数。
我必须以特定方式将 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 的结果投影到以下运算符所需的最少属性数。