sql - >关系代数

时间:2011-05-26 14:41:43

标签: relational-database relational relational-algebra

enter image description here

如何将其转换为关系代数树?

合乎逻辑的步骤是什么?我首先需要转换为关系代数吗?或者我可以直接从sql到树吗?

2 个答案:

答案 0 :(得分:3)

我首先转换为关系代数,然后转换为树。

看,SELECT子句只需要三个字段。那是projection

FROM子句有三个关系。那是Cartesian product

WHERE子句提供了一堆selection个。这是在转换为树之前有助于转换为关系代数的部分。

我不知道你在课堂上使用什么符号,但你可能想要一些具有一般形式的东西

projection((things-you-want), selection((criteria), selection((criteria),
  selection((criteria), aXbXc))))

或预测选择由交叉产品产生的......东西。

请注意,根据教师的挑剔程度,您可能需要重命名字段。由于Show和Seat都将showNo作为属性,因此在为其提供唯一名称之前,可能不允许您使用交叉产品(替代规则,属性由隐式关系名称前缀唯一标识)。

此外,根据课程的目的,您可以通过其中一些操作进行通勤。您可以在选择交叉产品之前选择预订,作为限制日期范围的方法。最终结果将是等效的。

无论如何,从sql到关系代数再到树是否真的需要额外的工作?我毫不怀疑,通过练习,你可以跳过中间步骤。但是,既然你首先提出了这个问题,我建议你仔细阅读一下这些动议。还记得初中数学老师的“展示你的工作”要求,结合高中时期的简单术语吗?同样的规则适用于此。我说这是CS任务的前评级者。

答案 1 :(得分:3)

该SQL查询的结果不是关系,因此它在RA中没有确切的等价物。您可以尝试使用添加的DISTINCT创建相同SQL查询的RA版本。