- •Установочный модуль
- •Введение
- •Модуль 1
- •Реляционная алгебра
- •Отсутствующие данные
- •Пустые значения
- •Неопределенные значения
- •Интерпретации
- •Правила вычисления выражений
- •Следствия
- •Проверка условий
- •Реляционные объекты данных
- •Формальные определения
- •Домены и атрибуты
- •Схема отношения
- •Именованное значение атрибута
- •Кортеж
- •Отношение
- •Схема базы данных
- •База данных
- •Операции реляционной алгебры
- •Унарные операции
- •Бинарные операции
- •Варианты операции соединения
- •Производные операции
- •Пример построения выражения реляционной алгебры
- •Понятие базовых и виртуальных отношений
- •Понятие полноты реляционной алгебры
- •Формирование запросов на языке SQL
- •Металингвистические символы
- •Реализация операций реляционной алгебры
- •Пример использования подзапросов
- •Группирующие запросы
- •Упорядочение результатов
- •Вопросы для самоконтроля
- •Упражнения
- •Построение выражений реляционной алгебры
- •Модуль 2
- •Базовые и виртуальные отношения
- •Типы данных
- •Базовые типы данных
- •Типы данных, определяемые пользователем
- •Первичные и кандидатные ключи
- •Создание базовых отношений
- •Индексы
- •Модификация базовых отношений
- •Вставка строк
- •Обновление строк
- •Удаление строк
- •Целостность
- •Декларативная поддержка
- •Пример декларативной поддержки целостности
- •Транзакции и блокировки
- •Триггеры
- •Виртуальные отношения
- •Вопросы для самоконтроля
- •Упражнения
- •Декларативная поддержка целостности
- •Модуль 3
- •Нормальные формы
- •Функциональные зависимости (ФЗ)
- •Правила вывода Армстронга
- •Производные правила вывода
- •Независимость правил Армстронга
- •Полнота системы правил Армстронга
- •Нормальные формы
- •Первая нормальная форма (1NF)
- •Вторая нормальная форма (2NF)
- •Третья нормальная форма (3NF)
- •Нормальная форма Бойса-Кодда (Boyce, Codd; NFBC)
- •Пример построения нормализованных схем отношений
- •Вопросы для самоконтроля
- •Модуль 4
- •Проектирование схем баз данных
- •Уровни логической модели
- •Миграция ключей и виды связей
- •Классификация кластеров
- •Иерархическая рекурсия
- •Абстрактная схема
- •Обобщения
- •Пример реализации иерархической рекурсии
- •Сетевая рекурсия
- •Абстрактная схема
- •Сетевая реализация иерархической рекурсии
- •Обобщения
- •Пример реализации сетевой рекурсии
- •Ассоциация
- •Детализация связей многие-ко-многим
- •Обобщения
- •Пример реализации ассоциации
- •Обобщение
- •Абстрактная схема
- •Пример реализации обобщения
- •Композиция
- •Абстрактная схема
- •Пример реализации композиции
- •Агрегация
- •Абстрактная схема
- •Пример реализации агрегации
- •Унификация атрибутов
- •Вопросы для самоконтроля
- •Упражнения
- •Иерархическая рекурсия
- •Сетевая рекурсия
- •Ассоциация
- •Обобщение
- •Композиция
- •Агрегация
- •Дополнительные главы
- •Технологии баз данных
- •Информационные системы
- •Жизненный цикл ИС
- •СУБД и БД
- •Жизненный цикл БД и средства проектирования
- •Модели данных
- •Иерархическая модель данных
- •Сетевая модель данных
- •Реляционная модель данных
- •Постреляционная модель данных
- •Объектно-ориентированные модели данных
- •XML как модель данных
- •Многомерная модель данных (OLAP)
- •Основные функции СУБД
- •Управление данными во внешней памяти
- •Управление буферами оперативной памяти
- •Управление транзакциями
- •Журнализация и восстановление БД после сбоев
- •Поддержка языков баз данных
- •Типовая организация СУБД
- •Модели взаимодействия с БД
- •Модель с централизованной архитектурой
- •Модель с автономными персональными компьютерами
- •Архитектура «файл-сервер»
- •Архитектура «клиент-сервер»
- •Архитектура «клиент-сервер» трехзвенная
- •Распределенные базы данных
- •Технология тиражирования данных
- •Понятие «фрактал»
- •Геометрические фракталы
- •Алгебраические фракталы
- •Стохастические фракталы
- •Системы итерируемых функций
- •Вопросы для самоконтроля
- •Литература
- •Список иллюстраций
- •Список таблиц
4. Нормальные формы
Все проводимые ниже рассуждения о нормальных формах (как, впрочем, и о проектировании схем баз данных) относятся к системам оперативной обработки транзакций OLTP и базовым отношениям. Для OLAP-систем, как и для виртуальных отношений OLTP-систем, характерной является как раз ненормализованность данных, связанная с избыточной формой их хранения и представления.
4.1. Функциональные зависимости (ФЗ)
Ограничения уникальности, накладываемые объявлениями первичного и кандидатных ключей отношений, являются частным случаем ограничений, связанных с понятием функциональных зависимостей.
Рассмотрим отношение, содержащее данные о результатах конкретной экзаменационной сессии (семестр и учебный год не указаны):
Сессия(№ ЗК, Ф, И, О, МнемоП, Оценка)
Атрибуты № ЗК (номер зачетной книжки) и МнемоП (мнемоническое обозначение предмета) образуют ключ этого отношения (так как в конкретную сессию в одну зачетку по одному предмету
поставить можно лишь не более одной оценки). Однако помимо ограничения уникальности, связанного с этим ключом, на отношение должно быть наложено то условие, что зачетка выдается одному конкретному лицу и, следовательно, в этом отношении кортежи с одинаковым номером зачетки должны содержать одинаковые значения атрибутов Ф, И, О (табл. 4.1). Поэтому, как говорят, атрибуты Ф, И, О функционально зависят от атрибута № ЗК.
Таблица 4.1.: Пример ненормализованного отношения
Сессия |
|
|
|
|
|
№ ЗК |
Ф |
И |
О |
МнемоП |
Оценка |
100 |
Иванова |
Ванесса |
Ивановна |
БД |
5 |
... |
|
|
|
|
|
100 |
Иванова |
Ванесса |
Ивановна |
СК2 |
4 |
Таким образом, функциональная зависимость – это однозначная зависимость, затабулированная в базе данных. Термин «зависимость» не означает, что в данном случае по № ЗК (числу) можно без использования данных, хранимых в отношении, «вычислить» Ф, И, О. Он означает лишь, что одному значению № ЗК нельзя в отношении сопоставить два или более значений Ф, И или О.
Определение. Пусть X и Y – подсхемы схемы отношения S, определяющие над схемой S схему функциональной зависимости X ! Y (читается «X стрелка Y»). Определим ограничение функциональной зависимости invhX ! Y i как утверждение о том, что в отношении со схемой S любые два кортежа, совпадающие в проекции на подсхему X, должны совпадать и в проекции на подсхему
Y :
invhX ! Y ir(S) = 8t1; t2 2 r(t1[X] = t2[X] ) t1[Y ] = t2[Y ]); X; Y 2 S
В этом случае говорят, также, что X функционально определяет Y или что Y функционально зависит от X. В схеме функциональной зависимости X ! Y подсхема X называется левой частью, а Y – правой частью. На схему функциональной зависимости для краткости обычно ссылаются как на функциональную зависимость.
Конец определения.
Введенное понятие ограничения функциональной зависимости относится к ограничению на уровне отношения, так как оно накладывает ограничения на возможные значения различных кортежей одного и того же отношения.
Приведем примеры изображения функциональных зависимостей:
{№ ЗК} ! {Ф, И, О} {№ ЗК, МнемоП} ! {Оценка}
При изображении схемы отношения помимо ограничений уникальности, связанных с объявлениями первичных и кандидатных ключей, будем указывать и ограничения функциональных зависимостей (а также и другие ограничения, если таковые имеются). Для рассматриваемого примера данных об экзаменационной сессии схему отношения с ограничениями следует изобразить следующим образом:
Сессия(№ ЗК, Ф, И, О, МнемоП, Оценка) primary key(№ ЗК, МнемоП)
{№ ЗК} ! {Ф, И, О}
Здесь важно, что объявление (в данном случае первичного) ключа навязывает схеме отношения функциональную зависимость, эквивалентную ограничению уникальности. А именно, рассматриваемую схему отношения с ограничениями мы могли бы представить в эквивалентном виде без объявления (первичного) ключа, заменяя его объявление соответствующим ограничением функциональной зависимости (вида {ключ} ! {остальные атрибуты}):
Сессия(№ ЗК, Ф, И, О, МнемоП, Оценка) {№ ЗК, МнемоП} ! {Ф, И, О, Оценка} {№ ЗК} ! {Ф, И, О}
Действительно, объявляя атрибуты № ЗК, МнемоП (первичным) ключом, мы гарантируем, что в отношении Сессия не могут быть два кортежа с одинаковыми значениями этих атрибутов. Следовательно, им просто невозможно сопоставить два различных набора значений остальных атрибутов Ф, И, О, Оценка.
Таким образом, объявления (первичных и кандидатных) ключей навязывают схеме отношения ограничения уникальности и, как следствие, соответствующие ограничения функциональных зависимостей.
Ограничения функциональных зависимостей могут препятствовать вставке и обновлению кортежей в отношении. При удалении кортежей ограничение функциональной зависимости нарушиться не может.
4.1.1. Правила вывода Армстронга
Если отношение удовлетворяет некоторым определенным функциональным зависимостям, то с помощью формулируемых ниже правил вывода можно получить другие функциональные зависимости,
которым отношение будет автоматически удовлетворять.
Теорема. Справедливы следующие правила, называемые правилами вывода Армстронга (часто называемые аксиомами):
ПВ1. ` X ! X рефлексивность
ПВ2. X ! Y ` X [ Z ! Y пополнение
ПВ3. X ! Y; Y [ W ! Z ` X [ W ! Z псевдотранзитивность
Здесь X, Y , Z, W – произвольные подсхемы схемы отношения S. Символ метаутверждения о выводимости «`» разделяет списки посылок и заключений. Посылки и заключения представлены в сокращенной форме обозначениями схем функциональных зависимостей. В расширенной форме им соответствуют ограничения функциональных зависимостей:
ПВ1. invhX ! Xir(S)
ПВ2. invhX ! Y ir(S) ) invhX [ Z ! Y ir(S)
ПВ3. invhX ! Y ir(S)&invhY [ W ! Zir(S) ) invhX [ W ! Zir(S)
Доказательство правила рефлексивности следует непосредственно из определения ограничения функциональной зависимости при подстановке X вместо Y . Это тавтология.
Доказательство правила пополнения. Пусть кортежи равны на X [ Z. Тогда они равны на X. Согласно посылке, они будут равны и на Y .
Доказательство правила псевдотранзитивности. Пусть кортежи равны на X [W . Тогда они равны и на X, и на W . Согласно посылке 1, они будут равны и на Y . Следовательно, они равны и на X, и на W . Отсюда, согласно посылке 2, они будут равны и на Z.
Конец теоремы.