Нормализация
Нормализация — разбивка данных по таблицам так, чтобы каждый факт хранился только в одном месте, без дублирования.
-- ❌ без нормализации: имя города дублируется в каждой строке
| user_id | name | city_name | city_population |
|---------|-------|-----------|------------------|
| 1 | Артур | Москва | 12 000 000 |
| 2 | Борис | Москва | 12 000 000 | ← дублирование
-- ✅ с нормализацией: город вынесен в отдельную таблицу
users: | id | name | city_id |
cities: | id | name | population |
Если у Москвы изменится население — меняешь одну строку в cities, а не каждую строку пользователя из Москвы.
Копнуть глубже
Нормальные формы — ступени правильности структуры:
- 1NF — каждое поле атомарно (не хранить список значений в одной ячейке через запятую);
- 2NF — каждое не-ключевое поле зависит от всего первичного ключа, а не от его части;
- 3NF — поля зависят только от ключа, не друг от друга через посредника.
Главная выгода нормализации — нет аномалий обновления: не нужно искать и менять одно и то же значение в десятках строк, риск рассинхронизации данных исчезает.
Денормализация — иногда осознанно нарушают правила ради скорости чтения: дублируют немного данных, чтобы не делать лишний JOIN на каждый запрос. Это компромисс — выбирают, когда скорость чтения важнее идеальной структуры (часто в аналитических базах).
🎤 Закрыл тему, если можешь объяснить:
• зачем нужна нормализация и какую проблему она решает;
• идею нормальных форм и зачем иногда денормализуют (если дошёл до 2-го слоя).
• идею нормальных форм и зачем иногда денормализуют (если дошёл до 2-го слоя).