1NF, 2NF и 3NF.
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 достаточно уметь объяснить их интуитивно на простых примерах (телефоны пользователя, адрес клиента и т.п.).
Оцени свой прогресс