Лекция. Нормализация базы данных
Содержание лекции:основные понятия теории нормализации баз данных.
Цель лекции:изучить понятие нормализации базы данных и первую нормальную форму.
Проектирование схемы базы данных может быть выполнено двумя путями:
- путем декомпозиции (разбиения), когда исходное множество отношений, входящих в схему базы данных заменяется другим множеством отношений (число их при этом возрастает), являющихся проекциями исходных отношений;
- путем синтеза, то есть путем компоновки из заданных исходных элементарных зависимостей между объектами предметной области схемы базы данных.
При проектировании реляционной базы данных необходимо решить вопрос о наиболее эффективной структуре данных. Основные цели, которые при этом преследуются: обеспечить быстрый доступ к данным в таблицах; исключить ненужное повторение данных (избыточность), которая может явиться причиной ошибок при вводе и нерационального использования дискового пространства компьютера; обеспечить целостность данных таким образом, чтобы при изменении одних объектов автоматически происходили соответствующие изменения связанных с ними объектов. Корректной является схема базы данных, в которой отсутствуют нежелательные зависимости между атрибутами отношении.
Реляционная база данных - это набор отношений. Но не просто набор, а нормализованный набор отношений. Классическая технология проектирования реляционных баз данных связана с теорией нормализации, основанной на анализе функциональных зависимостей между атрибутами отношений. Понятие функциональной зависимости является фундаментальным в теории нормализации реляционных баз данных. Мы определим его далее, а пока коснемся смысла этого понятия. Функциональные зависимости определяют устойчивые отношения между объектами и их свойствами в рассматриваемой предметной области. Именно поэтому процесс поддержки функциональных зависимостей, характерных для данной предметной области, является базовым для процесса проектирования.
Нормализация – метод создания набора отношений с заданными свойствами на основе требований к данным, установленных в некоторой организации. Процесс приведения реляционных таблиц к стандартному виду называется нормализацией.
В теории реляционных баз данных обычно выделяется следующая последовательность нормальных форм:
- первая нормальная форма (1NF);
- вторая нормальная форма (2NF);
- третья нормальная форма (3NF);
- нормальная форма Бойса— Кодда (BCNF);
- четвертая нормальная форма (4NF);
- пятая нормальная форма, или форма проекции-соединения.
При практическом проектировании баз данных используются первые три нормальные формы.
Процесс проектирования с использованием декомпозиции представляет собой процесс последовательной нормализации схем отношений, при этом каждая последующая итерация соответствует нормальной форме более высокого уровня и обладает лучшими свойствами по сравнению с предыдущей.
Каждой нормальной форме соответствует некоторый определенный набор ограничений, и отношение находится в некоторой нормальной форме, если удовлетворяет свойственному ей набору ограничений.
Основные свойства нормальных форм:
- каждая следующая нормальная форма в некотором смысле улучшает свойства предыдущей;
- при переходе к следующей нормальной форме свойства предыдущих нормальных форм сохраняются.
В основе классического процесса проектирования лежит последовательность переходов от предыдущей нормальной формы к последующей. Однако в процессе декомпозиции мы сталкиваемся с проблемой обратимости, то есть возможности восстановления исходной схемы. Таким образом, декомпозиция должна сохранять эквивалентность схем базы данных при замене одной схемы па другую. Схемы базы данных называются эквивалентными, если содержание исходной базы данных может быть получено путем естественного соединения отношений, входящих в результирующую схему, и при этом не появляется новых кортежей в исходной базе данных. При выполнении эквивалентных преобразований сохраняется множество исходных фундаментальных функциональных зависимостей между атрибутами отношений.
Функциональные зависимости определяют не текущее состояние базы данных, а все возможные ее состояния, то есть они отражают те связи между атрибутами, которые присущи реальному объекту, который моделируется с помощью базы данных. Поэтому определить функциональные зависимости но текущему состоянию базы данных можно только в том случае, если экземпляр базы данных содержит абсолютно полную информацию (то есть никаких добавлений и модификации базы данных не предполагается). В реальной жизни это требование невыполнимо, поэтому набор функциональных зависимостей задает разработчик, системный аналитик, исходя из глубокого системного анализа предметной области.
Из-за небрежного проектирования базы данных появляется избыточностьданных (повторение), которая приводит не только к потере лишнего места; она может вызвать нарушение целостности, то есть привести к пртиворечивости данных в базе данных. Несоотвествия между данными (противоречивость) называются аномалиями. Существут три вида аномалий:
- аномалия обновления–противоречивость данных, вызванная их избыточностью и их частичным обновлением;
- аномалия удаления–непреднамеренная потеря данных, вызванная удалением других данных;
-аномалия ввода – невозможность ввести данные в таблицу, вызванная отсутствием других данных.
Очевидно, что аномалии обновления, удаления и ввода нежелательны. Чтобы свести к минимуму проблемы, возникающие из-за аномалий, используется формальный метод, называемый разбиением. Разбиение–процесс разделения таблиц на несколько таблиц в целях избавления от аномалий и поддержания целостности данных. Для этого используются нормальные формы или правила структурирования таблиц.
Реляционная таблица находится в первой нормальной форме (1НФ), если никакое значение атрибута не является множеством значений или повторяющейся группой. Иногда говорят, что атрибуты таблицы, которая находится в 1НФ, являются скалярными величинами. То есть отношение находится в первой нормальной форме тогда и только тогда, когда на пересечении каждого столбца и каждой строки находятся только элементарные значения атрибутов. В некотором смысле это определение избыточно, потому что собственно оно определяет само отношение в теории реляционных баз данных. Однако, в силу исторически сложившихся обстоятельств и для преемственности такое определение первой нормальной формы существует. Определение Кодда реляционной таблицы содержит условие, согласно которому реляционная таблица должна удовлетворять первой нормальной форме. То есть в дальнейшем полагаем, что все рассматриваемые реляционные схемы находятся в 1НФ.
Не всегда легко определить, является ли атрибут скалярным. Например, дата состоит из трех различных компонентов: дня, месяца и года. Дату можно хранить как три различных атрибута или как единое целое. Выбор зависит от особенностей моделируемой предметной области. Если дата используется как отдельная величина, то она скалярная. Но если система работает с отдельными составляющими даты, лучше хранить ее в качестве набора из трех различных атрибутов. Аналогично можно по-разному моделировать имена: атрибут «Имя» может содержать полное имя (ФИО) элемента, а можно каждую составляющую часть отнести к разным атрибутам; также и с адресом: полный адрес или нет.
Таблица находится в первой нормальной форме, если удовлетворяет следующими требованиям:
1) таблица не имеет повторяющихся записей;
2) в таблице должны отсутствовать повторяющиеся группы полей;
3) строки должны быть не упорядочены;
4) столбцы должны быть не упорядочены.