Первая нормальная форма

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Первая нормальная форма (1NF) — базовая нормальная форма отношения в реляционной модели данных.

Определение[править | править исходный текст]

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

В реляционной модели отношение всегда находится в первой нормальной форме по определению понятия отношение.

Что же касается различных таблиц, то они могут не быть правильными представлениями отношений и, соответственно, могут не находиться в 1NF. В соответствии с определением К. Дж. Дейта для такого случая, таблица нормализована (эквивалентно — находится в первой нормальной форме) тогда и только тогда, когда она является прямым и верным представлением некоторого отношения. Конкретнее, рассматриваемая таблица должна удовлетворять следующим пяти условиям:

  1. Нет упорядочивания строк сверху-вниз (другими словами, порядок строк не несет в себе никакой информации).
  2. Нет упорядочивания столбцов слева-направо (другими словами, порядок столбцов не несет в себе никакой информации).
  3. Нет повторяющихся строк.
  4. Каждое пересечение строки и столбца содержит ровно одно значение из соответствующего домена (и больше ничего).
  5. Все столбцы являются обычными[1].

«Обычность» всех столбцов таблицы означает, что в таблице нет «скрытых» компонентов, которые могут быть доступны только в вызове некоторого специального оператора взамен ссылок на имена регулярных столбцов, или которые приводят к побочным эффектам для строк или таблиц при вызове стандартных операторов. Таким образом, например, строки не имеют идентификаторов кроме обычных значений потенциальных ключей (без скрытых «идентификаторов строк» или «идентификаторов объектов»). Они также не имеют скрытых временных меток[1].

Пример[править | править исходный текст]

Исходная ненормализованная (то есть не являющаяся правильным представлением некоторого отношения) таблица:

Сотрудник Номер телефона
Иванов И. И. 283-56-82
390-57-34
Петров П. П. 708-62-34

Таблица, приведённая к 1NF (являющаяся правильным представлением некоторого отношения):

Сотрудник Номер телефона
Иванов И. И. 283-56-82
Иванов И. И. 390-57-34
Петров П. П. 708-62-34

Атомарность атрибутов[править | править исходный текст]

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

Одно и то же значение может быть атомарным или неатомарным в зависимости от смысла этого значения. Например, значение «4286» является

  • атомарным, если его смысл — «пин-код кредитной карты» (при разбиении на части или переупорядочивании смысл теряется)
  • неатомарным, если его смысл — «набор цифр» (при разбиении на части или переупорядочивании смысл не теряется)

Хорошим способом принятия решения о необходимости разбиения атрибута на части является вопрос: «будут ли части атрибута использоваться по отдельности?». Если да, то атрибут следует разделить (но так, чтобы сохранились осмысленные части атрибута). Далее необходимо снова задаться тем же вопросом для новой структуры и так до тех пор, пока не останется атрибутов, допускающих разбиение.

Примеры неатомарного атрибута, часто встречающиеся на практике: составные поля в виде строки идентификаторов, разделённых, скажем, запятыми: 100, 32, 168, 1045.

Исходное назначение 1NF[править | править исходный текст]

Исходное назначение 1NF, которую предложил Э. Ф. Кодд в статье «Реляционная модель данных для больших совместно используемых банков данных»[2] («A Relational Model of Data for Large Shared Data Banks»[3]), вообще не было связано с борьбой с аномалиями или избыточностью. Кодд предложил использовать «простые домены» (simple domains) только для облегчения будущей программной реализации, а именно:

  • для облегчения хранения отношений в виде двумерных массивов

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

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

Примечания[править | править исходный текст]

Литература[править | править исходный текст]