2016-11-23 5 views
1

У меня есть следующий 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 
+0

Да, это так. [Вот набор слайдов] (http://www.cs.cornell.edu/projects/btr/bioinformaticsschool/slides/gehrke.pdf), которые вы можете использовать для преобразования своего SQL в реляционную алгебру. –

+0

Существует много версий «реляционной алгебры». Вы не используете проект или не можете правильно его расположить в соответствии с любой алгеброй, которую я видел. Как проект, ограничение и объединение определены в том, что вы должны использовать? Пожалуйста, дайте ссылку для вашей версии. Большинство представлений реляционной алгебры ограничивают и объединяются, которые работают над * любым значением отношения *. Т.е. без точки. Но точка нуждается в аргументах, которые являются либо именами переменных переменных, либо константами (например, ваш ответ и принятый ответ), либо значения плюс временные имена (например, SQL). – philipxy

+0

Вы получили это выражение алгебры, или вы его создали? – philipxy

ответ

-1

Да, это (ваш SQL-запрос) - представление для вашего реляционного оператора.

+0

Взгляните еще раз на предполагаемое выражение алгебраической алгебры. См. Мой ответ. – philipxy

0
π 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 на σ. Это не правильно.

Смежные вопросы