如何将其转换为关系代数树?
什么是合乎逻辑的步骤?我首先需要转换为关系代数吗?或者我可以直接从 sql 到树吗?
如何将其转换为关系代数树?
什么是合乎逻辑的步骤?我首先需要转换为关系代数吗?或者我可以直接从 sql 到树吗?
我会首先转换为关系代数,然后转换为树。
看,该SELECT
子句只需要三个字段。那是一个projection
。
该FROM
子句具有三个关系。那是一个Cartesian product
。
该WHERE
子句给出了一堆selection
s。这是在转换为树之前有助于转换为关系代数的部分。
我不知道你在课堂上使用什么符号,但你可能想要一些具有一般形式的东西
projection((things-you-want), selection((criteria), selection((criteria),
selection((criteria), aXbXc))))
或从叉积产生的对...的选择的投影。
请注意,根据您的讲师的挑剔程度,您可能需要重命名字段。由于 Show 和 Seat 都具有 showNo 作为属性,因此在给它们唯一名称之前可能不允许您取叉积(替代规则,属性由隐式关系名称前缀唯一标识)。
此外,根据课程的目的,您可以通勤其中一些操作。您可以在使用叉积作为限制日期范围之前在 Booking 上进行选择。最终结果将是相同的。
无论如何,从 sql 到关系代数再到树,真的有那么多额外的工作吗?我毫不怀疑,通过练习,您可以跳过中间步骤。但是,既然您首先提出了这个问题,我建议您通过动议。还记得初中数学老师对简单术语组合的“展示你的作品”要求吗?同样的规则在这里适用。我是作为一名 CS 作业的前评分员这么说的。
该 SQL 查询的结果不是关系,因此它在 RA 中没有完全相同的等价物。您可以尝试创建添加了 DISTINCT 的同一 SQL 查询的 RA 版本。