Зачем нужны нормальные формы в базах данных?
Что проверяют
Понимаете ли вы, от каких конкретных проблем защищает нормализация, или помните только определения форм.
Как отвечать
Нормализация убирает дублирование данных и вытекающие из него аномалии:
- аномалия обновления: адрес компании записан в тысяче строк, изменили в девятистах, и данные разъехались;
- аномалия вставки: нельзя завести компанию, пока у неё нет ни одной вакансии, потому что всё хранится в одной таблице;
- аномалия удаления: удалили последнюю вакансию и потеряли сведения о компании.
Формы стоит назвать коротко и по смыслу:
- 1НФ: атомарные значения, никаких списков через запятую в одной ячейке и повторяющихся групп колонок;
- 2НФ: неключевые атрибуты зависят от всего составного ключа, а не от его части;
- 3НФ: неключевые атрибуты не зависят друг от друга (город не должен определяться индексом внутри той же таблицы);
- НФБК: усиление третьей формы для случаев с несколькими возможными ключами.
На практике до третьей формы доводят почти всегда, а дальше смотрят по задаче.
Обязательно скажите про обратную сторону: нормализованная схема требует соединений, а они стоят времени. Поэтому в аналитике и в горячих запросах сознательно денормализуют: хранят счётчики, дублируют часто читаемые поля, строят витрины. Правило простое: сначала нормальная схема, затем осознанные исключения с планом поддержания согласованности, а не наоборот.
Где спотыкаются
Считают нормализацию самоцелью и доводят схему до состояния, где простой список требует шести соединений.
Путают денормализацию с отсутствием проектирования.
Не могут привести пример аномалии, хотя именно ради них правила и придуманы.