sql -> реляционная алгебра - PullRequest
0 голосов
/ 26 мая 2011

enter image description here

Как мне преобразовать это в дерево реляционной алгебры?

Каковы логические шаги? Нужно ли сначала преобразовывать в реляционную алгебру? Или я могу идти прямо из sql в дерево?

Ответы [ 2 ]

3 голосов
/ 28 мая 2011

Результат этого запроса SQL не является отношением, поэтому он не имеет точного эквивалента в RA. Вы можете попробовать создать версию RA того же SQL-запроса с добавленным DISTINCT.

3 голосов
/ 26 мая 2011

Сначала я преобразовал бы в реляционную алгебру, а затем преобразовал в дерево.

Смотри, предложение SELECT требует только три поля. Это projection.

Предложение FROM имеет три отношения. Это Cartesian product.

Предложение WHERE дает набор selection с. Это та часть, где она помогает преобразовать в реляционную алгебру перед преобразованием в дерево.

Я понятия не имею, какую нотацию вы используете в классе, но вы, вероятно, хотите что-то, что имеет общую форму

projection((things-you-want), selection((criteria), selection((criteria),
  selection((criteria), aXbXc))))

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

Обратите внимание: в зависимости от того, насколько разборчив ваш инструктор, вам, возможно, придется переименовать поля. Поскольку и Show, и Seat имеют showNo в качестве атрибута, вам может быть запрещено брать перекрестный продукт, прежде чем дать им уникальные имена (альтернативные правила, атрибуты однозначно идентифицируются префиксом неявного отношения).

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

Во всяком случае, действительно ли так много работы по переходу от sql к реляционной алгебре к дереву? Я не сомневаюсь, что с практикой вы могли бы пропустить промежуточный шаг. Тем не менее, так как вы задали вопрос в первую очередь, я бы предложил пройти через предложения. Помните требование «показать свою работу» от младших учителей математики для объединения простых терминов, которые ушли в старшую школу? То же правило применяется здесь. Я говорю это как бывший грейдер по CS.

...