Нормализация — процесс организации данных в базе данных для уменьшения избыточности и улучшения целостности данных. Денормализация — процесс добавления избыточных данных в базу данных для улучшения производительности запросов.
Нормализация:
- Принципы: Устранение повторяющихся групп, зависимостей между несвязанными атрибутами.
- Формы нормализации (основные):
- 1NF (Первая нормальная форма): Атомарные значения в колонках, отсутствие повторяющихся групп.
- 2NF (Вторая нормальная форма): В 1NF + отсутствие частичных зависимостей.
- 3NF (Третья нормальная форма): В 2NF + отсутствие транзитивных зависимостей.
- БКНФ (Нормальная форма Бойса-Кодда): Более строгая версия 3NF.
- Преимущества:
- Уменьшение избыточности данных (экономия места).
- Улучшение согласованности данных.
- Упрощение модификации данных (вставка, обновление, удаление).
- Недостатки:
- Увеличение количества таблиц.
- Необходимость объединения таблиц для получения полной информации (JOIN`ы), что может снизить производительность запросов.
Денормализация:
- Принципы: Сознательное нарушение правил нормализации для ускорения чтения данных.
- Типичные приемы:
- Дублирование данных (например, хранение наименования товара в таблице заказов).
- Объединение таблиц.
- Предварительное вычисление агрегированных значений.
- Преимущества:
- Увеличивает производительность запросов (особенно SELECT).
- Уменьшает количество JOIN`ов.
- Может быть полезна для отчетов и OLAP-систем.
- Недостатки:
- Увеличение избыточности данных (трата места).
- Риск несогласованности данных.
- Усложнение модификации данных (необходимость обновлять данные в нескольких местах).
Выбор между нормализацией и денормализацией зависит от специфики приложения, приоритетов (целостность данных или производительность) и характера запросов. Обычно применяется нормализация для OLTP-систем (онлайн транзакции) и денормализация для OLAP-систем (аналитическая обработка) или в критических по производительности участках OLTP.