sql -> реляционная алгебра

введите здесь описание изображения

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

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


person user559142    schedule 26.05.2011    source источник
comment
Как вы узнали об этом на своих лекциях? :-)   -  person diagonalbatman    schedule 26.05.2011
comment
Я думаю, шутка в том, что ты не обращал внимания. Даже в аспирантуре профессора объясняют, как что-то делать.   -  person Woot4Moo    schedule 26.05.2011
comment
такой умный, что ты можешь читать мысли, а   -  person user559142    schedule 27.05.2011


Ответы (2)


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

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

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

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

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

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

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

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

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

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

person ccoakley    schedule 26.05.2011

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

person nvogel    schedule 28.05.2011