
- •Лекция 2 «Реляционная модель данных»
- •Введение
- •2 Алгебраическая точка зрения
- •3 База данных
- •4 Запросы на данные
- •4.1 Стандартные теоретико-множественные операции
- •4.2 Операция декартова произведения
- •4.3 Специальные операции реляционной алгебры
- •4.3.1 Проекция
- •4.3.2 Операция ограничения (селекции)
- •4.3.3 Операция соединения
- •4.3.4 Операция деления
- •5 Ограничения целостности
4 Запросы на данные
При алгебраической точке зрения на реляционную модель данных, запросы на данные представляются формулой специальной реляционной алгебры.
В общем случае алгебра определяется двойкой:
<N, S>
где N – носитель, S – сигнатура.
В качестве носителя в реляционной алгебре выступает множество отношений, в качестве сигнатуры множество операций, состоящее из
Стандартных теоретико-множественных операций;
Операции декартова произведения отношений;
Специальных операций.
Пусть база данных состоит из отношений
R1, R2, … , Rm
Ответ на запрос представляется в виде производного отношения Rω (вычисляемой таблицы), определяемого алгебраическим выражением A над исходными отношениями (таблицами):
Rω=A(R1, R2, … , Rm)
Схема производного отношения Rω определяется правилами определения схемы результата каждой операции.
4.1 Стандартные теоретико-множественные операции
Это бинарные операции объединения, пересечения и разности отношений. Они могут выполняться только над структурно идентичными отношениями. Схемы таких отношений называют соответственными.
Такие отношения характеризуются одинаковым числом атрибутов и соответствующие атрибуты определены на одних и тех же доменах. Например, схемы
R1 (A1, A2, … , Am) и R2 (B1, B2, … , Bm)
соответственны, если атрибуты R1.Ai и R2. Bi (i = 1,m) определены на одном и том же домене, например, Dj.
Рассмотрим эти операции на примерах.
Пусть имеется список студентов досрочно сдававших экзамены:
Таблица Досрочно_сдавали
Nз |
Фио |
Nгр |
Курс |
121 |
Иванов А.И. |
К2-221 |
Физика |
121 |
Иванов А.И. |
К2-221 |
Математика |
121 |
Иванов А.И. |
К2-221 |
Геометрия |
123 |
Петрова Т.В. |
К2-281 |
Математика |
125 |
Крутов И.И. |
К2-223 |
Физика |
125 |
Крутов И.И. |
К2-223 |
Математика |
Кроме того, имеется список студентов, сдававших экзамены в срок:
Таблица Сдавали_в_срок
Nз |
Фио |
Nгр |
Курс |
121 |
Иванов А.И. |
К2-221 |
Физика |
123 |
Петрова Т.В. |
К2-281 |
Математика |
125 |
Крутов И.И. |
К2-223 |
Математика |
127 |
Скоркин О.И. |
К2-221 |
Физика |
127 |
Скоркин О.И. |
К2-221 |
Математика |
129 |
Доренко Е.С. |
К2-221 |
Математика |
Тогда запрос «Кто сдавал экзамены?» можно выразить операцией объединения ():
Сдавали_экзамены(Nз,Фио,Nгр,Курс) =
Досрочно_сдавали(Nз,Фио,Nгр,Курс) Сдавали_в_срок(Nз,Фио,Nгр,Курс)
Таблица Сдавали_экзамены
Nз |
Фио |
Nгр |
Курс |
121 |
Иванов А.И. |
К2-221 |
Физика |
121 |
Иванов А.И. |
К2-221 |
Математика |
121 |
Иванов А.И. |
К2-221 |
Геометрия |
123 |
Петрова Т.В. |
К2-281 |
Математика |
125 |
Крутов И.И. |
К2-223 |
Физика |
125 |
Крутов И.И. |
К2-223 |
Математика |
127 |
Скоркин О.И. |
К2-221 |
Физика |
127 |
Скоркин О.И. |
К2-221 |
Математика |
129 |
Доренко Е.С. |
К2-221 |
Математика |
Запрос «Кто пересдавал экзамены?» можно выразить операцией пересечения (∩):
Пересдавали(Nз,Фио,Nгр,Курс) =
Досрочно_сдавали (Nз,Фио,Nгр,Курс) ∩Сдавали_в_срок(Nз,Фио,Nгр,Курс)
Таблица Пересдавали
Nз |
Фио |
Nгр |
Курс |
121 |
Иванов А.И. |
К2-221 |
Физика |
123 |
Петрова Т.В. |
К2-281 |
Математика |
125 |
Крутов И.И. |
К2-223 |
Математика |
Запрос «Кто сдал досрочно?» можно выразить операцией разности (\):
Досрочно_сдали(Nз,Фио,Nгр,Курс) =
Досрочно_сдавали(Nз,Фио,Nгр,Курс) \ Сдавали_в_срок(Nз,Фио,Nгр,Курс)
Таблица Досрочно_сдали
Nз |
Фио |
Nгр |
Курс |
121 |
Иванов А.И. |
К2-221 |
Математика |
121 |
Иванов А.И. |
К2-221 |
Геометрия |
125 |
Крутов И.И. |
К2-223 |
Физика |