Тема: Реляционная алгебра. Операции реляционной алгебры Кодда.
Цель: формирование представления об основных операциях реляционной алгебры.
План:
1. Реляционная алгебра. Недостатки и преимущества.
Реляционная алгебра как теоретический язык запросов по сравнению с реляционным исчислением более наглядно описывает выполняемые над отношениями действия.
Примером языка запросов, основанного на реляционной алгебре, является ISBL (Information System Base Language — базовый язык информационных систем). Языки запросов, построенные на основе реляционной алгебры, в современных СУБД широкого распространения не получили. Однако знакомство с ней полезно для понимания сути реляционных операций, выражаемых другими используемыми языками.
Вариант реляционной алгебры, предложенный Коддом, включает в себя следующие основные операции: объединение, разность (вычитание), пересечение, декартово (прямое) произведение (или произведение), выборка (селекция, ограничение), проекция, деление и соединение.
Реляционная алгебра Кодда обладает несколькими недостатками. Во-первых, восемь перечисленных операций по охвату своих функций, с одной стороны, избыточны, так как минимально необходимый набор составляют пять операций: объединение, вычитание, произведение, проекция и выборка. Три другие операции (пересечение, соединение и деление) можно определить через пять минимально необходимых. Так, например, соединение — это проекция выборки произведения.
Во-вторых, этих восьми операций недостаточно для построения реальной СУБД на принципах реляционной алгебры. Требуются расширения, включающие операции: переименования атрибутов, образования новых вычисляемых атрибутов, вычисления итоговых функций, построения сложных алгебраических выражений, присвоения, сравнения и т. д.
Рассмотрим перечисленные операции более подробно, сначала — операции реляционной алгебры Кодда, а затем — дополнительные операции, введенные Дейтом.
2.Операции реляционной алгебры Кодда.
Операции реляционной алгебры Кодда можно разделить на две группы: базовые теоретико-множественные и специальные реляционные. Первая группа операций включает в себя четыре классические операции теории множеств: объединение, разность, пересечение и произведение. Вторая группа представляет собой развитие обычных теоретико-множественных операций в направлении к реальным задачам манипулирования данными, в ее состав входят следующие операции: проекция, селекция, деление и соединение.
Операции реляционной алгебры могут выполняться над одним отношением (например, проекция) или над двумя отношениями (например, объединение). В первом случае операция называется унарной, а во втором — бинарной. При выполнении бинарной операции участвующие в операциях отношения должны быть совместимы по структуре.
Совместимость структур отношений означает совместимость имен атрибутов и типов соответствующих доменов. Для устранения конфликтов имен атрибутов в исходных отношениях (когда совпадение имен недопустимо), а также для построения произвольных имен атрибутов результирующего отношения применяется операция переименования атрибутов. Структура результирующего отношения по определенным правилам наследует свойства структур исходных отношений.
a. Классические операции.
Объединением двух совместимых отношений R1 и R2 одинаковой размерности (Rl UNION R2) является отношение R, содержащее все элементы исходных отношений (с исключением повторений).
![]() |
Пример 1.
Пусть отношением R1 будет множество поставщиков из Лондона, а отношение R2 — множество поставщиков, которые поставляют деталь Р1. Тогда отношение R обозначает поставщиков, находящихся в Лондоне, или поставщиков, выпускающих деталь Р1, либо тех и других.
Отношение R1
|
П# |
Имя |
Статус |
Город_п |
|
S1 |
Сергей |
20 |
Москва |
|
S2 |
Николай |
20 |
Москва |
Отношение R2
|
П# |
Имя |
Статус |
Город_п |
|
S1 |
Сергей |
20 |
Москва |
|
S2 |
Иван |
10 |
Киев |
Отношение R(R1 UNION R2) – результирующее отношение содержит все элементы исходных отношений
|
П# |
Имя |
Статус |
Город_п |
|
S1 |
Сергей |
20 |
Москва |
|
S2 |
Иван |
10 |
Киев |
|
S4 |
Николай |
20 |
Москва |
Вычитание (разность) совместимых отношений R1 и R2 одинаковой размерности (Rl MINUS R2) есть отношение, тело которого состоит из множества кортежей, принадлежащих R1, но не принадлежащих отношению R2.
![]() |
Для тех же отношений R1 и R2 из примера 1 отношение R будет представлять собой множество поставщиков, находящихся в Лондоне, но не выпускающих деталь Р1, т. е. R={(S4, Николай, 20, Москва)}.
|
П# |
Имя |
статус |
Город_п |
|
S4 |
Николай |
20 |
Москва |
Заметим, что результат операции вычитания зависит от порядка следования операндов, т. е. Rl MINUS R2 и R2 MINUS R1 — не одно и то же.
Пересечение двух совместимых отношений R1 и R2 одинаковой размерности (Rl INTERSECT R2) порождает отношение R с телом, включающим в себя кортежи, одновременно принадлежащие обоим исходным отношениям. Рис.3.
![]() |
Для отношений R1 и R2 результирующее отношение R будет означать всех производителей из Лондона, выпускающих деталь Р1. Тело отношения R состоит из единственного элемента (S1, Сергей, 20, Москва).
|
П# |
Имя |
статус |
Город_п |
|
S1 |
Сергей |
20 |
Москва |
Произведение отношения R1 степени к1 и отношения R2 степени к2 (Rl TIMES R2), которые не имеют одинаковых имен атрибутов, есть такое отношение R степени (к1+к2), заголовок которого представляет сцепление заголовков отношений R1 и R2, а тело — имеет кортежи, такие, что первые к1 элементов кортежей принадлежат множеству R1, а последние к2 элементов — множеству R2. При необходимости получить произведение двух отношений, имеющих одинаковые имена одного или нескольких атрибутов, применяется операция переименования RENAME, рассматриваемая далее.
![]() |
В теории множеств результатом операции прямого произведения является множество, каждый элемент которого является парой элементов, первый из которых принадлежит R1, а второй — принадлежит R2. Поэтому кортежами декартова произведения бинарных отношений будут кортежи вида: ((а, б), (в, г)), где кортеж (а, б) принадлежит отношению R1, а кортеж (в, г) — принадлежит отношению R2.
Пример 2.
Пусть отношение R1 представляет собой множество номеров всех текущих поставщиков {SI, S2}, а отношение R2 — множество номеров всех текущих деталей {Р1, Р2 }. Результатом операции R1 TIMES R2 является множество всех пар типа «поставщик — деталь», т. е. {(S1.P1), (S1.P2), (S2.P1), (S2.P2)}.
Отношение R1
|
П# |
Имя |
Город_п |
|
S1 |
Сергей |
Москва |
|
S2 |
Николай |
Москва |
Отношение R2
|
Р# |
название |
тип |
|
P1 |
Гайка |
Каленый |
|
P2 |
Угол |
Твердый |
Результирующее отношение R (R1 TIMES R2) – тело состоит из кортежей – множества всех пар.
|
П# |
Имя |
Город_п |
Р# |
название |
тип |
|
S1 |
Сергей |
Москва |
P1 |
Гайка |
Каленый |
|
S1 |
Сергей |
Москва |
P2 |
Угол |
Твердый |
|
S2 |
Николай |
Москва |
P1 |
Гайка |
Каленый |
|
S2 |
Николай |
Москва |
P2 |
Угол |
Твердый |
b. Специальные операции.
Выборка (R WHERE f) отношения R по формуле f представляет собой новое отношение с таким же заголовком и телом, состоящим из таких кортежей отношения R, которые удовлетворяют истинности логического выражения, заданного формулой f. Для записи формулы используются операнды — имена атрибутов (или номера столбцов), константы, логические операции (AND — И, OR — ИЛИ, NOT — НЕ), операции сравнения и скобки. Рис.5
|
|
|
|
|
|
|
|
Пример 3. Пусть дано отношение R1, которое содержит сведения о деталях, материалах их которых они изготавливаются, вес каждой детали и города, выпускающие эти детали. Необходимо получить сведения о деталях, у которых вес не превышает 13 и получить сведения о деталях, изготовленных из каленого материала с весом не более 13.
R1
|
Р# |
название |
тип |
вес |
|
P1 |
Гайка |
Каленый |
12 |
|
P2 |
Угол |
Твердый |
13 |
|
P3 |
Шайба |
Каленый |
10,5 |
|
P4 |
Болт |
Каленый |
14 |
|
P5 |
Гайка |
Твердый |
11 |
Результирующее отношение
R(1 WHERE вес <13)
|
Р# |
название |
тип |
вес |
|
P1 |
Гайка |
Каленый |
12 |
|
P3 |
Шайба |
Каленый |
10,5 |
|
P5 |
Гайка |
Твердый |
11 |
Результирующее отношение
R (R1 WHERE тип = «каленый» AND вес <13)
|
Р# |
название |
тип |
вес |
|
P1 |
Гайка |
Каленый |
12 |
|
P3 |
Шайба |
Каленый |
10,5 |
Проекция отношения А на атрибуты X, Y,..., Z (А [X, Y,..., Z]), где множество {X, Y,..., Z} является подмножеством полного списка атрибутов заголовка отношения А, представляет собой отношение с заголовком X, Y,..., Z и телом, содержащим кортежи отношения А, за исключением повторяющихся кортежей. Повторение одинаковых атрибутов в списке X, Y,..., Z запрещается.
Операция проекции допускает следующие дополнительные варианты записи:
- отсутствие списка атрибутов подразумевает указание всех атрибутов (операция тождественной проекции);
- выражение вида R[ ] означает пустую проекцию, результатом которой является пустое множество;
- операция проекции может применяться к произвольному отношению, в том числе и к результату выборки.
Рис. 6
|
|
|
|
|
Пример 4. На основании отношения R1
создана проекция R (название)
|
название |
|
Гайка |
|
Угол |
|
Шайба |
|
Болт |
Пример 5. На основании отношения R1
создана проекция R(R1 whereТип = «каленый»)
[ название]
|
название |
тип |
|
Гайка |
Каленый |
|
Шайба |
Каленый |
|
Болт |
Каленый
|
Результатом деления отношения R1 с атрибутами А и В на отношение R2 с атрибутом В (Rl DIVIDEBY R2), где А и В простые или составные атрибуты, причем атрибут В — общий атрибут, определенный на одном и том же домене (множестве доменов составного атрибута), является отношение R с заголовком А и телом, состоящим из кортежей г таких, что в отношении R1 имеются кортежи (г, s), причем множество значений s включает множество значений атрибута В отношения R2.
![]() |
Пример 6. Даны два отношения R1 и R2.
R1
|
Р# |
название |
P# |
тип |
вес |
|
P1 |
Гайка |
P1 |
Каленый |
12 |
|
P2 |
Угол |
P2 |
Твердый |
13 |
|
P3 |
Шайба |
P3 |
Каленый |
10,5 |
|
P4 |
Болт |
P4 |
Каленый |
14 |
|
P5 |
Гайка |
P5 |
Твердый |
11 |
R2
|
Р# |
вес |
|
P1 |
12 |
|
P2 |
13 |
|
P3 |
10,5 |
|
P4 |
14 |
Результирующее отношение R(R1 DIVIDEBY R2) –вычитание из множества полей первого отношения множества полей второго отношения (одинаковые записи не дублируются)
|
Р# |
название |
тип |
|
P1 |
Гайка |
Каленый |
|
P2 |
Угол |
Твердый |
|
P3 |
Шайба |
Каленый |
|
P4 |
Болт |
Каленый |
Соединение Cf(Rl, R2) отношений R1 и R2 по условию, заданному формулой f, представляет собой отношение R, которое можно получить путем Декартова произведения отношений R1 и R2 с последующим применением к результату операции выборки по формуле f. Правила записи формулы f такие же, как и для операции селекции.
Другими словами, соединением отношения R1 по атрибуту А с отношением R2 по атрибуту В (отношения не имеют общих имен атрибутов) является результат выполнения операции вида:
(Rl TIMES R2) WHERE A 0 В,
где Q — логическое выражение над атрибутами, определенными на одном (нескольких — для составного атрибута) домене. Соединение Cf(Rl, R2), где формула f имеет произвольный вид (в отличие от частных случаев, рассматриваемых далее), называют также Q-соединением.
Важными с практической точки зрения частными случаями соединения являются эквисоединение и естественное соединение.
![]() |
Операция эквисоединения характеризуется тем, что формула задает равенство операндов. Приведенный выше пример демонстрирует частный случай операции эквисоединения по одному столбцу. Иногда эквисоединение двух
Пример 5. Соединение отношений R1, R2
R1
|
Р# |
название |
тип |
Город_П |
|
P1 |
Гайка |
Каленый |
Киев |
|
P2 |
Угол |
Твердый |
Киев |
|
P3 |
Шайба |
Каленый |
Урай |
R2
|
П# |
Имя |
статус |
Город_Д |
|
S1 |
Сергей |
20 |
Москва |
|
S2 |
Иван |
10 |
Киев |
|
S3 |
Петр |
15 |
Урай |
Результирующее отношение R(R1,R2) по атрибутам Город_П и Город_Д.
|
Р# |
название |
тип |
Город_П |
П# |
Имя |
статус |
Город_Д |
|
P1 |
Гайка |
Каленый |
Киев |
S2 |
Иван |
10 |
Киев |
|
P2 |
Угол |
Твердый |
Киев |
S2 |
Иван |
10 |
Киев |
|
P3 |
Шайба |
Каленый |
Урай |
S3 |
Петр |
15 |
Урай |