Главная
Статьи





07.11.2022


07.11.2022


07.11.2022


06.11.2022


06.11.2022






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

04.07.2022

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

Определение

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

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

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

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

    Пример

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

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

    Атомарность

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

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

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

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

    Оригинальный текст (англ.)[показатьскрыть] A relation whose domains are all simple can be represented in storage by a two-dimensional column-homogeneous array.
    • для облегчения передачи данных в гетерогенных системах

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

    Оригинальный текст (англ.)[показатьскрыть] The simplicity of the array representation which becomes feasible when all relations are cast in normal form is not only an advantage for storage purposes but also for communication of bulk data between systems which use widely different representations of the data.