Нормализация Баз Данных
Нормализация баз данных - это пошаговый, обратимый процесс замены исходной схемы другой схемой, в которой таблицы имеют более простую и логичную структуру. Существуют следующие нормальные формы БД:
- 1НФ - первая нормальная форма
- 2НФ - вторая нормальная форма
- 3НФ - третья нормальная форма
- НФБК - нормальная форма Бойса-Кодда
- 4НФ - четвертая нормальная форма
- 5НФ - пятая нормальная форма
1. Первая нормальная форма
Основные критерии:
- Все строки должны быть различными.
- Все элементы внутри ячеек должны быть атомарными (не списками).
Другими словами, элемент является атомарным, если его нельзя разделить на части, которые могут использовать в таблице независимо друг от друга.
| Категория | Товары |
| Книги | Война и мир, Азбука |
| Игрушки | Юла |
Исправить можно так:
| Категория | Товары |
| Книги | Война и мир |
| Книги | Азбука |
| Игрушки | Юла |
2. Вторая нормальная форма
Основные критерии:
- Таблица должна находиться в первой нормальной форме.
- Любое её поле, не входящее в состав первичного ключа, функционально полно зависит от первичного ключа.
Если Ваша таблица приведена к первой нормальной форме и у нее установлен уникальный id для каждой строки, то она находится и во второй нормальной форме.
Значение второго правила можно понять на примере, когда первичный ключ таблицы состоит из нескольких полей.
Например, следующая таблица находится в первой нормальной форме, но не во второй. В этой таблице первичный ключ составляют первые два столбца (Деталь и Склад). Количество функционально полно зависит от них обоих, так как определяется одновременно Деталью и Складом. А вот с ‘Адресом склада’ проблемы. Он зависит только от Склада не зависит от Детали.
| Деталь, pk | Склад, pk | Количество | Адрес склада |
| Экран | Склад 1 | 56 | Клочковская 34 |
| Мышь | Склад 2 | 78 | Пушкинская 75 |
| Клавиатура | Склад 3 | 90 | Коломенская 56 |
Поэтому, говорят, что он зависит функционально не полно от всего первичного ключа и функционально полно от его части (Склад). Это нарушает требования второй нормальной формы. Исправляется это разделением этой таблицы на две другие:
| Склад, pk | Адрес склада |
| Склад 1 | Клочковская 34 |
| Склад 2 | Пушкинская 75 |
| Склад 3 | Коломенская 56 |
| Деталь, pk | Склад, pk | Количество |
| Экран | Склад 1 | 56 |
| Мышь | Склад 2 | 78 |
| Клавиатура | Склад 3 | 90 |
3. Третья нормальная форма
Основные критерии:
- Таблица находится во второй нормальной форме.
- Любой её не ключевой атрибут функционально зависит только от первичного ключа.
Проще говоря, второе правило требует выносить все не ключевые поля, содержимое которых может относиться к нескольким записям таблицы в отдельные таблицы.
Например:
| N табельный, PK | Фамилия | Имя | Отчество | Код должности | Оклад |
| 1 | Федоров | Иван | Иваныч | 1 | 1000 |
| 2 | Бурундуков | Федор | Федорович | 2 | 2000 |
| 3 | Стрелков | Иван | Иваныч | 1 | 1000 |
В этой таблице Оклад зависит не только от N табельный, но и от поля Код должности. Разделим эту таблицу на две другие:
| N табельный, PK | Фамилия | Имя | Отчество | Код должности |
| 1 | Федоров | Иван | Иваныч | 1 |
| 2 | Бурундуков | Федор | Федорович | 2 |
| 3 | Стрелков | Иван | Иваныч | 1 |
| Код должности | Оклад |
| 1 | 1000 |
| 2 | 2000 |
| 1 | 1000 |
Курс 'Java для начинающих' на Udemy
Зарегистрируйтесь или войдите, чтобы иметь возможность оставить комментарий.