Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Реляционная_алгебра.doc
Скачиваний:
2
Добавлен:
22.11.2019
Размер:
2.61 Mб
Скачать

6. 1. Введение

Третья и последняя часть реляционной модели – операторы существенно эволюционировала со времени первой публикации статьи Кодда [6.1]. Однако как и раньше основным компонентом этой части модели является так называемая реляционная алгебра, которая в основном состоит из набора операторов, использующих отношения в качестве операндов и возвращающих отношения в качестве результата. В главе 3 кратко обсуждались операторы выборки, проекции и соединения; эти и некоторые другие операторы рассматриваются в этой главе более подробно.

В [6.2] Кодд определяет так называемую «начальную» алгебру, т. е. набор из восьми операторов, показанный символически на рис. 6.1. Определяя именно эти восемь операторов, Кодд преследовал особую цель, о которой пойдёт речь в следующей главе. Однако важно понимать, что на этих операторах не заканчивается история; на самом деле можно было бы определить любое число операторов, которые бы удовлетворяли простому необходимому условию: «отношение на входе, отношение на выходе» (множество таких операторов действительно предлагалось разными авторами; см., например, [6.9-6.11]). В этой главе сначала рассматриваются операции Кодда (или, по крайней мере, его версия операторов), а затем они используются в качестве основы для обсуждения различных алгебраических идей; в продолжение этой темы обсуждаются способы, с помощью которых данный первоначальный набор операторов можно расширить.

Обзор начальной алгебры

Как утверждалось выше, реляционная алгебра, определенная Кодом в [6.2], состоит из восьми операторов, составляющих две группы, по четыре оператора в каждой.

  1. Традиционные операции над множествами: объединение, пересечение, вычитание и декартово произведение (все они модифицированы с учетом того, что их операндами являются отношения, а не произвольные множества).

  2. Специальные реляционные операции: выборка, проекция, соединение и деление. Ниже приведены упрощенные определения этих восьми операторов (см. рис. 6.1).

Выборка:

возвращает отношение, содержащее все кортежи из определенного отношения, которые удовлетворяют определенным условиям. Операция выборки также называется операцией ограничения1, поэтому далее в этой книге будет также употребляться термин ограничение, если подразумевается алгебраическая операция.

Проекция:

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

Произведение:

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

Объединение:

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

Пересечение:

возвращает отношение, содержащее все кортежи, которые принадлежат одновре­менно двум определенным отношениям.

Вычитание:

возвращает отношение, содержащее все кортежи, которые принадлежат первому из двух определенных отношений и не принадлежат второму.

Соединение:

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

Рис. 6. 1. Первоначальные восемь операторов (обзор)

Замечание. Строго говоря, это естественное соединение. (О различных видах соединений речь идет ниже в этой главе.)

Деление:

для двух отношений, бинарного и унарного, возвращает

отношение, содержащее все значения одного атрибута бинарного отношения, которые соответствуют (в другом

атрибуте) всем значениям в унарном отношении.

На этом закончим краткий обзор первоначальных операторов. План остальной части главы такой: в следующем вводном разделе повторно и более подробно рассматривается вопрос замкнутости. Затем в деталях обсуждается восемь первоначальных операторов, предложенных Коддом и даются некоторые примеры использования этих операторов для формулирования запросов. Далее обсуждается вопрос «зачем нужна алгебра» и описываются два немаловажных оператора, называемых TEND и SUMMARIZE. Затем рассматриваются операции присвоения, обновления реляционное сравнение. И наконец, дается краткое заключение.