π 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 на σ. Это не правильно.
Да, это так. [Вот набор слайдов] (http://www.cs.cornell.edu/projects/btr/bioinformaticsschool/slides/gehrke.pdf), которые вы можете использовать для преобразования своего SQL в реляционную алгебру. –
Существует много версий «реляционной алгебры». Вы не используете проект или не можете правильно его расположить в соответствии с любой алгеброй, которую я видел. Как проект, ограничение и объединение определены в том, что вы должны использовать? Пожалуйста, дайте ссылку для вашей версии. Большинство представлений реляционной алгебры ограничивают и объединяются, которые работают над * любым значением отношения *. Т.е. без точки. Но точка нуждается в аргументах, которые являются либо именами переменных переменных, либо константами (например, ваш ответ и принятый ответ), либо значения плюс временные имена (например, SQL). – philipxy
Вы получили это выражение алгебры, или вы его создали? – philipxy