Проектирование реляционных баз данных с использованием нормализации

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

· Категорная целостность.

· Целостность на уровне ссылок.

· Функциональные зависимости.

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

Категорная целостность.Строки реляционной таблицы представляют в базе данных элементы конкретных объектов реального мира или категорий (как мы будем называть их здесь, в соответствии с реляционной терминоло­гией). Ключ реляционной таблицы однозначно определяет каждую строку и, следовательно, каждый элемент категорий. Таким образом, если пользователи хотят извлекать данные конкретной строки или манипулировать ими, они должны знать значение ключа этой строки. Отсюда следует, что мы не хотим, чтобы элемент записывался в базу данных до тех пор, пока значения его ключевых атрибутов не будут полностью определены.

Никакой ключевой атрибут любой строки реляционной таблицы не может иметь пустого значения.

Целостность на уровне ссылок.При построении реляционных таблиц для связывания строк одной таблицы со строками другой таблицы исполь­зуются внешние ключи. База данных, в которой все непустые внешние ключи ссылаются на текущие значения ключей другой реляционной таблицы, обладает целостностью на уровне ссылок. Таким образом, мы получили правило целостности на уровне ссылок:

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

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

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

Первая нормальная форма.Реляционная таблица находится в первой нормальной форме (1.НФ), если значения в таблице являются атомарными для каждого атрибута таб­лицы. Под этим мы просто подразумеваем, что никакое значение атрибута не может быть множеством значений или, как иногда говорят, повторяющейся группой. Определение Кодда реляционной таблицы содержит условие, согласно которому реляционная таблица должна удовлетворять первой нормальной форме. Таким образом, впредь предполагается, что все рас­сматриваемые реляционные схемы находятся в 1НФ.

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

Функциональные зависимости.Функциональные зависимости (ФЗ) позволяют накладывать дополнительные ограничения на реляционную схему. Основная идея состоит в том, что значение одного атрибута в кортеже однозначно опреде­ляет значение другого атрибута. Пример: ФЗ: WORKER-ID NАМЕ

ФЗ: WORKER-ID SKILL-TYPE

Обозначение читается «функционально определяет».

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

Вторая нормальная форма.Вторая и третья нормальные формы касаются отношений между ключе­выми и неключевыми атрибутами. Реляционная таблица находится во второй нормальной форме (2НФ), если никакие неключевые атрибуты не яв­ляются функционально зависимыми лишь от части ключа. Таким образом 2НФ может оказаться нарушена только в том случае, когда ключ составной, то есть ключом является набор из нескольких атрибутов.

Третья нормальная форма.Реляционная таблица имеет третью нормальную форму (ЗНФ), если для любой ФЗ: X У X является ключом. Из определе­ния следует, что любая таблица, удовлетворяющая ЗНФ, также удовлетво­ряет и 2НФ. Однако обратное неверно.

Третья нормальная форма (ЗНФ).Любой детерминант является ключом.

Чем плохи таблицы, не удовлетворяющие ЗНФ? Вызванные ими про­блемы схожи с проблемами для таблиц, нарушающих 2НФ:

1. Это избыточные данные, занимающие лишнее место.

2. Таблица подвержена аномалиям обновления и удаления.

3. Это аномалия ввода.

Если таблица удовлетворяет ЗНФ, то можно быть уверенным, что она удовлетворяет и 2НФ. Но как преобразовать реляционную схему, нарушающую ЗНФ, в набор таблиц, удовлетворяющих ЗНФ? Самый простой метод – разбиение. Создается новая таблица (R1), путем удаления из нее всех атрибутов, стоящих в правой части ФЗ, нарушаю­щих критерий ЗНФ. Создается новая таблица (R2), состоящая из атрибутов как из левой, так и из правой частей ФЗ, нарушающих критерий ЗНФ.

Если хотя бы одна из таблиц R1или R2 нарушает ЗНФ, то продолжается процесс разбиения до тех пор, пока все таблицы не будут удовлетворять ЗНФ.

Поскольку каждая таблица по определению удовлетворяет 1НФ, а также поскольку ЗНФ-таблицы всегда удовлетворяют 2НФ, то верна следующая цепочка импликаций:

ЗНФ влечет 2НФ влечет 1НФ

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

Рассмотренная версия третьей нормальной формы часто называется нормальной формой Бойса-Кодда (НФБК). Критерий третьей нормальной формы, ис­пользуемый многими авторами, логически несколько слабее критерия НФБК. Этот критерий утверждает, что таблица удовлетворяет ЗНФ, если в ней нет транзитивных зависимостей. Транзитив­ная зависимость возникает, если неключевой атрибут функционально зави­сит от одного или более неключевых атрибутов. Этот критерий не учитывает следующие два случая:

1. Неключевой атрибут зависит от ключевого атрибута, входящего в составной ключ (критерий нарушения 2НФ).

2. Ключевой атрибут, входящий в составной ключ, зависит от неключевого атрибута.

Нормальная форма Бойса-Кодда (НФБК). Любой детерминант является ключом.

Транзитивная зависимость. Возникает, когда неключевой атрибут функционально зависит от одного или более неключевых атрибутов НФБК учитывает оба эти случая. Таким образом, если таблица удовле­творяет НФБК, то она также удовлетворяет ЗНФ в смысле транзитивных зависимостей и 2НФ.

Четвертая нормальная форма.Первая нормальная форма запрещает таблицам иметь неатомарные, или многозначные, атрибуты. Однако существует множество ситуаций моделирования, требующих многозначных атрибутов. Например, в групповой системе медицинского страхования необходимо отслеживать нескольких людей, на­ходящихся на иждивении каждого работника. В колледже преподаватель факультета занят в нескольких комиссиях и отвечает за преподавание не­скольких предметов. Подобные примеры можно приводить довольно долго.

Таблица имеет четвертую нормальную форму (4НФ), если она имеет ЗНФ и не содержит многозначных зависимостей. Многозначная зависимость (МЗЗ) – условие, обеспечивающее взаимную независимость многозначных атрибутов. Поскольку проблема мно­гозначных зависимостей возникает в связи с многозначными атрибутами, то мы можем решить проблему, поместив каждый многозначный атрибут в свою собственную таблицу вместе с ключом, от которого атрибут зависит.

Другие нормальные формы.Для избавления от некоторых других аномалий были предложены еще несколько нормальных форм.

Пятая нормальная форма. Ограничительные условия ФЗ и МЗЗ свя­заны со второй, третьей и четвертой нормальными формами. Пятая нор­мальная форма (ЗНФ) была предложена для того чтобы исключить анома­лии, связанные с особым типом ограничительных условий, называемых со­вместными зависимостями. Эти зависимости имеют в основном теоретиче­ский интерес и сомнительную практическую ценность. Следовательно, пятая нормальная форма в действительности не имеет практического применения.

Нормальная форма область/ключ. В работе (Fagin, 1981) была предло­жена нормальная форма, основанная на определениях ключей и областей атрибутов. Автор работы показал, что таблица имеет нормальную форму область/ключ (НФОК), если любое ограничительное условие в таблице яв­ляется следствием определений областей и ключей. Это важный результат. Однако не был дан общий метод приведения таблицы к НФОК.

Нормальная форма область/ключ (НФОК).Требует, чтобы любое ограничительное условие следовало из определений областей и ключей