Нормальные формы (НФ) – это набор правил и рекомендаций для проектирования структуры реляционной базы данных, направленных на минимизацию избыточности данных и предотвращение аномалий при вставке, обновлении и удалении.
Основные нормальные формы:
Первая нормальная форма (1НФ):
Вторая нормальная форма (2НФ):
Третья нормальная форма (3НФ):
Форма Бойса-Кодда (ФБК/BCNF):
X \to Y должна иметь X как суперключ.Четвертая нормальная форма (4НФ):
Пятая нормальная форма (5НФ):
Цели нормализации:
Пример:
Таблица с избыточностью (не в 1НФ):
| ЗаказID | Товар | Цена |
|---|---|---|
| 1 | Ноутбук, Мышь | 1000, 20 |
| 2 | Клавиатура | 50 |
Нормализованная таблица (в 1НФ и выше):
Таблица "Заказы":
| ЗаказID |
|---|
| 1 |
| 2 |
Таблица "Позиции заказа":
| ПозицияID | ЗаказID | Товар | Цена |
|---|---|---|---|
| 1 | 1 | Ноутбук | 1000 |
| 2 | 1 | Мышь | 20 |
| 3 | 2 | Клавиатура | 50 |
Нормализация – важный этап проектирования, но чрезмерная нормализация может привести к увеличению количества соединений при запросах, что может негативно сказаться на производительности. Выбор оптимального уровня нормализации зависит от конкретных требований и компромиссов. Денормализация иногда используется для оптимизации производительности в определенных сценариях, осознанно нарушая правила нормальных форм.