- •7. Реляционная алгебра
- •7.1. Типы и языки запросов
- •7.2. Реляционная алгебра (алгебра отношений)
- •7.2.1. Проекция
- •7.2.2. Выборка
- •7.2.3. Соединение
- •7.2.4. Объединение
- •7.2.5. Пересечение
- •7.2.6. Вычитание
- •7.2.7. Умножение
- •7.2.8. Деление
- •7.3. Примеры запросов на реляционном языке
- •Вопросы для самоконтроля
7.2.2. Выборка
В противоположность проекции, которая выделяет из отношения нужные столбцы, выборкой называют операцию, при которой отношение исследуют по строкам и выделяют множество строк, удовлетворяющих заданным условиям.
Выборкой из отношения R по условию для подмножества атрибутов Х называют новое отношение
R[ (X) ] = { r R (r[X]) }.
Так, выборка по условию (r[X]) = (ЗавК=‘Шаньгин’), т.е. информация о преподавателях, работающих на кафедре Шаньгина, показана на рис.7.3.
R3 = R [ЗавК=‘Шаньгин’]
НП |
ЗавК |
Нтел |
102 |
Шаньгин |
2854 |
125 |
Шаньгин |
2854 |
Рис.7.3. Выборка.
Выборка осуществляется командой SELECT языка SQL:
SELECT * FROM R WHERE (ЗавК=‘Шаньгин’)
7.2.3. Соединение
Операция соединения обратна операции проекции и предназначена для создания одного нового отношения из двух уже существующих отношений. Новое отношение получается путем конкатенации (сцепления) кортежей первого отношения R с кортежами второго отношения S. Только те кортежи подвергаются конкатенации, в которых значение заданного атрибута Х в отношении R совпадает со значением заданного атрибута Y в отношении S:
R [X=Y] S = {<r,s> | r R s S (r[X] = s[Y])}.
Если R имеет N атрибутов (столбцов), а S - M атрибутов, то отношение R[X=Y]S будет иметь N+M атрибутов (столбцов). В получаемом отношении в двух столбцах всегда будут содержаться одинаковые значения. Если один из этих столбцов удалить, то результат принято называть естественным соединением.
Например, естественное соединение R1 [ЗавК=ЗавК] R2 отношений R1 и R2, показанных на рис.7.2, совпадает с отношением, приведенным на рис 7.1.
Соединение осуществляется командой SELECT языка SQL:
SELECT НП,ЗавК,Нтел FROM R1,R2
WHERE R1.ЗавК= R2.ЗавК
7.2.4. Объединение
Объединение - это операция получения отношения, полностью объединяющего кортежи, содержащиеся в отношениях R и S. Множества атрибутов и порядок следования атрибутов в кортежах должны быть одинаковыми в отношениях R и S. Результирующее отношение называется множеством-суммой
R S = { x | x R x S }.
Объединение осуществляется командой UNION языка SQL:
SELECT * FROM R
UNION
SELECT * FROM S
7.2.5. Пересечение
Результатом данной операции является отношение, состоящее из общих кортежей отношений R и S:
R S = { x | x R x S }.
Практическая ценность данной операции невелика.
7.2.6. Вычитание
Это операция получения отношения, состоящего из кортежей, которые являются кортежами отношения R и не являются кортежами отношения S:
R - S = { x | x R x S }.
7.2.7. Умножение
Результатом данной операции является декартово, или прямое, произведение:
R S = { <r,s> | r R s S }
Если умножаются отношение R степени m и отношение S степени n, то получается отношение R S степени (m+n).
Мощность отношения R S равна i*j, где i, j - мощности отношений R, S соответственно.
Например, если
-
G2
G1
F1
R=
A
, S=
d
3
B
h
7
то
-
G2
G1
F1
A
d
3
R S=
A
h
7
B
d
3
B
h
7