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

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

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

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


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

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

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

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

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

Заметка! Если Вас интересует язык SQL, рекомендую пройти мой авторский онлайн-курс по основам 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). Описание, требования и пример приведения таблиц до второй нормальной формы мы рассмотрим в следующем материале.

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

Источник Заметки IT специалиста

Поделиться ссылкой:

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.