Что такое нормализация? Объясните первые три нормальные формы.
Нормализация — приведение схемы к виду, исключающему избыточность и аномалии вставки, обновления и удаления.
1НФ. Все значения атомарны: никаких списков в одной ячейке, нет повторяющихся групп колонок (phone1, phone2, phone3). У таблицы есть ключ.
2НФ. 1НФ плюс: каждый неключевой атрибут зависит от всего составного ключа, а не от его части. Актуально только при составном ключе. Пример нарушения: в таблице (заказ_id, товар_id, количество, название_товара) название зависит только от товар_id — его нужно вынести.
3НФ. 2НФ плюс: нет транзитивных зависимостей неключевых атрибутов друг от друга. Пример нарушения: в таблице студентов есть группа_id и название_группы — второе зависит от первого, а не от студента.
Что сказать дальше, чтобы отличиться: нормализация уменьшает дублирование, но увеличивает число JOIN-ов. В аналитических хранилищах сознательно денормализуют (схема «звезда»), потому что чтение важнее целостности записи. Знать, когда нормализацию нарушают намеренно, ценнее, чем помнить определения.
- Что такое НФБК?
- Когда денормализация оправдана?