Сначала я преобразовал бы в реляционную алгебру, а затем преобразовал в дерево.
Смотри, предложение SELECT
требует только три поля. Это projection
.
Предложение FROM
имеет три отношения. Это Cartesian product
.
Предложение WHERE
дает набор selection
с. Это та часть, где она помогает преобразовать в реляционную алгебру перед преобразованием в дерево.
Я понятия не имею, какую нотацию вы используете в классе, но вы, вероятно, хотите что-то, что имеет общую форму
projection((things-you-want), selection((criteria), selection((criteria),
selection((criteria), aXbXc))))
или прогноз выбора выборки ... материала, полученного из перекрестных продуктов.
Обратите внимание: в зависимости от того, насколько разборчив ваш инструктор, вам, возможно, придется переименовать поля. Поскольку и Show, и Seat имеют showNo в качестве атрибута, вам может быть запрещено брать перекрестный продукт, прежде чем дать им уникальные имена (альтернативные правила, атрибуты однозначно идентифицируются префиксом неявного отношения).
Кроме того, в зависимости от цели урока вы можете коммутировать некоторые из этих операций. Вы можете сделать выбор в бронировании, прежде чем брать перекрестный продукт как средство ограничения диапазона дат. Конечные результаты будут эквивалентны.
Во всяком случае, действительно ли так много работы по переходу от sql к реляционной алгебре к дереву? Я не сомневаюсь, что с практикой вы могли бы пропустить промежуточный шаг. Тем не менее, так как вы задали вопрос в первую очередь, я бы предложил пройти через предложения. Помните требование «показать свою работу» от младших учителей математики для объединения простых терминов, которые ушли в старшую школу? То же правило применяется здесь. Я говорю это как бывший грейдер по CS.