[英]Is this SQL query equivalent to this relational algebra statement?
我有以下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
π foo.a, bar.b, baz.c (foo) ⋈ bar.id = foo.bar_id (bar) ⋈ baz.id = foo.baz_id (baz) σ foo.z = 50
該代數表達式不是根據關系代數的任何常見版本編寫的。 所以我們不能說SQL是等效的。 這似乎是你所產生的,而不是你所得到的。
通常我們寫:
π attributes ( relation )
σ condition ( relation )
並且代數表達式應該嵌套它們:
π attributes ( σ condition ( relation ) )
允許寫什么條件以及是否可以在任何運算符調用中使用帶有屬性名稱的點,這取決於代數的定義。 使用點要求將名稱與關系值一起傳遞給運算符。
在您對應該使用的代數進行引用或描述之前,您的問題無法得到完全回答。
似乎您可能會想,您要做的就是將SELECT替換為π,將JOIN替換為⋈,將WHERE替換為σ。 那是錯的。
是的,它是(您的SQL查詢)關系語句的表示形式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.