Ответ
Нормализация — это процесс организации данных в базе данных с целью уменьшения избыточности и улучшения целостности данных. Основная задача — разбить большие таблицы на более мелкие и четко определенные, установив между ними связи.
Ключевые цели нормализации:
- Устранение избыточности данных: Каждая часть данных хранится только в одном месте.
- Защита от аномалий: Предотвращение проблем при вставке, обновлении или удалении данных (например, удаление клиента приводит к потере информации о его заказах).
- Обеспечение целостности данных: Гарантия того, что данные и их связи логически корректны.
Процесс нормализации следует правилам, называемым нормальными формами (NF). Наиболее часто используются:
- 1NF (Первая нормальная форма): Все атрибуты атомарны (неделимы), нет повторяющихся групп столбцов.
- 2NF (Вторая нормальная форма): Находится в 1NF, и все неключевые атрибуты полностью зависят от первичного ключа.
- 3NF (Третья нормальная форма): Находится в 2NF, и все атрибуты зависят только от первичного ключа, а не от других неключевых атрибутов.
Пример (переход к 3NF):
До нормализации (одна таблица):
Orders(OrderID, CustomerName, CustomerAddress, ProductName, Price, Quantity)
После нормализации (разделение на сущности):
Customers(CustomerID, Name, Address)
Products(ProductID, Name, Price)
Orders(OrderID, CustomerID, ProductID, Quantity)
Плюсы:
- Экономия места на диске.
- Упрощение поддержки и обновления данных.
- Высокая целостность и отсутствие аномалий.
Минусы:
- Увеличение количества
JOIN
-операций в запросах. - Как следствие, возможное снижение производительности на сложных выборках.
Нормализация — это фундаментальный принцип проектирования реляционных БД, но иногда для повышения производительности применяют обратный процесс — денормализацию.