
- •Проектирование базы данных Учебное пособие Введение
- •1. Этапы проектирования базы данных
- •2. Модель предметной области
- •2.1. Объекты и классы объектов
- •2.2. Связи между классами объектов
- •2.3. Типы связей в предметной области
- •2.3.1. Характеристика однозначности для бинарных связей
- •2.3.2. Характеристика полноты связи
- •3. Реляционная модель данных
- •3.1. Структура
- •Соревнования
- •3.2. Операции
- •3.2.1. Операции обновления отношений
- •3.2.2. Операции над множествами
- •3.2.3. Операции реляционной алгебры
- •Материальная помощь
- •Студент Материальная помощь
- •Дисциплины
- •ЗачетДисциплины
- •3.3. Ограничения целостности
- •3.4. Нормализация отношений
- •3.4.1. Аномалии схемы отношения
- •3.4.2. Функциональные зависимости
- •3.4.3. Нормальные формы
- •3.4.4. Многозначные зависимости
- •3.4.5. Свойства декомпозиции
- •3.5. Построение реляционной модели данных
- •4. Физическая модель данных
- •5. Пример проектирования базы данных
- •Список использованной литературы
- •Оглавление
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 |
Если бы отношение Материальная помощь состояло из следующих кортежей: