Нормализация данных в контексте баз данных — это процесс организации данных для снижения избыточности и улучшения целостности данных. Достигается путем деления больших таблиц на более мелкие и связывания их отношений.
Основная цель:
Процесс нормализации основывается на принципах нормальных форм (НФ). Наиболее распространенные:
Пример:
Исходная таблица "Заказы_Товары":
| ID Заказа | Дата Заказа | ID Товара | Название Товара | Цена Товара | Количество | Имя Клиента | Адрес Клиента |
|---|---|---|---|---|---|---|---|
| 1 | 2023-10-27 | 101 | Телефон | 500 | 1 | Иван Петров | Ул. Пушкина, 10 |
| 1 | 2023-10-27 | 102 | Наушники | 100 | 2 | Иван Петров | Ул. Пушкина, 10 |
| 2 | 2023-10-27 | 101 | Телефон | 500 | 1 | Мария Иванова | Ул. Лермонтова, 5 |
После нормализации (до 3НФ):
Таблица "Заказы":
| ID Заказа | Дата Заказа | ID Клиента |
|---|---|---|
| 1 | 2023-10-27 | 1 |
| 2 | 2023-10-27 | 2 |
Таблица "Позиции Заказа":
| ID Позиции | ID Заказа | ID Товара | Количество |
|---|---|---|---|
| 1 | 1 | 101 | 1 |
| 2 | 1 | 102 | 2 |
| 3 | 2 | 101 | 1 |
Таблица "Товары":
| ID Товара | Название Товара | Цена Товара |
|---|---|---|
| 101 | Телефон | 500 |
| 102 | Наушники | 100 |
Таблица "Клиенты":
| ID Клиента | Имя Клиента | Адрес Клиента |
|---|---|---|
| 1 | Иван Петров | Ул. Пушкина, 10 |
| 2 | Мария Иванова | Ул. Лермонтова, 5 |
Однако, чрезмерная нормализация может привести к увеличению количества соединений (JOIN) при выполнении запросов, что может снизить производительность. Поэтому при проектировании базы данных часто ищут баланс между степенью нормализации и производительностью. Денормализация — это процесс намеренного нарушения нормальных форм для улучшения производительности, обычно за счет добавления избыточности.