- •Базы данных
- •Лекция 1 Хранение данных Данные, информация
- •Системы хранения данных на основе файлов
- •База данных
- •Требования к субд
- •Администратор бд (абд)
- •Лекция 2 Модели данных Независимость данных
- •Модель, схема
- •Лекция 3 Ранние модели Иерархическая модель
- •Сетевая модель
- •Лекция 4 Пример базы данных, построенной на сетевой модели Постановка задачи
- •Диаграмма
- •Описание на яод
- •Лекция 5 Реляционная модель Принципы
- •Уточнения
- •Лекция 6 Методы хранения данных и доступа к ним
- •Последовательный метод
- •Прямой метод
- •Индексные методы
- •Индексно-последовательный метод
- •Индексно-произвольный метод
- •Инвертированные списки
- •Хеширование
- •Лекция 7 Реляционная алгебра: определения, изменение отношений
- •Изменение отношений во времени.
- •Лекция 8 Операции реляционной алгебры
- •Булевы операции
- •Выбор; свойства выбора
- •Проекция; свойства проекции
- •Лекция 9 Операции реляционной алгебры (продолжение) Соединение
- •Свойства соединения
- •Лекция 10 Операции реляционной алгебры (продолжение)
- •Деление
- •Постоянные отношения. Переименование атрибутов
- •Эквисоединение, естественное и -соединение
- •Реляционная алгебра. Полнота ограниченного множества операторов
- •Операторы расщепления и фактора
- •Лекция 11 Язык структурных запросов sql
- •Начальные понятия
- •Стандарт ansi
- •Типы данных
- •Интерактивный и встроенный sql
- •Синтаксис
- •Подразделы sql
- •Простейшие действия
- •Функции агрегирования
- •Группировка
- •Возможности форматирования
- •Лекция 12 Язык структурных запросов sql (продолжение) Соединение
- •Вложенные запросы
- •Связанные запросы
- •Предикаты, определенные на подзапросах
- •Объединение
- •Изменение базы данных
- •Лекция 13 Понятие о нормальных формах
- •1 Нормальная форма (1нф)
- •2 Нормальная форма (2нф)
- •3 Нормальная форма (3нф)
- •Нормальная форма Бойса-Кодда (нфбк)
- •4 Нормальная форма (4нф)
- •5 Нормальная форма (5нф) – проекция/соединение
- •Лекция 13 Проектирование данных Процессы проектирования
- •Концептуальное проектирование
- •Логическое проектирование
- •Средства создания модели
- •Лекция 14 Функциональные зависимости
- •Аксиомы вывода
- •Ориентированный ациклический граф вывода
- •Определение реляционной базы данных
- •Представление множества функциональных зависимостей
- •Лекция 15 Покрытия функциональных зависимостей
- •Лемма об эквивалентности фз
- •Неизбыточные покрытия
- •Посторонние атрибуты
- •Канонические покрытия
- •Структура неизбыточных покрытий
- •Оптимальные покрытия
- •3 Нормальная форма
- •Нормализация через декомпозицию и посредством синтеза
- •Нормальная форма Бойса-Кодда
- •Литература
Эквисоединение, естественное и -соединение
Мы увидели, что отношения можно соединять по одноимённым атрибутам. Чтобы соединить отношения по различным атрибутам с одинаковыми доменами, требуется выполнить две операции: переименование и соединение. Подобные соединения с переименованиями встречаются очень часто, поэтому эту пару операций разумно представить одной.
Определение. Пусть r(R), s(S) – отношения, Ai R , Bi S , dom(Ai) = dom(Bi), 1 i n (Ai и Bi могут быть одинаковыми). Эквисоединением r и s по A1, A2,…,Am и B1, B2,…, Bm называется отношение q(RS) = {t | tr r, tss, t(R) = tr, t(S) = ts, t(Ai) = t(Bi)}.
В дальнейшем операцию эквисоединения отношений r и s по A1, A2,…,Am и B1, B2,…, Bm будем обозначать так:
r [A1 = B1, A2 = B2,…, Am = Bm] s.
Пример
З
приписка
(пилот аэропорт)
Алексеев
Норильск
Борисов
Казань
Воронин
Казань
Грушин
Москва
Дорофеев
Омск
Егоров
Чебоксары
маршрут
(рейс пункт
отправления пункт назначения)
84
Чебоксары
Норильск
109
Норильск
Омск
117
Казань
Москва
213
Норильск
Москва
214
Москва
Норильск
К
маршрут [пункт
отправления = аэропорт]
приписка =
= назначение
(рейс
пункт
отправления
пункт
назначения
пилот
аэропорт)
84
Чебоксары
Норильск
Егоров
Чебоксары
109
Норильск
Омск
Алексеев
Норильск
117
Казань
Москва
Борисов
Казань
117
Казань
Москва
Воронин
Казань
213
Норильск
Москва
Алексеев
Норильск
214
Москва
Норильск
Грушин
Москва
Уточним определение. Не исключается существования A такого, что (A R) & (A S). Потребуем, чтобы в эквисоединении все атрибуты различались по именам, то есть, чтобы RS = . Это не сильное ограничение, так как путем переименования атрибутов в s и r можно добиться пустого пересечения их схем.
Замечание. Если в эквисоединении нет сравнений, то оно совпадает с декартовым произведением: r [ ] s = r s.
Соединение, определённое ранее, иногда называют естественным.
Утверждение. Эквисоединение может быть выражено через переименование и естественное соединение.
Естественное соединение также может быть выражено через эквисоединение. Например, для отношений r(A, B, C), s(B, C, D), атрибутов B и C с dom(B) = dom(B), dom(C) = dom(C): r s = (r [B = B, C = C] B, CB, C (s) ).
До сих пор при сравнении значений доменов мы пользовались лишь равенством, но их можно сравнивать, используя и неравенства. В общем случае вводится – множество символов бинарных операций над парами доменов.
Определение. Если знак сравнения , а A и B – атрибуты, то говорят, что A -сравним с B, если – бинарное отношение в dom(A) dom(B).
Определение. Атрибут A -сравним, если он -сравним сам с собой.
Расширим оператор выбора, используя понятие -сравнимости. Пусть r – отношение со схемой R, атрибут A R, a dom(A) – константа, , A -сравним. Тогда расширенный оператор выбора Aa(r) = {t r | t(A) a}. Аналогично этот оператор определяется для случая сравнения между атрибутами, с учетом того, что B R, dom(B)=dom(A): AB = {t r | t(A)t(B)}.
Пример
О
время
(рейс время
вылета время прибытия)
84
15:00
17:30
+
109
11:40
12:00
*
117
22:00
00:30
*
+
213
07:00
08:00
*
214
14:00
16:00
+
s = время прибытия 12.00 (время)
q = время вылета << время прибытия (время)
Конец примера
Эквисоединение – это расширенное соединение для сравнения разных столбцов на равенство. Можно не ограничиваться равенством, а воспользоваться любой операцией .
Определение. Пусть r(R) и s(S) – отношения, для которых RS = , и пусть AR и BS -сравнимы для . Тогда -соединением называется отношение q(RS) = {t | trr, tss, t(R) = tr, t(S) = ts, tr(A)ts(B)}, которое обозначается q(RS) = r [AB] s.
П
время_ab
(рейс вылет прилёт)
60
9:40
11:45
91
12:50
14:47
112
16:05
18:15
306
20:30
22:25
420
21:15
23:11
время_bc
(рейс вылет прилёт)
11
8:30
9:52
60
12:25
13:43
156
16:20
17:40
158
19:10
20:35
В приведенных отношениях заданы времена вылета и прилета самолетов, совершающих рейсы соответственно из пункта a в пункт b и из пункта b в пункт c. Требуется узнать, какие рейсы могут проходить транзитом из города a в c через b.
транзит_ac = время_ab [прилёт < вылет] N, прилёт, вылетN, прилёт, вылет(время_bc) =
=
транзит_ac
(N
вылет
прилёт
N
вылет
прилёт)
60
9.40
11.45
60
12.25
13.43
60
9.40
11.45
156
16.20
17.40
60
9.40
11.45
158
19.10
20.35
91
12.50
14.47
156
16.20
17.40
91
12.50
14.47
158
19.10
20.35
112
16.05
18.15
158
19.10
20.35
Конец примера