- •Базы данных
- •Лекция 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 Нормальная форма
- •Нормализация через декомпозицию и посредством синтеза
- •Нормальная форма Бойса-Кодда
- •Литература
Выбор; свойства выбора
Пусть теперь A – это некоторый атрибут отношения r(R) и a – элемент множества значений, которые может принимать отображение t на этом атрибуте. Выберем из отношения r те кортежи, для которых отображение t на A принимает значение a, и результат обозначим через A = a(r). Это унарная операция (она применяется к одному отношению), в результате которой у нас появляется новое отношение r (R).
Определение. Выбором A = a(r) называется отношение r (R) = A = a(r){tr | t(A)=a}.
Пример
Пусть отношение r – расписание рейсов с атрибутами номер (№), пункт отправления (ПО), пункт назначения (ПН), время вылета (ВВ) и время прилета (ВП).
Расписание (№ ПО ПН ВВ ВП)
-
119
Новгород
Чита
11:30
17:30
94
Чита
Керчь
20:50
3:40
117
Баку
Орёл
21:50
23:50
216
Новгород
Москва
10:00
14:00
217
Москва
Киев
16:00
20:00
ПО = Новгород(расписание) (№ ПО ПН ВВ ВП)
-
119
Новгород
Чита
11:30
17:30
216
Новгород
Москва
10:00
14:00
Конец примера
Пусть r и s – отношения со схемой R; A, B, C,… – конечное число атрибутов в R, пусть adom(A), bdom(B), cdom(C),… . Тогда верны следующие утверждения.
Утверждение 8.1. Операторы выбора коммутативны относительно операции композиции (т.е. результат их применения не зависит от последовательности):
A = a B = b(r) A = a(B = b(r)) = B = b(A = a(r)) B = b A = a(r).
Доказательство
A = a(B = b(r)) = A = a({tr | t(B) = b}) =
= { t{tr | t(B) = b}| t (A) = a }=
= { tr | t(A) = a, t(B) = b} =
= { tr | t(B) = b, t(A) = a} =
= { t{tr | t(A) = a}| t (B) = b }=
= B = b({tr | t(A) = a}) = B = b(A = a(r)).
Введём следующее обозначение: A = a B = b A = a, B = b . Положим X = (A, B, C,…), а x = (a, b, c,…), тогда оператор выбора можно обозначить X = x. .
Утверждение 8.2. Операция выбора дистрибутивна относительно бинарных булевых операций:
A = a(rs) = A = a(r) A = a(s), где {, , – }.
Доказательство
A = a(rs) = A = a({t | tr, ts}) =
= {t{t | tr, ts} | t (A) = a} =
= {t | tr, t(A) = a} {t | ts, t(A) = a} =
= A = a({t | tr}) A = a({t | ts}) = A = a(r) A = a(s).
Аналогично доказываются равенства A = a(rs)=A = a(r)A = a(s) и A = a(rs) = = A = a(r) A = a(s).
Замечание. Операции выбора и активного дополнения не перестановочны (не коммутируют). Можно показать, что A = a(r) A = a ( ).