Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие Введение.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
367.1 Кб
Скачать

3.2.3. Операции реляционной алгебры

Проекция

Пусть r отношение со схемой R, A – атрибут, принадлежащий схеме R. Результатом выполнения операции проекции A(r) является новое отношение, схема которого будет состоять только из одного атрибута A. Кортежами этого отношения будут отличные друг от друга значения атрибута A из исходного отношения r:

A(r) = { d dom(A) | t r: t(A) = d }.

Если представить себе исходное отношение r в виде таблицы, то проекция получается вычеркиванием всех столбцов, кроме столбца, соответствующего атрибуту A, и исключением из оставшегося столбца повторяющихся значений.

Например, требуется узнать все года рождения студентов. Для этого достаточно выполнить операцию проекции отношения Студент на атрибут Год_рождения: Год_рождения(Студент). Результатом операции будет новое отношение с одним атрибутом и тремя кортежами.

Год_рождения(Студент)

Год_рождения

1978

1979

1975

Операцию проекции можно выполнять и для нескольких атрибутов. Например, требуется информация о том, в каких годах поступали студенты и на каких курсах они сейчас учатся. Эту информацию можно получить, выполнив операцию проекции отношения Студент на атрибуты Год_поступления и Курс_обучения: Год_поступления, Курс_обучения(Студент). Результатом операции будет отношение с двумя атрибутами и двумя кортежами. (Последний кортеж этого отношения полностью совпадал с предпоследним кортежем, и поэтому был удален.)

Год_поступления, Курс_обучения(Студент)

Год_поступления

Курс_обучения

1994

5

1995

4

Селекция

Пусть r отношение со схемой R, A – атрибут, принадлежащий схеме R, a – значение из домена атрибута A (a dom(A)). Результатом выполнения операции селекции A=a(r) является новое отношение с той же схемой, которое представляет собой подмножество кортежей отношения r, каждый из которых имеет значение a на атрибуте A:

A=a(r) = { t r | t(A)=a }.

Операция селекции – это операция выбора только тех кортежей, которые имеют заданное значение на заданном атрибуте. Пример: найдем тех студентов, которые учатся на 4 курсе. Для этого необходимо выполнить операцию селекции для отношения Студент, при этом условием отбора будет: Курс_обучения = 4: Курс_обучения=4 (Студент). В результате получим новое отношение с двумя кортежами.

Курс_обучения=4 (Студент)

Фамилия

Год_рож-дения

Год_пос-тупления

Номер_ билета

Курс_ обучения

Стипендия

Иванов

1979

1995

122453

4

0.00

Соколов

1975

1995

122454

4

90.00

В условии отбора операции селекции кроме сравнения на равенство можно использовать и другие операции сравнения. Например, если требуется найти всех студентов, родившихся не ранее 1979 года, то в качестве условия можно записать Год_рождения>1978, тогда будут выбраны кортежи, соответствующие студентам с годом рождения 1979, 1980, 1981 и т. д.

Также можно составить и более сложное условие с использованием логических операций and, or, not для одного или нескольких атрибутов. Например, (Год_рождения > 1978)and(Год_рождения <= 1980)and(Стипендия = 100.50).

Соединение

Эта операция предназначена для соединения двух отношений с разными схемами. Пусть r отношение со схемой R, s отношение со схемой S, T – множество атрибутов, входящих и в схему R, и в схему S (T=R S ). Результатом выполнения операции соединения r(R)  s(S) является новое отношение, схема которого состоит из всех атрибутов схемы R и всех атрибутов схемы S, при этом одинаковые атрибуты не дублируются. Каждый кортеж этого отношения является комбинацией кортежа из отношения r и кортежа из отношения s с равными значениями атрибутов, входящих во множество T:

r(R)  s(S) = { t RS | tr r, ts s, tr=t(R), ts=t(S), tr (R S) = ts(R S)}.

Для примера рассмотрим отношение Материальная помощь с атрибутами Курс_обучения и Сумма.

Материальная помощь

Курс_обучения

Сумма

1

100.00

2

120.00

4

140.00

5

130.00

Требуется для каждого студента определить сумму материальной помощи. Для этого выполним соединение двух отношений Студент и Материальная помощь. Общим атрибутом, входящим и в схему отношения Студент, и в схему отношения Материальная помощь, является атрибут Курс_обучения. По этому атрибуту и будет выполнено соединение. Новое отношение, которое получится в результате операции соединения, будет иметь в своей схеме семь атрибутов и три кортежа.

Студент  Материальная помощь

Фамилия

Год_рож-дения

Год_пос-тупления

Номер_ билета

Курс_ обучения

Сти-пендия

Сумма

Петров

1978

1994

123456

5

100.00

130.00

Иванов

1979

1995

122453

4

0.00

140.00

Соколов

1975

1995

122454

4

90.00

140.00

Если бы отношение Материальная помощь состояло из следующих кортежей:

Материальная помощь

Курс_обучения

Сумма

4

100.00

4

120.00

,

т. е. помощь выдается только четвертому курсу и начисления производятся дважды с разными суммами, то в результате операции соединения получилось бы отношение с четырьмя кортежами. Первый и второй кортежи отношения Студент образовали бы по два кортежа, а третий кортеж ни одного, так как значение атрибута Курс_обучения этого кортежа не равно ни одному значению атрибута Курс_обучения отношения Материальная помощь.

Студент  Материальная помощь

Фамилия

Год_рож-дения

Год_пос-тупления

Номер_ билета

Курс_ обучения

Сти-пендия

Сумма

Иванов

1979

1995

122453

4

0.00

100.00

Иванов

1979

1995

122453

4

0.00

120.00

Соколов

1975

1995

122454

4

90.00

100.00

Соколов

1975

1995

122454

4

90.00

120.00

Если бы отношение Материальная помощь состояло из следующих кортежей: