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

Материал из Википедии — свободной энциклопедии
(перенаправлено с «1NF»)
Перейти к навигации Перейти к поиску

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

Определение

[править | править код]

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

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

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

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

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

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

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

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

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

Атомарность

[править | править код]

Многие авторы дополняют определение первой нормальной формы требованием атомарности (неделимости) значений[2]. Однако концепция «атомарности» является слишком неясной[1][3]. Например, для многих типов данных (строки, даты, числа с фиксированной точкой и т. д.) значения при необходимости легко могут быть декомпозированы на составляющие элементы с помощью стандартных операций, предоставляемых СУБД. К. Дейт заключает, что «понятие атомарности не имеет абсолютно никакого смысла»[1].

Исторически концепция «атомарности» берёт начало от «простых доменов» (англ. simple domains), предложенных автором реляционной модели данных Э. Ф. Коддом. Цель «нормальной формы», которую предложил Кодд в статье «Реляционная модель данных для больших совместно используемых банков данных»[4], не была связана с каким-либо теоретическим аспектом, например, с борьбой с аномалиями или избыточностью. Кодд предложил использовать «простые домены» только для облегчения будущей программной реализации, а именно:

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

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

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

Примечания

[править | править код]
  1. 1 2 3 4 5 С. J. Date. What First Normal Form Really Means //С. J. Date. Date on database: Writings 2000—2006, Apress, 2006, ISBN 978-1-59059-746-0
  2. Elmasri, Ramez and Navathe, Shamkant B. Fundamentals of Database Systems, Fourth Edition (англ.). — Pearson, 2003. — P. 315. — ISBN 0321204484.: «It states that the domain of an attribute must include only atomic (simple, indivisible) values and that the value of any attribute in a tuple must be a single value from the domain of that attribute.»
  3. Darwen, Hugh. Relation-Valued Attributes; or, Will the Real First Normal Form Please Stand Up? // Relational Database Writings 1989—1991, Addison-Wesley, 1992.
  4. Е. Ф. Кодд. Реляционная модель данных для больших совместно используемых банков данных (перевод М. Р. Когаловского) Архивная копия от 22 ноября 2010 на Wayback Machine
    Codd, E.F. A Relational Model of Data for Large Shared Data Banks (англ.) // Communications of the ACM : journal. — 1970. — Vol. 13, no. 6. — P. 377—387. — doi:10.1145/362384.362685. Архивировано 12 июня 2007 года.

Литература

[править | править код]