Алгебра Кодда | это... Что такое Алгебра Кодда? (original) (raw)
Содержание
- 1 Реляционные операторы
- 1.1 Совместимость отношений
* 1.1.1 Отношения, совместимые по объединению
* 1.1.2 Отношения, совместимые по взятию расширенного декартова произведения - 1.2 Оператор переименования атрибутов
- 1.3 Оператор присваивания
- 1.4 Теоретико-множественные операторы
* 1.4.1 Объединение
* 1.4.2 Пересечение
* 1.4.3 Вычитание
* 1.4.4 Декартово произведение - 1.5 Специальные реляционные операторы
* 1.5.1 Выборка (ограничение)
* 1.5.2 Проекция
* 1.5.3 Соединение
* 1.5.4 Деление
- 1.1 Совместимость отношений
- 2 Зависимость реляционных операторов
- 3 Примитивные реляционные операторы
Реляционные операторы
Совместимость отношений
Отношения, совместимые по объединению
Реляционные операторы объединения, пересечения и взятия разности требуют, чтобы отношения имели одинаковые заголовки. Действительно, отношения состоят из заголовка и тела. Операция объединения двух отношений есть просто объединение двух множеств кортежей, взятых из тел соответствующих отношений.
Отношения называются совместимыми по объединению, если
- имеют одно и то же множество имен атрибутов, то есть для любого атрибута в одном отношении найдется атрибут с таким же наименованием в другом отношении,
- атрибуты с одинаковыми именами определены на одних и тех же доменах.
Некоторые отношения не являются совместимыми по объединению, но становятся таковыми после некоторого переименования атрибутов.
Отношения, совместимые по взятию расширенного декартова произведения
Реляционный оператор расширенного декартова произведения требует, чтобы отношения-операнды не обладали одноименными атрибутами. Отношения называются совместимыми по взятию расширенного декартова произведения, если пересечение множеств имен атрибутов, взятых из их схем отношений, пусто.
Оператор переименования атрибутов
В результате применения оператора переименования атрибутов получаем новое отношение, с измененными именами атрибутов.
Синтаксис:
R RENAME Atr1, Atr2, … AS NewAtr1, NewAtr2, …
где
R — отношение
Atr1, Atr2, … — исходные имена атрибутов
NewAtr1, NewAtr2, … — новые имена атрибутов
Оператор присваивания
Оператор присваивания (:=) позволяет сохранить результат вычисления реляционного выражения в существующем отношении.
Теоретико-множественные операторы
Объединение
Отношение с тем же заголовком, что и у совместимых по типу отношений A и B, и телом, состоящим из кортежей, принадлежащих или A, или B, или обоим отношениям.
Синтаксис:
A UNION B
Пересечение
Отношение с тем же заголовком, что и у совместимых по типу отношений A и B, и телом, состоящим из кортежей, принадлежащих одновременно обоим отношениям A и B.
Синтаксис:
A INTERSECT B
Вычитание
Отношение с тем же заголовком, что и у совместимых по типу отношений A и B, и телом, состоящим из кортежей, принадлежащих отношению A и не принадлежащих отношению B.
Синтаксис:
A MINUS B
Декартово произведение
Отношение (A1, A2, …, Am, B1, B2, …, Bm), заголовок которого является сцеплением заголовков отношений A(A1, A2, …, Am) и B(B1, B2, …, Bm), а тело состоит из кортежей, являющихся сцеплением кортежей отношений A и B:
(a1, a2, …, am, b1, b2, …, bm)
таких, что _(a1, a2, …, am)_∈ A, _(b1, b2, …, bm)_∈ B.
Синтаксис:
A TIMES B
Специальные реляционные операторы
Выборка (ограничение)
Отношение с тем же заголовком, что и у отношения A, и телом, состоящим из кортежей, значения атрибутов которых при подстановке в условие c дают значение ИСТИНА. c представляет собой логическое выражение, в которое могут входить атрибуты отношения A и/или скалярные выражения.
Синтаксис:
A WHERE c
Проекция
Проекция в реляционной алгебре — унарная операция, которая позволяет получить «вертикальное» подмножество данного отношения, или таблицы, то есть такое подмножество, которое получается выбором специфицированных атрибутов с последующим исключением, если это необходимо, избыточных дубликатов кортежей. Пусть дана таблица с именами атрибутов , то есть и некоторое подмножество множества имен атрибутов . Результатом проекции таблицы по выбранным именам атрибутов называется новая таблица , полученная из исходной таблицы вычеркиванием атрибутов, не входящих в выбранное множество, с последующим возможным удалением избыточных дубликатов кортежей.
При осуществление проекции необходимо задать проецируемое отношение и некий набор его атрибутов, который станет заголовком результирующего.
Соединение
Операция соединения есть результат последовательного применения операций декартового произведения и выборки. Если в отношениях и имеются атрибуты с одинаковыми наименованиями, то перед выполнением соединения такие атрибуты необходимо переименовать.
Синтаксис:
(A TIMES B) WHERE c
Деление
Отношение с заголовком (X1, X2, …, Xn) и телом, содержащим множество кортежей (x1, x2, …, xn), таких, что для всех кортежей (y1, y2, …, ym) ∈ B в отношении A(X1, X2, …, Xn, Y1, Y2, …, Ym) найдется кортеж (x1, x2, …, xn, y1, y2, …, ym).
Синтаксис:
A DIVIDEBY B
Зависимость реляционных операторов
Не все реляционные операторы являются независимыми, то есть некоторые из реляционных операторов могут быть выражены через другие реляционные операторы.
- Оператор соединения
Оператор соединения определяется через операторы декартового произведения и выборки следующим образом: (A TIMES B) WHERE X=Y где X и Y атрибуты соответственно отношений A и B с первоначально равными именами.
- Оператор пересечения
Оператор пересечения выражается через вычитание следующим образом: A INTERSECT B = A MINUS (A MINUS B)
- Оператор деления
Оператор деления выражается через операторы вычитания, декартового произведения и проекции следующим образом: A DIVIDEBY B = A[X] MINUS ((A[X] TIMES B) MINUS A)[X]
Примитивные реляционные операторы
Оставшиеся реляционные операторы (объединение, вычитание, декартово произведение, выборка, проекция) являются примитивными операторами — их нельзя выразить друг через друга.
- Оператор декартового произведения
Оператор декартового произведения — это единственный оператор, увеличивающий количество атрибутов, поэтому его нельзя выразить через объединение, вычитание, выборку, проекцию.
- Оператор проекции
Оператор проекции — единственный оператор, уменьшающий количество атрибутов, поэтому его нельзя выразить через объединение, вычитание, декартово произведение, выборку.
- Оператор выборки
Оператор выборки — единственный оператор, позволяющий проводить сравнения по атрибутам отношения, поэтому его нельзя выразить через объединение, вычитание, декартово произведение, проекцию.
- Операторы объединения и вычитания
Доказательство примитивности операторов объединения и вычитания более сложны и мы их здесь не приводим.