
- •Содержание
- •Список сокращений
- •Введение
- •Основные понятия теории баз данных
- •Понятие системы баз данных
- •Базы данных и их назначение
- •Данные и модели данных
- •Типы систем баз данных
- •Архитектура системы баз данных
- •Уровни архитектуры
- •Система управления базами данных
- •Система управления передачей данных
- •Архитектура «клиент-сервер»
- •Утилиты
- •Распределенная обработка
- •Семантическое моделирование
- •Общий подход
- •Модель «сущность/связь»
- •Введение в реляционные базы данных
- •Реляционная модель
- •Отношения и переменные-отношения
- •Оптимизация
- •Каталог
- •Базовые переменные отношения и представления
- •Транзакции
- •Введение в язык sql
- •Обзор языка sql
- •Каталог в sql
- •Представления
- •Транзакции в sql
- •Взаимодействие приложений и субд
- •Домены, отношения и базовые переменные-отношения
- •Значения отношений
- •Средства sql
- •Реляционная алгебра
- •Введение в реляционную алгебру
- •Реляционная замкнутость
- •Синтаксис
- •Семантика
- •Примеры
- •Назначение реляционной алгебры
- •Реляционное исчисление
- •Введение в реляционное исчисление
- •Исчисление кортежей
- •Примеры для исчисления кортежей
- •Средства языка sql
- •Целостность данных
- •Введение в целостность данных
- •Ограничения типа
- •Ограничения атрибута
- •Ограничения переменной-отношения
- •Ограничения баз данных
- •«Золотое правило»
- •Ограничения состояния и ограничения перехода
- •Средства языка sql
- •Функциональные зависимости
- •Введение
- •Основные определения
- •Тривиальные и нетривиальные зависимости
- •Замыкание множества зависимостей
- •Замыкание множества атрибутов
- •Неприводимые множества зависимостей
- •Нормализация: формы 1нф, 2нф, 3нф и нфбк
- •Введение
- •Декомпозиция без потерь и функциональные зависимости
- •Первая, вторая и третья нормальные формы
- •Нормальная форма Бойса-Кодда
- •Нормализация: более высокие нормальные формы
- •Многозначные зависимости и четвертая нормальная форма
- •Зависимости соединения и пятая нормальная форма
- •Общая схема процедуры нормализации
- •Вопросы для самопроверки
- •Дополнительная литература
Общая схема процедуры нормализации
В предыдущих разделах описывалась технология декомпозиции без потерь, предназначенная для использования в процессе проектирования базы данных. Основная суть состоит в следующем. Пусть дана переменная-отношение R, представленная в 1НФ в совокупности с набором определенных для нее функциональных, многозначных зависимостей и зависимостей соединения. Задача состоит в систематическом разбиении исходной переменной-отношения R на набор меньших переменных-отношений, который в некотором смысле будет эквивалентен переменной-отношению R, но с определенной точки зрения будет более предпочтительным. Каждый этап процесса нормализации заключается в разбиении на проекции переменных-отношений, полученных на предыдущем этапе. Весь процесс нормализации можно неформально определить с помощью перечисленных ниже правил.
Переменную-отношение в 1НФ следует разбить на такие проекции, которые позволят исключить все функциональные зависимости, не являющиеся неприводимыми. В результате будет получен набор переменных-отношений в 2НФ.
Полученные переменные-отношения в 2НФ следует разбить на такие проекции, которые позволят исключить все существующие транзитивные ФЗ. В результате будет получен набор переменных-отношений в 3НФ.
Полученные переменные-отношения в 3НФ следует разбить на проекции, позволяющие исключить любые оставшиеся ФЗ, в которых детерминанты не являются потенциальными ключами. В результате такого разбиения будет получен набор переменных-отношений в НФБК.
Полученные переменные-отношения в НФБК следует разбить на проекции, позволяющие исключить любые многозначные зависимости, которые не являются функциональными. В результате будет получен набор переменных-отношений в 4НФ.
Полученные переменные-отношения в 4НФ следует разбить на проекции, позволяющие исключить любые зависимости соединения, которые не подразумеваются потенциальными ключами. В результате получаем набор переменных-отношений в 5НФ.
Процесс разбиения на проекции на каждом этапе должен быть выполнен без потерь и с сохранением зависимостей. Общее назначение процесса нормализации заключается в следующем:
исключение некоторых типов избыточности;
устранение некоторых аномалий обновления;
разработка проекта БД, который является достаточно «хорошим» представлением реального мира, интуитивно понятен и может служить хорошей основой для последующего расширения;
упрощение процедуры описания необходимых ограничений целостности.
Зависимости и нормализация являются чисто семантическими понятиями, т.е. связаны со смыслом данных, тогда как реляционная алгебра и реляционное исчисление, а также построенные на их основе языки наподобие SQL, наоборот, имеют дело со значениями данных и не требуют выполнения нормализации выше первого уровня. Рекомендации по выполнению дальнейшей нормализации должны рассматриваться, прежде всего, как некая упорядоченность, позволяющая разработчику БД (и, следовательно, ее пользователю) зафиксировать некую часть, пусть даже небольшую, семантики реального мира в простой и понятной форме.