2017-01-29 12 views
2

Соответствующая таблица:Реляционная алгебра, как я могу выбрать два условия?

ПОЕЗД (поезд-код, поезд типа, выезд-станция назначения станция)

Список деталей поездов, которые отправляются из Лондона и предназначенных для KENT.

Вопрос очень прост, и я везде искал базовый ответ, но не могу его найти.

Это то, что я придумал до сих пор, но я не знаю, если это правильно или, если и может использоваться даже в реляционной алгебре:

SELECT TRAIN WHERE departure-station = 'LONDON' AND destination-station = 'KENT' 

Является ли это правильно? Я не могу найти какую-либо информацию в Интернете о том, можете ли вы использовать И для этого. Если это не сработало, я думаю, что мой ответ должен быть чем-то вроде этого:

SELECT TRAIN WHERE departure-station = 'LONDON' GIVING TABLE1 
SELECT TRAIN WHERE destination-station = 'KENT' GIVING TABLE2 
PROJECT TABLE1 OVER train-code GIVING TABLE3 
PROJECT TABLE2 OVER train-code GIVING TABLE4 
TABLE1 INTERSECT TABLE2 GIVING TABLE3 
PROJECT TABLE3 OVER train-code, train-type, departure-station, destination-station GIVING RESULT 

Это кажется, что это было бы слишком долго для меня, и может быть неправильным в любом случае. Может быть, мне нужно использовать команду JOIN? Я действительно не знаю, хотя это такой простой вопрос. Может кто-нибудь мне помочь?

+1

Это будет работать с фактической базой данных, но я должен записать ответ на этот вопрос на бумаге, изучая для теста реляционной алгебры. Я не знаю, можно ли это использовать в реляционной алгебре, которая отличается от кода SQL, хотя она часто выглядит аналогичной. – JadstaSeven

+0

не выглядел бы что-то вроде 'σ (departure-station = 'LONDON'∧destination-station =' KENT '(TRAIN))' и переводит (зависит от запроса) на 'SELECT * FROM TRAIN WHERE departure-station =' LONDON ' И destination-station = 'KENT'' ?? – Carlton

+0

Возможно, это было бы правильно, но я нахожусь в Великобритании, и, к сожалению, нас учат этому материалу по-другому, что означает, что мы не используем сигма-нотацию или что-то в этом роде, просто SELECT, PROJECT, DIVIDEBY и т. Д. Мы даже не пишите SELECT, мы используем RESTRICT, хотя это одно и то же, но просто вызывает больше путаницы для других в Америке, например, кто использует SELECT и разные обозначения. Поэтому это делает мой вопрос несколько более запутанным, если вы не из Великобритании:/ – JadstaSeven

ответ

1

Там нет единой версии реляционной алгебры, даже если мы будем игнорировать тривиальные синтаксические различия, как π vs PROJECT OVER. У них даже нет одинакового понятия отношение. Что такое определение, которое вам было датировано для SELECT/RESTRICT? Мы не можем вам сказать, вы должны сказать нам.

Ваш AND действителен, если версия используемой реляционной алгебры допускает произвольное вложенное условие в SELECT. Исходная реляционная алгебра допускала только одно равенство или неравенство. Вам нужно узнать, что такое «реляционная алгебра» & «SELECT» означает для вашего задания. Но в любом случае вы могли бы написать:

SELECT (SELECT TRAIN WHERE departure-station = 'LONDON') 
WHERE destination-station = 'KENT' 

Ваша длинная форма бесцельно устанавливает TABLE3, не использует его, а затем устанавливает его снова. Также ваша длинная форма недействительна, потому что INTERSECT нуждается в двух отношениях с одинаковыми наборами атрибутов. Но вы правы, что INTERSECT parallels AND. Также NATURAL JOIN. Каждая таблица (заданная или запрошенная) имеет предикат , то есть шаблон оператора, параметризованный атрибутами, предоставляющий условие членства в кортеже.Например, TRAIN есть кортежи, где (что-то подобное) поезд поезд-код от типа поезда типа идет от вылета станции до назначения станции. INTERSECTNATURAL JOIN возвратные кортежи, которые находятся в одном отношении AND в другом, то есть которые удовлетворяют предикату одного отношения AND ed с другими. Аналогично UNION рассчитывается для OR, MINUS рассчитывается для И НЕ, и ... WHEREcondition вычисляет ... И состояние. Например, ваш SELECT с AND является кортежами, где поезд поезда-код от типа поезда типа идет от вылета станции до назначения станции И вылета станции = «ЛОНДОН» И назначения станции = 'KENT'. PROJECTrelationOVERattributes kept вычисляет для НЕКОТОРЫХ (значений) атрибуты упал, предикат. Например TABLE4 являются кортежами, где ДЛЯ НЕКОТОРЫХ поезда типа, выезда-станции & назначения-станции, поезда-код от типа поезда типа идет от вылета станции до назначения станции И пункт назначения = 'KENT'.

Так что другой ответ, который не используется AND, является TABLE1 INTERSECT TABLE2. Почему вы делаете все остальное? (Например, вы взяли несколько проекций, затем присоединились к ним с оригиналом, что это всегда дает?)

См. this answer.

+0

Спасибо за этот хорошо объясненный ответ! Это очень помогает, я не был уверен в длинном ответе, который я предоставлял, и думал, что это, вероятно, неверно, но не понимал, что это можно сделать так просто, как вы показали. Что касается версии реляционной алгебры, я действительно не уверен, какая версия, как нам не говорят; нам просто говорят, что это реляционная алгебра и обычно используют функцию RESTRICT среди других (не SELECT, если это может помочь указать ее версию). Возможно, это оригинальная версия, с которой вы объяснили И не может быть использована, и в этом случае ваш ответ в конце особенно полезен для меня. – JadstaSeven

+0

* Как-то * кто дал вам свое задание, он определил, что они имеют в виду, когда говорят «RESTRICT». Лекция? Слайды? Заметки? Учебник? Рекомендации? И они приводили примеры. (Я предсказываю, Avison & Fitzgerald.) – philipxy

+0

Просто добавил к моему ответу, что ГДЕ с И может быть написано двумя ГДЕ. – philipxy

1

Я не знаком с Oracle SQL, но я знаком с MySQL и считаю, что основной синтаксис тот же. Ваше использование AND выглядит правильно, но похоже, что в вашем запросе отсутствует ключевое слово FROM. Если таблица называется ПОЕЗД попробовать сделать:

SELECT * FROM TRAIN WHERE departure-station = 'LONDON' AND destination-station = 'KENT' 
+0

Вопрос заключается в вопросе о выражении реляционной алгебры. Они используют алфавитные имена, а не символы. – philipxy

1

«И», безусловно, действует в реляционной алгебре, можно записать так:

σ departure-station = 'LONDON' AND destination-station = 'KENT' (TRAIN) 

это основной учебник, но он определяет большую часть концепции RA:

https://www.tutorialspoint.com/dbms/relational_algebra.htm

+0

Ах, спасибо, вот что я надеялся и думал, что ответ был, но я не был уверен до сих пор! – JadstaSeven

+0

@philipxy, спасибо, отредактировал сейчас – Jayvee

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

  • Нет связанных вопросов^_^