Теория нормализации
Лекция 12. Теория нормализации
Переход от инфологического проектирования к даталогическому производится с учетом выбора СУБД. В данном курсе мы изучаем РМД и, следовательно, выбираем реляционную СУБД.
Прежде всего, необходимо построить корректную схему БД, ориентируясь на РМД. Основой анализа корректности схемы являются так называемые функциональные зависимости между атрибутами БД. Некоторые функциональные зависимости атрибутов являются нежелательными из-за побочных явлений и аномалий, которые они могут вызвать.
Обычно различают следующие проблемы:
· избыточность данных;
· аномалии обновления;
· аномалии удаления;
· аномалии ввода.
Рекомендуемые материалы
Избыточность данных характеризуется наличием в кортежах отношений повторяющейся информации. Многократное дублирование данных приводит к неоправданному увеличению занимаемого объема внешней памяти.
Аномалии обновления, прежде всего, связанны с избыточностью данных, что приводит к проблемам при их изменении. При изменении повторяющихся данных придется многократно изменять их значения, однако, если изменения будут внесены не во все кортежи, возникнет несоответствие информации, которое называется аномалией обновления.
Аномалии удаления могут возникать при удалении записей из ненормализованных таблиц и характеризуются вероятностью удаления не всех дублированных кортежей.
Аномалии ввода возникают при добавлении в таблицу новых записей, обычно в поля с ограничениями NOT NULL (не пустые). Кода в отношение на данный момент времени невозможно ввести однозначную информацию.
Для ликвидации нежелательных функциональных зависимостей есть специальный формальный механизм называемый нормализацией. В процессе нормализации происходит устранение избыточности и противоречивости хранимых данных.
Нормальные формы
Теория нормализации основана на концепции нормальных форм. Каждой нормальной форме соответствует набор ограничений. Отношение находится в нормальной форме, ели оно удовлетворяет свойственному данной форме набору ограничений.
В теории реляционных БД обычно выделяется следующая последовательность нормальных форм:
· первая нормальная форма (1НФ);
· вторая нормальная форма (2НФ);
· третья нормальная форма (3НФ);
· нормальная форма Бойса-Кодда (БКНФ);
· четвертая нормальная форма (4НФ);
· пятая нормальная форма, или нормальная форма проекции-соединения (5НФ или ПС/НФ).
Основные свойства нормальных форм:
· каждая следующая нормальная форма, в некотором смысле, улучшает свойства предыдущей;
· при переходе к следующей нормальной форме свойства предыдущих нормальных форм сохраняются.
Определение 1НФ. Отношение находится в первой нормальной форме тогда и только тогда, когда каждый его атрибут содержит атомарные значения и отношение не содержит повторяющихся групп.
Пусть необходимо автоматизировать процесс отпуска товаров со склада по накладной, примерный вид накладной на рисунке 12.1.
Рисунок 12.1 - Примерный вид накладной.
По накладной можно сформировать следующее отношение удовлетворяющее 1НФ (рисунок 12.2):
Рисунок 12.2 - Отношение «Отпуск товаров»
Определение 2НФ. Отношение находится во второй нормальной форме тогда и только тогда, когда оно находится в первой нормальной форме и каждый не ключевой атрибут функционально зависим от атрибутов первичного ключа.
Прежде всего, необходимо определить понятие функциональной зависимости. Функционально зависимым считается атрибут, значение которого однозначно определяется значением другого атрибута, т.е. значение одного атрибута зависит от значения другого. Функциональная зависимость значения атрибута Y от значения атрибута Х обозначается следующим образом:
X®Y.
Необходимо отметить, что атрибут, указываемый в левой части называется детерминантом.
Продолжим рассмотрение описанного выше примера. Для приведения отношения к 2НФ необходимо вначале выделить первичный ключ. Первичный ключ возможно определить из следующих рассуждений. Если бы по одной накладной отпускался бы только один товар, то первичным ключом являлся бы атрибут «Номер накладной», однако по одной накладной отпускается несколько различных товаров, следовательно, первичный ключ должен состоять из двух атрибутов «Номер накладной» и «Товар», только в этом случае будет обеспечено свойство уникальности.
Рассмотрим функциональные зависимости атрибутов от первичного ключа, при этом проще начинать рассмотрение с частей первичного ключа, в данном случае с атрибута «Номер накладной»:
Номер накладной ® Покупатель
Номер накладной ® Дата
Номер накладной ® Город
Номер накладной ® Адрес
Определим функциональные зависимости от атрибута «Товар»:
Товар ® Ед.изм
Товар ® Цена ед.изм
Оставшиеся атрибуты определяются первичным ключом:
Номер накладной, Товар ® Количество
Номер накладной, Товар ® Общая стоимость
В результате мы получили три различные категории, у каждой из которых свой первичный ключ. После проведения вышеуказанного анализа отношения производим его декомпозицию и определяем типы связей (рисунок 12.3)
Рисунок 12.3 - Отношение «Отпуск товаров», находящееся в 2НФ
В результате получаем отношения, все атрибуты которых полностью, функционально зависимы от своих первичных ключей и, следовательно, удовлетворяют условию 2НФ.
Определение 3НФ. Отношение находится в третьей нормальной форме тогда и только тогда, когда оно находится во второй нормальной форме и не содержит транзитивных зависимостей между не ключевыми атрибутами.
Функциональная зависимость атрибутов X и Y отношения называется транзитивной, если существует такой атрибут Z, что имеются функциональные зависимости X® Z и Z ®Y, но отсутствует функциональная зависимость Z ®Х.
В результате анализа отношения «НАКЛАДНАЯ» определяем следующую транзитивную зависимость:
Номер накладной ® Покупатель
Номер накладной ® Город
Номер накладной ® Адрес
Покупатель ® Город
Покупатель ® Адрес
В результате анализа отношения «ОТПУСК ТОВАРОВ», также определяется транзитивная зависимость следующего вида:
Номер накладной, Товар ® Количество
Номер накладной, Товар ® Общая стоимость
Количество ® Общая стоимость
От транзитивной зависимости в отношении «НАКЛАДНАЯ» можно избавиться простой декомпозицией отношения. С атрибутом «Общая стоимость» отношения «ОТПУСК ТОВАРОВ» можно поступить еще проще, отказаться от использования этого атрибута, т.к. общую стоимость можно всегда получить, зная цену единицы товара и какое его количество продано, следовательно, не имеет смысла использовать внешние носители для хранения этих данных. В результате получим следующую схему отношений приведенную к 3НФ (рисунок 12.4).
Рисунок 12.4 - Отношение «Отпуск товаров», находящееся в 3НФ
В большинстве случаев достижение третьей нормальной формы, или даже формы Бойса-Кодда считается достаточным для реальных проектов БД. Четвертая и пятая считаются нормальными формами высших порядков, связанными не с функциональными зависимостями атрибутов, а отражают более тонкие вопросы семантики предметной области и связаны с другими видами зависимостей, поэтому в данном курсе не рассматриваются.
Контрольные вопросы
1. Для чего необходим процесс нормализации?
2. Какие аномалии могут возникать при использовании ненормализованных отношений и почему?
3. Определите процессы синтеза и декомпозиции.
4. Назовите определение 1НФ.
5. Назовите определение 2НФ.
6. Назовите определение 3НФ.
7. Что дает приведение БД к 3НФ?
8. Почему приведение к 3НФ считается достаточным для большинства проектов БД?
Задания для самостоятельной работы
Дана таблица 12.1, которую можно представить в виде отношения представленного на рисунке 12.5, проведите нормализацию отношения.
Таблица 12.1 – Расписание занятий
Преподаватель | День нед. | Пара | Дисциплина | Тип занятий | Группа |
Петров В. И. | ПН | 1 | Теор. выч. проц. | Лекция | 4906 |
ВТ | 1 | Коми, графика | Лаб. раб. | 4907 | |
ВТ | 2 | Комн. графика | Лаб. раб. | 4906 | |
Киров В. А. | ПН | 2 | Теор. информ. | Лекция | 4906 |
ВТ | 3 | Пр-е па C++ | Лаб. раб. | 4907 | |
ВТ | 4 | Пр-е на C++ | Ллб. раб. | 4906 | |
Ссргш А. А. | ПН | 3 | Защита инф. | Лекция | 4944 |
СР | 3 | Пр-е на VB | Лаб. раб. | 4942 | |
ЧТ | 4 | Пр-е на VB | Если Вам понравилась эта лекция, то понравится и эта - 11 - Эндогенные геологические процессы. Лаб. раб. | 4922 |
Рисунок 12.5 – Отношение «Расписание занятий»