我有以下SQL查询:这个SQL查询是否等价于这个关系代数语句?
SELECT foo.a, bar.b, baz.c FROM foo
INNER JOIN bar ON bar.id = foo.bar_id
INNER JOIN baz ON baz.id = foo.baz_id
WHERE foo.z = 50;
我想知道这是否是相当于这个关系代数语句。
π foo.a, bar.b, baz.c (foo) ⋈ bar.id = foo.bar_id (bar) ⋈ baz.id = foo.baz_id (baz) σ foo.z = 50
是的。 [这是一组幻灯片](http://www.cs.cornell.edu/projects/btr/bioinformaticsschool/slides/gehrke.pdf),您可以使用它将您的SQL转换为关系代数。 –
“关系代数”有很多种版本。根据我所见过的任何代数,你没有正确使用项目或进行限制。如何在您应该使用的项目中定义项目,限制和连接?请为您的版本提供参考。关系代数的大多数演示都限制和加入了关于*任何关系值*的工作。即没有点。但是dot需要关系变量或常量的名称(例如,您的答案和接受的答案)或其他值以及临时名称(例如SQL)。 – philipxy
你给了那个代数表达式,还是你产生了它? – philipxy