Реляционная алгебра
Материал из Википедии — свободной энциклопедии
Реляционная алгебра — формальная система манипулирования отношениями, основными операциями которой являются: проекция, соединение, пересечение и объединение. См. тж. Реляционная модель данных
Содержание
|
[править] Краткий обзор
[править] Замкнутость реляционной алгебры
Реляционная алгебра представляет собой набор операторов, использующих отношения в качестве аргументов и возвращающих отношения в качестве результата. Таким образом, реляционный оператор f выглядит как функция с отношениями в качестве аргументов:
R = f(R1, R2, …, Rn)
Реляционная алгебра является замкнутой, т. к. в качестве аргументов в реляционные операторы можно подставлять другие реляционные операторы, подходящие по типу:
R = f(f1(R11, R12, …), f2(R21, R22,…),…)
В реляционных выражениях можно использовать вложенные выражения сколь угодно сложной структуры.
Каждое отношение обязано иметь уникальное имя в пределах базы данных. Имя отношения, полученного в результате выполнения реляционной операции, определяется в левой части равенства. Однако можно не требовать наличия имен от отношений, полученных в результате реляционных выражений, если эти отношения подставляются в качестве аргументов в другие реляционные выражения. Такие отношения называют неименованными отношениями. Неименованные отношения реально не существуют в базе данных, а только вычисляются в момент вычисления значения реляционного оператора.
[править] Реляционные операторы
[править] Отношения, совместимые по типу
Некоторые реляционные операторы (например, объединение) требуют, чтобы отношения имели одинаковые заголовки. Действительно, отношения состоят из заголовка и тела. Операция объединения двух отношений есть просто объединение двух множеств кортежей, взятых из тел соответствующих отношений.
Отношения называются совместимыми по типу, если
- имеют одно и то же множество имен атрибутов, т. е. для любого атрибута в одном отношении найдется атрибут с таким же наименованием в другом отношении,
- Атрибуты с одинаковыми именами определены на одних и тех же доменах.
Некоторые отношения не являются совместимыми по типу, но становятся таковыми после некоторого переименования атрибутов.
[править] Оператор переименования атрибутов
В результате применения оператора переименования атрибутов получаем новое отношение, с измененными именами атрибутов.
Синтакcис:
R RENAME Atr1, Atr2, … AS NewAtr1, NewAtr2, …
где
R — отношение
Atr1, Atr2, … — исходные имена атрибутов
NewAtr1, NewAtr2, … — новые имена атрибутов
[править] Теоретико-множественные операторы
- Объединение
- Пересечение
- Вычитание
- Декартово произведение
[править] Объединение
Отношение с тем же заголовком, что и у совместимых по типу отношений A и B, и телом, состоящим из кортежей, принадлежащих или A, или B, или обоим отношениям.
Синтакcис:
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)∈ A, (b1, b2, …, bm)∈ B.
Синтаксис:
A TIMES B
[править] Специальные реляционные операторы
- Выборка
- Проекция
- Соединение
- Деление
[править] Выборка
Отношение с тем же заголовком, что и у отношения A, и телом, состоящем из кортежей, значения атрибутов которых при подстановке в условие c дают значение ИСТИНА. c представляет собой логическое выражение, в которое могут входить атрибуты отношения A и/или скалярные выражения.
Синтаксис:
A WHERE c
[править] Проекция
Отношение с заголовком (X, Y, …, Z) и телом, содержащим множество кортежей вида (x, y, …, z), таких, для которых в отношении A найдутся кортежи со значением атрибута X равным x, значением атрибута Y равным y, …, значением атрибута Z равным z.
Синтаксис:
A[X, Y, …, Z]
[править] Соединение
Операция соединения есть результат последовательного применения операций декартового произведения и выборки. Если в отношениях и имеются атрибуты с одинаковыми наименованиями, то перед выполнением соединения такие атрибуты необходимо переименовать.
Синтаксис:
(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 INTERSECT B = A MINUS (A MINUS B)
- Оператор деления
Оператор деления выражается через операторы вычитания, декартового произведения и проекции следующим образом: A DEVIDEBY B = A[X] MINUS ((A[X] TIMES B) MINUS A)[X]
[править] Примитивные реляционные операторы
Оставшиеся реляционные операторы (объединение, вычитание, декартово произведение, выборка, проекция) являются примитивными операторами — их нельзя выразить друг через друга.