请您帮我找到以下SQL查询到关系代数表达式的直接翻译?
select s.name, c.course_id, t.grade
from student s, course c, takes t
where s.ID = t.ID and c.course_id = t.course_id
and t.year = 2010
我有一个想法是:
π s.name, c.course_id, t.grade (σ s.id= t.id ^ c.course_id=t.course_id ^ t.year=2010 (course c x (takes t x student s)))
但是,我不确定关系代数中表的乘法?
编辑:我不确定书面关系代数中给定表的正确笛卡尔连接?
答案 0 :(得分:1)
使用自然连接
(学生自然联接需要)将等于两个表的ID。
(学生自然加入需要)自然加入课程最终将把course_id等同,然后使用select运算符将年份选择为2010。现在使用投影选择名称course_id和成绩。
要记住的一件事是,自然连接会自动将通用属性(在本例中为id和course_id)等同起来,并且与叉积不同,通用属性将仅被选择一次