Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по ТОБД.doc
Скачиваний:
12
Добавлен:
17.09.2019
Размер:
1.4 Mб
Скачать

8.11.4. Законы соединения и декартова произведения

Ранее уже упоминались весьма важные коммутативный и ассо­циативный законы, действующие в отношении операторов соединения (join) и декар­това произведения (Cartesian product). Существует и несколько других законов, вытекающих непосредственно из определе­ния операции соединения:

R S=σC(R×S).

R S=πLC(R×S)),

где С — условие сравнения значений одноименных атрибутов отношений R и S, a L — список, содержащий по одному атрибуту из каждой пары одноименных атрибутов, а также все остальные атрибуты R и S (или список атрибутов схемы R, за которыми следуют атрибуты S, отсутствующие в R).

На практике указанные правила обычно применяются в направлении справа налево. Другими словами, декартово произведение, к результату которого применяется опера­тор выбора, трактуется как определенная разновидность соединения. Доводы в пользу такого подхода состоят в том, что алгоритмы вычисления соединений, вообще говоря, выполняются намного быстрее, нежели алгоритмы, реализующие декартово произве­дение, а затем выбор из (обычно весьма объемного) результата произведения.

8.11.5. Законы, касающиеся удаления кортежей-дубликатов

Оператор δ, осуществляющий удаление кортежей-дубликатов (duplicate elimination), может быть продвинут "внутрь" многих, но не всех операторов. Вообще говоря, переме­щение оператора S вниз по дереву выражений позволяет уменьшить размеры промежуточных отношений и потому сулит определенные выгоды. Более того, подчас имеет смысл размещать оператор δ на таких позициях, где он, строго говоря, вообще не нужен, по­скольку заведомо известно, что отношение-операнд не содержит кортежей-дубликатов:

δ (R) = R,

если R не имеет в своем составе повторяющихся кортежей. Основные примеры подобных отношений указаны ниже.

a) Хранимое отношение с объявленным первичным ключом.

b) Отношение, служащее итогом выполнения операции группирования γ (при группировании создается отношение, содержащее уникальные кортежи).

Вот несколько законов, связывающих оператор δ с другими операторами:

δ (R×S) = δ (R) × δ (S).

δ (R S) = δ (R) δ (S).

δ (R S) = δ (R) δ (S).

δC(R)) = σC (δ (R)).

Допустимо также применять оператор σ к одному или обоим аргументам "вложенного" оператора пересечения:

σ(R S) = δ(R) S = R δ (S) = δ (R) δ (S).

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

Пример. Предположим, что отношение R содержит две копии кортежа t, a S — одну. Тогда в δ (R S) окажется один экземпляр t, а в

δ (R) δ (S) — два. Теперь рассмотрим отношение Т(а, b), содержащее всего два кортежа — (1,2) и (1,3). Отношение δ a(T)) будет обладать одним экземпляром кортежа (1), a πa (δ (T)) — двумя.

Наконец, следует отметить, что конструирование сочетаний δ с операторами , вообще лишено какого-либо смысла. Поскольку применение "множественной" вер­сии оператора объединения, пересечения или разности само по себе служит гарантией отсутствия кортежей-дубликатов, оператор доказывается просто избыточным, например:

δ (R S) = R S.

Впрочем, нелишне напомнить, что при реализации и иных теоретико-множественных операций в любом случае выполняется процесс удаления дубликатов, по существу равнозначный применению оператора δ.