Опубликован: 02.08.2007 | Уровень: специалист | Доступ: свободно
Лекция 4:

Реляционная модель данных

< Лекция 3 || Лекция 4: 12345 || Лекция 5 >

Разность отношений

Операция разности выполняется над двумя совместными отношениями А и В. Результатом операции разности является отношение С, которое включает в себя кортежи отношения А, отличные от кортежей отношения В. Таким образом, разность отношений можно представить с помощью теоретико-множественной операции разности:

Q_c = Q_a - Q_b = \{Q_a, \text{отличные от } Q_b\}.

Отметим для дальнейшего, что пересечение отношений можно представить через разность отношений как Qa - (Qa - Qb).

Пример. Разность отношений. Выполним операцию 
разности отношений КЛИЕНТ_1 и КЛИЕНТ_2.

Исходные отношения:

КЛИЕНТ_1 (#, Фамилия, Возраст) и КЛИЕНТ_2 (#, Фамилия, Возраст)
КЛИЕНТ_1 КЛИЕНТ_2
1 Иванов 20 1 Иванов 20
3 Петров 23 2 Исаев 30
4 Фролов 49

Результирующее отношение:

КЛИЕНТ (#, Фамилия, Возраст) = КЛИЕНТ_1 - КЛИЕНТ_2

3 Петров 23
4 Фролов 49

Декартово произведение отношений

Операция декартова произведения выполняется над двумя произвольными отношениями А и В. Результатом операции декартова произведения является отношение С, степень которого равна сумме степеней исходных отношений, а мощность - произведению мощностей исходных отношений. Таким образом, декартово произведение отношений можно представить с помощью декартова произведения множеств:

Q_c = Q_a \times Q_b.
Пример. Операция "декартово произведение". 
Выполним операцию декартова произведения 
отношений СЛУЖАЩИЕ и МЕДОСМОТР.

Исходные отношения:
СЛУЖАЩИЕ (#, Фамилия, Пол)	МЕДОСМОТР (Процедура, Дата)
СЛУЖАЩИЙ МЕДОСМОТР
1 Иванов М ЭКГ 17.08
5 Антонова Ж Анализ крови 20.08
Терапевт 23.08

Результирующее отношение:

РЕЗУЛЬТАТЫ_МЕДОСМОТРА ( #, Фамилия, Пол, Процедура, Дата ) =

СЛУЖАЩИЙ Х МЕДОСМОТР

1 Иванов м ЭКГ 17.08
1 Иванов м Анализ крови 20.08
1 Иванов м Терапевт 23.08
5 Антонова ж ЭКГ 17.08
5 Антонова ж Анализ крови 20.08
5 Антонова ж Терапевт 23.08

Проекция отношения

Операция проекции выполняется над одним отношением А. Результатом выполнения операции проекции над отношением А является отношение С, которое включает в себя все кортежи отношения А, но только с теми атрибутами, на которые выполняется проекция. Операцию проекции отношения можно представить следующим образом:

Q_c= \pi_{i_1, i_2, \dots, i_N} (Q_A)

Для обозначения проекции в теории реляционных баз данных принято использовать греческую букву \pi, а для обозначения атрибутов, которые участвуют в операции проекции, принято использовать их номера или имена как подстрочные индексы \pi. Предполагается, что существует взаимно однозначное соответствие между номерами атрибутов и их именами для данной схемы отношения. Для обозначения атрибутов, которые участвуют в проекции, в формуле выше использованы индексы i1, i2, …, iN, где N - число атрибутов проекции.

Таким образом, операция проекции заключается в удалении некоторых атрибутов в исходном отношении Qa и упорядочивании оставшихся атрибутов.

Пример. Проекция отношения. Выполним операцию проекции 
отношения СОТРУДНИК на атрибуты ОТДЕЛ и ДОЛЖНОСТЬ.

Исходное отношение:
СОТРУДНИК (#, Фамилия, Отдел, Должность)
1 Иванов 12 Инженер
2 Исаев 11 Гл.специалист
3 Петров 11 Инженер
4 Фролов 11 Инженер
5 Антонова 12 Конструктор

Результирующее отношение:

ДОЛЖНОСТЬ (Отдел, Должность) = p (Отдел, Должность)

12 Инженер
11 Гл.специалист
11 Инженер
12 Конструктор

Деление отношений

Операция деления выполняется над двумя отношениями А и В, где А - отношение-делимое, а B - отношение-делитель. При этом атрибуты B должны являться подмножеством атрибутов A. Результатом выполнения операции деления является отношение С, которое включает в себя атрибуты отношения А, отличные от атрибутов отношения В, и только те кортежи, декартовы произведения которых с отношением В дают отношение А:

Q_c = Q_a \div Q_b = \pi_{1, 2, \dots, (n - m)} (Q_a) - \pi_{1, 2, \dots, (n - m)} (\pi_{1, 2, \dots, (n - m)} (Q_a) \times Q_b) - Q_a ).

Представление частного отношений через другие алгебраические операции может быть получено следующим образом. Предположим, что Q_b \neq \oslash. Пусть n и m - арности отношений Qa и Qb, n > m. Тогда разность исходных отношений есть множество кортежей t степени n - m, таких, что для всех кортежей s степени m из Qb, кортеж ts принадлежит Qa. Пусть Т = \pi_{1, 2, \dots, (n - m)} (Q_a). Тогда (T \times Q_b) - Q_a есть множество кортежей степени n, не принадлежащих Qa. Каждый из них формируется из n - m первых компонентов кортежа из Qa, за которым следуют компоненты кортежа Qb. Пусть далее V =\pi_{1, 2, \dots, (n - m)} (T \times Q_b ) - Q_a) есть множество кортежей t степени n - m, состоящих из первых n - m компонентов Qa, причем для каждого из них в Qb существует некоторый кортеж s степени m, такой, что ts не принадлежит Qa. Таким образом, разность отношений T - V есть, по определению, частное отношений Q_a \div Q_b.

Пример. Деление отношений. Выполним операцию деления 
отношения РЕЗУЛЬТАТЫ_МЕДОСМОТРА на отношение МЕДОСМОТР.

Исходные отношения:

РЕЗУЛЬТАТЫ_МЕДОСМОТРА (#, Фамилия, Пол, Процедура, Дата)

МЕДОСМОТР (Процедура, Дата )
1 Иванов М ЭКГ 17.08
1 Иванов М Анализ крови 20.08
1 Иванов М Терапевт 23.08
5 Антонова Ж ЭКГ 17.08
5 Антонова Ж Анализ крови 20.08
5 Антонова Ж Терапевт 23.08

Результирующее отношение:

ЭКГ 17.08
Анализ крови 20.08
Терапевт 23.08

СЛУЖАЩИЙ (#, Фамилия, Пол) = РЕЗУЛЬТАТЫ_МЕДОСМОТРА / МЕДОСМОТР

1 Иванов М
5 Антонова Ж
< Лекция 3 || Лекция 4: 12345 || Лекция 5 >
Александра Каева
Александра Каева
Михаил Забелкин
Михаил Забелкин
Асан Султанов
Асан Султанов
Казахстан, Алматы, Международный Университет IT, 2013