Проектирование при помощи нормализации

Немного отвлечемся от вопросов построения моделей и обсудим еще один способ проектирования структуры базы данных. Этот способ можно считать наиболее формальным из существующих, так как он более всего приближен к реляционной модели данных. Собственно, эта близость делает его пригодным для разработки только реляционных баз данных, но учитывая, что даже сегодня реляционные базы данных составляют большинство, владеть им полезно.

Метод основывается на процедуре нормализации – поэтапном преобразовании отношений, входящих в базу данных в соответствии с требованиями нормальных форм. На сегодняшний день выделяют шесть нормальных форм (шестая нормальная форма появилась относительно недавно). Мы вкратце рассмотрим первые пять из них.

Считается, что чем в более высокой нормальной форме находится база данных, тем лучше ее структура. Качество структуры данных – понятие не слишком точное, можно считать, что качественной является структура, позволяющая хранить все необходимые данные, избавленная от аномалий вставки, обновления и удаления, а также позволяющая добиться наивысшей производительности и при наименьшем размере файлов с данными. Вопросы производительности должны рассматриваться для каждой СУБД индивидуально, полнота хранимых данных зависит от способностей аналитика, а про аномалии необходимо сказать чуть подробнее.

Аномалия вставки – ситуация, когда невозможно добавить сведения об одном объекте без добавления одновременно сведений о другом объекте. Поясним на примере. Допустим, у нас имеется таблица с данными о студентах вида Студенты(НомерЗачетнойКнижки, Фамилия, Имя, Отчество, ДатаРождения, ШифрГруппы, НаименованиеГруппы). То есть, данные студентов и групп хранятся вместе. В этом случае мы не сможем добавить студента, который пока не входит в состав какой-либо группы, а также не сможем создать новую группу без того, чтобы добавить в нее хотя бы одного студента. То есть, аномалия вставки возникает, когда в одном отношении хранятся разнородные данные.

Аномалия обновления – ситуация, когда одни и те же данные повторяются неоднократно, и при каждом изменении этих данных мы должны следить, чтобы изменились все экземпляры. В случае, когда по какой-то причине часть экземпляров данных обновилась, а часть нет – мы получаем нарушение целостности данных. Мало того, в такой ситуации достаточно сложно выяснить, где корректные данные, а где – устаревшие.

Можно привести пример с той же таблицей, что и для предыдущей аномалии. Если мы попытаемся изменить название группы, то нам нужно тщательно проверить, что изменение произошло во всех записях о студентах этой группы. Если какая-то запись окажется пропущенной, у группы останется два названия, что нельзя считать нормальным. Очевидно, что аномалия обновления также вызвана тем, что в одном отношении хранятся разнородные данные.

Аномалия удаления – ситуация, при которой при удалении ненужных данных одновременно удаляются нужные. Если воспользоваться все тем же примером со студентами и группами, то мы увидим, что решив удалить сведения о группе, мы также удалим и все данные о студентах, которые в нее входят. И наоборот, если мы удалим данные о последнем студенте в группе, мы также удалим и данные о группе в целом. И эта аномалия также вызвана хранением в одном отношении разнородных данных.

Таким образом, можно упрощенно сказать, что процесс нормализации – это процесс разбиения отношений на более мелкие, целью которого является исключение все трех аномалий. Аномалии исключаются за счет того, что данные о каждой сущности в предметной области хранятся и обрабатываются отдельно и независимо от других.

Такое раздельное хранение данных позволяет также избежать дублирования данных, которое легко увидеть в приведенном примере – данные о группе повторяются столько раз, сколько имеется студентов в этой группе. То есть, размер базы данных после нормализации должен уменьшиться.

Собственно, процесс проектирования базы данных с использованием этого подхода состоит в следующем:

· строится так называемое «универсальное отношение» - отношение, в которое входят все атрибуты, выявленные в предметной области. Такое универсальное отношение будет находиться в первой нормальной форме;

· в данных выявляются так называемые функциональные зависимости, после чего они устраняются при помощи разделения отношений на более мелкие. Таким образом, база данных движется от первой нормальной формы к более высоким нормальным формам.

· после того, как все функциональные зависимости будут устранены, база данных будет в наивысшей возможной нормальной форме (точнее говоря, все отношения, входящие в базу данных, будут находиться в наивысшей возможной нормальной форме).

Как видно из описания процесса, прежде, чем рассматривать нормальные формы, необходимо определить понятие функциональной зависимости. Мы не будем углубляться в дебри формальных определений и ограничимся относительно неформальным.

Предположим, что у нас имеется отношение R, а X и Y – два неперескающихся множества атрибутов этого отношения. Тогда функциональная зависимость – это ситуация, когда каждому сочетанию значений X однозначно соответствует сочетание значений Y.

В качестве небольшого примера подойдет все та же таблица с данными о студентах. Пусть множество X состоит из одного атрибута – шифра группы, а множество Y – из одного же атрибута, наименования группы. Очевидно, что между этими атрибутами присутствует функциональная зависимость, и для двух студентов, у которых совпадают шифры групп, совпадут и наименования групп. В этом случае X (то есть, шифр группы) будет называться детерминантом, а Y (то есть, наименование группы) – зависимой частью.

Для начала рассмотрения нормальных форм нам достаточно приведенного определения.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: