Классика баз данных - статьи

Нормальная форма


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

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

Рассмотрим, например, набор отношений, приведенный на рис.3(а). История работы и дети – непростые домены отношения служащий. История зарплаты – непростой домен отношения история работы. На дереве на рис.3(а) показаны именно эти взаимосвязи указанных непростых доменов.

служащий (номер_служащего, имя, дата_рождения, история_работы, дети)

история_работы (дата_приема_на_работу, название, история_зарплаты)

история_зарплаты (дата_назначения_зарплаты,зарплата)

дети (имя_ребенка, год_рождения)

Рисунок 3(a). Ненормализованное множество

служащий' (номер_служащего, имя, дата_рождения)

история_работы' (номер_служащего, дата_приема_на_работу, название)

история_зарплаты' (номер_служащего, дата_приема_на_работу, дата_назначения_зарплаты, зарплата)

дети' (номер_служащего, имя_ребенка, год_рождения)



Рисунок 3(б). Нормализованное множество

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

Результатом нормализации набора отношений, приведенного на рис.3(а), является набор отношений, показанный на рис.3(б).
Первичный Ключ каждого отношения выделен курсивом, чтобы показать, как такие ключи расширяются в процессе нормализации.

Чтобы можно было применить описанную нормализации, ненормализованный набор отношений должен удовлетворять следующим условиям:

  1. Граф взаимосвязей непростых доменов должен являться набором деревьев.

  2. Ни один первичный ключ не должен включает в себя непростые домены.


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

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

  2. В ней отсутствовали бы все зависимости от схемы хэш-адресации.

  3. Она не содержала бы какие-либо индексы или упорядоченные списки.


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

R(g).r.d

где R – имя отношения, g – необязательное имя поколения, r – необязательное имя роли, d – имя домена. Поскольку g необходимо только в случае существования или ожидаемого появления нескольких поколений данного отношения, а r необходимо только, если отношение R имеет два или более доменов с именем d, простая форма R.d часто будет достаточной.


Содержание раздела