Первая нормальная форма (1NF) базы данных

Приветствую Вас на сайте Info-Comp.ru! Сегодня мы с Вами поговорим о первой нормальной форме базы данных, в частности Вы узнаете, какие требования предъявляются к таблицам, чтобы база данных находилась в первой нормальной форме, и для наглядности мы, конечно же, рассмотрим пример.

Первая нормальная форма (1NF) базы данных

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

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

Требования первой нормальной формы (1NF)

Требование первой нормальной формы (1NF) очень простое и оно заключается в том, чтобы таблицы соответствовали реляционной модели данных и соблюдали определённые реляционные принципы.

Таким образом, чтобы база данных находилась в 1 нормальной форме, необходимо чтобы ее таблицы соблюдали следующие реляционные принципы:

  • В таблице не должно быть дублирующих строк
  • В каждой ячейке таблицы хранится атомарное значение (одно не составное значение)
  • В столбце хранятся данные одного типа
  • Отсутствуют массивы и списки в любом виде

Заметка! Если Вас интересует язык SQL, то рекомендую почитать книгу «SQL код» это самоучитель по языку SQL для начинающих программистов. В ней очень подробно рассмотрены основные конструкции языка.

Пример приведения таблицы к первой нормальной форме

Следующая таблица не находится даже в первой нормальной форме, так как у нас есть дублирующие строки (John Smith), а в некоторых ячейках хранятся списки значений (каждый номер телефона — это одно значение).

Таблица сотрудников в ненормализованном виде.

Сотрудник Контакт
Иванов И.И. 123-456-789, 987-654-321
Сергеев С.С. Рабочий телефон 555-666-777, Домашний телефон 777-888-999
John Smith 123-456-789
John Smith 123-456-789

Чтобы привести эту таблицу к первой нормальной форме, необходимо удалить дублирующие строки, в ячейках хранить один номер телефона, а не список, а тип телефона (домашний или рабочий) вынести в отдельный столбец, так как столбцы хранят структурную информацию.

Таблица сотрудников в первой нормальной форме.

Сотрудник Телефон Тип телефона
Иванов И.И. 123-456-789
Иванов И.И. 987-654-321
Сергеев С.С. 555-666-777 Рабочий телефон
Сергеев С.С. 777-888-999 Домашний телефон
John Smith 123-456-789

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

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

  • Назначение строк – хранить данные
  • Назначение столбцов – хранить структурную информацию
  • Назначение ячеек – хранить атомарное значение

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

Заметка! Как создать таблицу в PostgreSQL с помощью pgAdmin 4.

На основе всего вышеизложенного можно сделать следующий вывод.

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

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

Заметка! Вторая нормальная форма (2NF) базы данных.

На сегодня это все, надеюсь, материал был Вам полезен, пока!

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Комментарии: 8
  1. Оксана

    Почему она стала !й нормальной формой , если в ней так же есть дублирующие строки? (Сергеев С.С.) — «Следующая таблица не находится даже в первой нормальной форме, так как у нас есть дублирующие строки (John Smith), …»??? :roll:

    1. Оксана

      Тоесть, таблица может иметь дублирующие значения в столбце? А в двух, трех ит.д. не может?

  2. Андрей

    Автору большое спасибо за материал, написано очень понятным языком! Только тоже непонятно, почему дублирующие строки остались, но таблица теперь в NF1 :(

    1. Влад

      Таблица в 1NF потому что нет полных дублей.
      Здесь под дублями имеются ввиду абсолютно идентичные строки.
      Например Иванов: хоть и есть 2 записи, но они с разными телефонами.

  3. Ученик

    Разве не корректнее было бы сделать два столбца «Домашний номер» и «Рабочий номер» ? Если нет, то мне не совсем понятно почему :???:

    1. Falcon

      Нет, не корректней. Я, кстати, тоже сперва подумал насчет столбцов «Домашний номер» и «Рабочий номер». Суть вот в чем: номеров у контакта может быть любое множество, например 10. И в вашем варианте каждый раз при попадании в базу контактов с большим числом номеров, чем выделено столбцов, надо будет изменать таблицу — добавлять столбцы. Со всеми вытекающими.

  4. Руслан

    А разве поле сотрудник не должно быть разбито на три: фамилия, имя и отчество? Поле содержит не атомарное значение.

  5. Михаил

    В реальной жизни есть куча полей, которые не атомарны (по вашему определению) например «адрес», да по большому счету любая дата не атомарна — день, месяц, год.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку «Отправить комментарий», я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.