Реляционная алгебра
Поскольку отношение в реляционной алгебре определяется как множество кортежей, то на отношения распространяются основные операции над множествами – объединение, пересечение, разность и декартово произведение. Операции объединения, пересечения и разности определены для отношений, схемы которых могут отличаться только именами атрибутов (т.е. отношения имеют одинаковую степень и атрибуты определены на одних и тех же доменов).
1. Объединение R3= R1ÈR2
В результат R3 помещаются все кортежи, которые есть в R1 или в R2, причем кортежи, которые одновременно присутствуют в R1 и R2, помещаются в результат один раз.
R1 R2
A | C | |||
B | D | |||
C | E |
Результат R3
A | |
B | |
C | |
D | |
E |
2. Пересечение R3=R1Ç R2
В R3 помещаются кортежи, которые есть в R1 и в R2.
Для R1 и R2 из предыдущего примера результатом будет единственный кортеж (3,С).
3. Разность R3=R1-R2
В R3 попадут кортежи, которые есть в R1, но нет в R2
R1 R2
A | C | |||
B | D | |||
C | E |
Результат R3
A | |
B |
Заметим, что операция пересечения может быть вычислена через операции разности R3=R1Ç R2=R1-(R1-R2)
4. Декартово произведение R3=R1´R2
Результат получается путем склейки каждого кортежа отношения R1 с каждым кортежем R2.
c=a*b
a- количество кортежей в R1
b- количество кортежей в R2
c- количество кортежей в R3
При этом степень R3 равна сумме степеней R1 и R2
R1 R2
A | C | |||
B | D | |||
C | E |
Результат R3
A | C | ||
B | C | ||
C | C | ||
A | D | ||
B | D | ||
C | D | ||
A | E | ||
B | E | ||
C | E |
Кроме перечисленных операций над множествами, Кодд ввел ряд дополнительных операций над отношениями. Операции проекции и выборки определены над одним отношением R1 (унарные операции).
5. Проекция – отбор атрибутов отношения
R2=pI (R1)
I – подмножество атрибутов отношения R1
Степень результата R2 равна½I½ - количество элементов в подмножестве I и может принимать целые значения от 1 до степени R1.
пример: проекция R1 из предыдущих примеров по 2-му атрибуту
Результат R2 содержит всего один атрибут.
А |
В |
С |
6. Операция выборки (селекции) – отбор кортежей
R2=sq (R1)
q - любое логическое выражение (условие отбора кортежей), в состав которого входят имена атрибутов, операции и константы.
В R2 включают все кортежи из R1, для которых q - истинно. При этом отношение R2 может не содержать ни одного кортежа или совпадать с отношением R1. Например, при условии отбора
первый атрибут > 0
в R2 попадут все кортежи R1, а при условии
перый атрибут > 2
только один кортеж (3,C)
На практике операции выборки и проекции часто сочетаются в одном запросе.
7. Операция соединения R3= R1Q R2
Данная операция определена над двумя отношениями, у которых есть общее подмножество атрибутов (на практике это чаще всего один общий атрибут, по которому и выполняется операция соединения). В отличие от операции декартова произведения при соединении склеиваются только те кортежи R1 и R2, которые имеют одно и то же значение общего атрибута (а не каждый кортеж с каждым). При этом общий атрибут попадает в результат один раз.
Пример. Пусть выполняется операция соединения по первому из атрибутов (содержащему числовые значения)
R1 R2
A | C | |||
B | D | |||
C | E | |||
F |
Результат R3
B | C | |
B | D | |
C | E |
Операция соединения эквивалентна операции выборки из декартова произведения отношений R1 и R2.
R3= R1QR2=sq (R1´R2)
Однако, учитывая большую важность этой операции для реляционной базы данных, где связь между отношениями устанавливается при помощи общих атрибутов, она включена в состав базовых операций реляционной алгебры.
Следует отметить, что в результат операции соединения не входят кортежи отношений R1 и R2, для которых не находится одинаковых значений в общем атрибуте. Так, в предыдущем примере в результат не вошел кортеж (1,A) из отношения R1 и (4,F) из отношения R2. Ввиду этой особенности данную операцию называют операцией внутреннего соединения.
В языке SQL поддерживается три операции внешнего соединения – левое, правое и полное.
В левом внешнем соединении результат внутреннего соединения дополняется оставшимися кортежами отношения, стоящего слева (в примере это кортеж (1,A) из отношения R1). Поскольку в результате должно быть 3 атрибута, незаполненный атрибут принимает значение NULL, т.е. в результат R3 добавляется кортеж (1,A,NULL).
В правом внешнем соединении результат внутреннего соединения дополняется оставшимися кортежами отношения, стоящего справа (в примере кортеж (4,F) из отношения R2 дополняется значением NULL и получается кортеж (4,NULL,F) отношения R3).
Наконец, в полном внешнем соединении в результат добавляются все несвязанные кортежи, дополненные неопределенными значениями (в примере это два упомянутых выше кортежа).
8. Операция деления R3= R1¸ R2
Для выполнения операции деления отношения R1 и R2 должны иметь общее подмножество атрибутов (обычно один атрибут), причем в отношении R2 это подмножество является множеством его атрибутов (обычно R2 является унарным отношением). Смысл операции поясним на примере.
R1 R2
A | A | ||
B | B | ||
C | |||
A | |||
B | |||
A |
В результате получаем отношение
R3
Операция деления явно не поддерживается в языке SQL, хотя имеется несколько способов выразить ее через другие операции.
Дата добавления: 2015-08-26; просмотров: 1670;