PRO

Что такое нормализация? Какие нормальные формы знаете?

Нормализация — это процесс проектирования структуры таблиц, который уменьшает дублирование данных и аномалии обновления. На практике чаще всего используют первые три нормальные формы: 1NF, 2NF и 3NF.
Подробный ответ

Что такое нормализация

Нормализация — это набор правил по разбиению данных на таблицы и определению связей между ними так, чтобы:

  • уменьшить дублирование информации;

  • избежать аномалий при вставке, обновлении и удалении (когда изменение в одном месте требует правок в десятке других строк);

  • сделать структуру данных более предсказуемой и устойчивой.

Результат нормализации — набор связанных таблиц в «нормальных формах».

Первая нормальная форма (1NF)

  • в каждой ячейке — одно атомарное значение, а не список или вложенная таблица;

  • у таблицы есть первичный ключ PRIMARY KEY, который уникально определяет строку.

Пример нарушения 1NF: столбец phones, в котором хранится строка вида "+7..., +1..., +49..." сразу с несколькими телефонами вместо отдельной таблицы user_phones.

Вторая нормальная форма (2NF)

Таблица в 2NF:

  • уже находится в 1NF;

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

Если часть данных зависит только от части составного ключа, её выносят в отдельную таблицу.

Третья нормальная форма (3NF)

Таблица в 3NF:

  • уже в 2NF;

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

Пример: если в таблице orders хранится и customer_id, и customer_address, то адрес фактически зависит от клиента, а не от заказа — его стоит вынести в таблицу customers.

Как ответить на собеседовании

Нормализация — это процесс разбиения данных на таблицы и определения ключей/связей, чтобы убрать дублирование и аномалии обновления. На практике чаще всего говорят о 1NF, 2NF и 3NF. Для уровня junior достаточно уметь объяснить их интуитивно на простых примерах (телефоны пользователя, адрес клиента и т.п.).

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге