Слайд 2
Основная идея реляционной алгебры состоит в том, что
отношения являются множествами,
средства манипулирования отношениями могут базироваться на
традиционных теоретико-множественных операциях, дополненных некоторыми специальными операциями, специфичными для реляционных баз данных.
Слайд 3
Рассмотрим начальный вариант алгебры, который был предложен Коддом
("алгебра Кодда ").
В этом варианте набор основных алгебраических
операций состоит из восьми операций, которые делятся на два класса –
теоретико-множественные операции
специальные реляционные операции.
Слайд 4
В состав теоретико-множественных операций входят операции:
объединения отношений ;
пересечения отношений ;
взятия разности отношений ;
взятия декартова
произведения отношений.
Слайд 5
Специальные реляционные операции включают:
ограничение отношения ;
проекцию отношения
;
соединение отношений ;
деление отношений.
Кроме того, в состав
алгебры включается:
операция присваивания, позволяющая сохранить в базе данных результаты вычисления алгебраических выражений
операция переименования атрибутов, дающая возможность корректно сформировать заголовок (схему) результирующего отношения.
Слайд 6
Интерпретация реляционных операций
При выполнении операции объединения (UNION )
двух отношений с одинаковыми заголовками производится отношение, включающее все
кортежи, которые входят хотя бы в одно из отношений-операндов.
Операция пересечения (INTERSECT) двух отношений с одинаковыми заголовками производит отношение, включающее все кортежи, которые входят в оба отношения-операнда.
Отношение, являющееся разностью (MINUS ) двух отношений с одинаковыми заголовками, включает все кортежи, входящие в отношение-первый операнд, такие, что ни один из них не входит в отношение, которое является вторым операндом.
Слайд 7
Интерпретация реляционных операций
При выполнении декартова произведения (TIMES )
двух отношений, пересечение заголовков которых пусто, производится отношение, кортежи
которого производятся путем объединения кортежей первого и второго операндов.
Результатом ограничения (WHERE) отношения по некоторому условию является отношение, включающее кортежи отношения-операнда, удовлетворяющее этому условию.
При выполнении проекции (PROJECT) отношения на заданное подмножество множества его атрибутов производится отношение, кортежи которого являются соответствующими подмножествами кортежей отношения-операнда.
При соединении (JOIN) двух отношений по некоторому условию образуется результирующее отношение, кортежи которого производятся путем объединения кортежей первого и второго отношений и удовлетворяют этому условию.
Слайд 8
Интерпретация реляционных операций
У операции реляционного деления (DIVIDE BY
) два операнда – бинарное и унарное отношения. Результирующее
отношение состоит из унарных кортежей, включающих значения первого атрибута кортежей первого операнда таких, что множество значений второго атрибута (при фиксированном значении первого атрибута) включает множество значений второго операнда.
Операция переименования (RENAME) производит отношение, тело которого совпадает с телом операнда, но имена атрибутов изменены.
Операция присваивания (:=) позволяет сохранить результат вычисления реляционного выражения в существующем отношении БД.
Слайд 9
Приоритеты операций:
RENAME >= WHERE = PROJECT >= TIMES
= JOIN = INTERSECT = DIVIDE BY >= UNION
= MINUS
В другой форме
приоритеты операций
Вычисление выражения производится слева направо с учетом приоритетов операций и скобок.
Слайд 10
В теории множеств:
результатом объединения двух множеств A{a} и
B{b} является такое множество C{c}, что для каждого с
либо существует такой элемент a, принадлежащий множеству A, что c=a, либо существует такой элемент b, принадлежащий множеству B, что c=b ;
пересечением множеств A и B является такое множество C{c}, что для любого c существуют такие элементы a, принадлежащий множеству A, и b, принадлежащий множеству B, что c=a=b ;
разностью множеств A и B является такое множество C{c}, что для любого c существует такой элемент a, принадлежащий множеству A, что c=a, и не существует такой элемент b, принадлежащий B, что c=b.
Слайд 11
Два отношения совместимы по объединению в том и
только в том случае, когда обладают одинаковыми заголовками.
В
развернутой форме это означает, что в заголовках обоих отношений содержится один и тот же набор имен атрибутов, и одноименные атрибуты определены на одном и том же домене.
Слайд 12
Предположим, что в базе данных имеются два отношения
СЛУЖАЩИЕ_В_ПРОЕКТЕ_1
СЛУЖАЩИЕ_В_ПРОЕКТЕ_2
с одинаковыми схемами {СЛУ_НОМЕР, СЛУ_ИМЯ, СЛУ_ЗАРП, СЛУ_ОТД_НОМЕР}
(имена доменов опущены по причине очевидности).
Каждое из отношений содержит данные о служащих, участвующих в соответствующем проекте.
Слайд 14
Тогда выполнение операции
СЛУЖАЩИЕ_В_ПРОЕКТЕ_1 UNION СЛУЖАЩИЕ_В_ПРОЕКТЕ_2
позволит получить информацию
обо всех служащих, участвующих в обоих проектах.
Выполнение операции
СЛУЖАЩИЕ_В_ПРОЕКТЕ_1 INTERSECT СЛУЖАЩИЕ_В_ПРОЕКТЕ_2
позволит получить данные о служащих, которые одновременно участвуют в двух проектах.
Наконец, операция
СЛУЖАЩИЕ_В_ПРОЕКТЕ_1 MINUS СЛУЖАЩИЕ_В_ПРОЕКТЕ_2
выработает отношение, содержащее кортежи служащих, которые участвуют только в первом проекте.
Слайд 16
Операция ограничения WHERE
требует наличия двух операндов:
ограничиваемого
отношения
простого условия ограничения.
Простое условие ограничения может иметь
вид:
a comp-op b, где а и b – имена атрибутов ограничиваемого отношения; атрибуты a и b должны быть определены на одном и том же домене, для значений базового типа данных которого поддерживается операция сравнения comp_op, или на базовых типах данных, над значениями которых можно выполнять эту операцию сравнения;
a comp-op const, где a – имя атрибута ограничиваемого отношения, а const – литерально заданная константа; атрибут a должен быть определен на домене или базовом типе, для значений которого поддерживается операция сравнения comp_op.
Слайд 17
В результате выполнения операции ограничения производится отношение, заголовок
которого совпадает с заголовком отношения-операнда, а в тело входят
те кортежи отношения-операнда, для которых значением условия ограничения является true.
Результат выполнения операции
СЛУЖАЩИЕ_В_ПРОЕКТЕ_1 WHERE (СЛУ_ЗАРП > 20000.00 AND (СЛУ_ОТД_НОМ = 310 OR СЛУ_ОТД_НОМ = 315))
На интуитивном уровне операцию ограничения лучше всего представлять как взятие некоторой "горизонтальной" вырезки из отношения-операнда (выборки некоторых строк из таблицы).
Слайд 18
Операция взятия проекции
требует наличия двух операндов
проецируемого отношения
A
подмножества множества имен атрибутов, входящих в заголовок отношения
A.
Результатом проекции отношения A на множество атрибутов {a1, a2, ..., an}
PROJECT A {a1, a2, ..., an}
является отношение с заголовком, определяемым множеством атрибутов {a1, a2, ..., an}, и с телом, состоящим из кортежей вида
таких, что в отношении A имеется кортеж, атрибут a1 которого имеет значение v1, атрибут a2 имеет значение v2, ..., атрибут an имеет значение vn.
Тем самым, при выполнении операции проекции выделяется "вертикальная" вырезка отношения-операнда с естественным уничтожением потенциально возникающих кортежей-дубликатов.