Магия сохраняет силу


Определения - часть 2


В следующем определении мы игнорируем украшения и условия.

Алгоритм магических множеств можно понимать как двухшаговое преобразование, в котором мы сначала получаем украшенный запрос Pad, а затем применяем следующее преобразование:

Мы создаем новый запрос Pmq. Изначально этот запрос пуст.

  1. Для каждой таблицы p из Pad создается новая таблица без дубликатов m_p. Ее арность равна числу связанных аргументов p.
  2. Для каждого табличного выражения в Pad к Pmq добавляется модифицированная версия. Если у табличного выражения r имеется заголовок, скажем, p(t) (t – это сокращение для всех атрибутов p), то модифицированная версия получается путем присоединения к телу таблицы m_p(
    ) (m_p обозначает магическую таблицу p, а
    – связанные аргументы p).
  3. Для каждого табличного выражения r в P с заголовком, скажем, p
    и для каждой таблицы qi
    , на которую имеется ссылка в теле выражения, к Pmq добавляется магическое табличное выражение. Его заголовок – m_qi
    , а тело содержит все таблицы, предшествующие qi в sips (определяется ниже), ассоциированной с r, а также магическую таблицу m_p(
    ).
  4. Создается начальная (seed) таблица m_qi(c) из предикатов сравнения по равенству в наиболее внешнем блоке запроса, где c – это набор констант, участвующих в сравнении связанных аргументов q.

Заметим, что с каждой таблицей в Pad ассоциируется магическая таблица. Если генерируется несколько табличных выражений с одним и тем же заголовком, они заменяются одним табличным выражением, в теле которого содержится объединение соответствующих тел.

Интуитивно преобразование методом магических множеств включает добавление в каждом операторе SQL магических таблиц в раздел FROM и предикатов сравнения по равенству в раздел WHERE.

ПРИМЕР 3.1 (Преобразование методом магических множеств): Рассмотрим запрос D из примера 2.1. Нам требуется вычислить среднюю зарплату в отделах в представлении dep_avgsal в том и только в том случае, когда в отделе имеется старший программист, поскольку в противном случае средняя зарплата не релевантна.


Начало  Назад  Вперед



Книжный магазин