Классические стадии нормализации:
Стадия |
Избыточные аномалии |
|
Ненормализованная (нулевая) форма (UNF)
|
Это состояние перед любой нормализацией. В таблице присутствуют избыточные и сложные значения |
|
Первая нормальная форма (1NF)
|
Разбиваются повторяющиеся и сложные значения; все экземпляры становятся атомарными |
|
Вторая нормальная форма (2NF)
|
Частичные зависимости разделяются на новые таблицы. Все строки функционально зависимы от первичного ключа |
|
Третья нормальная форма (3NF)
|
Транзитивные зависимости разбиваются на новые таблицы. Не ключевые атрибуты зависят от первичного ключа |
|
Нормальная форма Бойса-Кода (BCNF)
|
Транзитивные и частичные функциональные зависимости для всех потенциальных ключей разбиваются на новые таблицы |
|
Четвертая нормальная форма (4NF) |
Удаляются многозначные зависимости |
|
Пятая нормальная форма (5NF) |
Удаляются JOIN-зависимости (зависимости соединения) |
Классификация 1NF-6NF + DKNF
Первая нормальная форма (1NF)Первая нормальная форма является базовым уровнем нормализации и требует, чтобы все атрибуты отношения были атомарными, то есть неделимыми.
Примеры:
- Бизнес: таблица «Сотрудники» с атрибутами «ID сотрудника», «ФИО», «Должность» и «Отдел».
- Математика: таблица «Числа» с атрибутами «ID числа», «Значение».
Пример таблицы в первой нормальной форме (1НФ):
|
Номер заказа |
Дата заказа |
Клиент |
Сумма заказа |
|
1 |
01.01.2023 |
Иван |
1000 |
|
2 |
02.01.2023 |
Мария |
1500 |
|
3 |
03.01.2023 |
Пётр |
2000 |
Пример таблицы с нарушением первой нормальной формы (1НФ):
|
Номер заказа |
Дата заказа |
Клиент |
Сумма заказа |
Товары |
|
1 |
01.01.2023 |
Иван |
1000 |
{ручка, бумага} |
|
2 |
02.01.2023 |
Мария |
1500 |
{карандаш, ластик} |
В этом примере атрибут «Товары» содержит списки, что нарушает принцип 1НФ, так как значения должны быть скалярными.
Вторая нормальная форма (2NF)
Вторая нормальная форма требует, чтобы все неключевые атрибуты полностью зависели от первичного ключа.
Примеры:
· Бизнес: таблица «Заказы» с атрибутами «ID заказа», «ID клиента», «Дата заказа» и «Сумма заказа».
· Математика: таблица «Функции» с атрибутами «ID функции», «Аргумент», «Значение», где «Аргумент» однозначно определяет «Значение».
Пример таблицы в правильном варианте (во 2НФ):
|
Номер заказа |
Клиент |
Товар |
Цена |
|
1 |
Иванов |
стул |
1000 |
|
2 |
Петров |
стол |
2000 |
В этом примере каждый атрибут зависит только от первичного ключа (Номер заказа), и нет составных ключей или функциональных зависимостей, которые можно упростить.
Пример таблицы с нарушением 2НФ:
|
Номер заказа |
Отдел |
Клиент |
Товар |
Цена |
|
1 |
Мебель |
Иванов |
стул |
1000 |
|
2 |
Мебель |
Петров |
стол |
2000 |
|
3 |
Мебель |
Семёнов |
диван |
3000 |
|
4 |
Электроника |
Иванов |
ноутбук |
5000 |
В этом примере первичный ключ — это «Номер заказа». Однако атрибут «Отдел»
не связан функционально только с первичным ключом, а скорее связан с выбором
товара. Это создаёт частичную зависимость, что является нарушением 2НФ.
Пример таблицы в НФБК
|
Номер заказа |
Клиент |
Товар |
Количество |
Дата заказа |
|
1 |
Иванов И. И. |
Книга А |
5 |
01.01.2023 |
|
2 |
Петров П. П. |
Книга Б |
3 |
02.01.2023 |
В этой таблице каждый атрибут зависит только от первичного ключа (Номер заказа), и нет транзитивных зависимостей.
Пример таблицы с нарушением НФБК
|
Номер заказа |
Клиент |
Товар |
Цена |
Общая стоимость |
|
1 |
Иванов И. И. |
Книга А |
100 руб. |
500 руб. |
|
2 |
Петров П. П. |
Книга Б |
150 руб. |
450 руб. |
В этой таблице атрибут «Общая стоимость» зависит не только от первичного
ключа, но и от атрибутов «Товар» и «Количество» (хотя в явном виде количество
не указано).
Для соответствия НФБК нужно было бы разделить таблицу на две: одна содержала бы информацию о заказе и товаре, а другая — расчёт общей стоимости на основе цены и количества.
Третья нормальная форма (3NF)
Когда отношение содержит два или более потенциальных ключа.
Когда эти потенциальные ключи являются составными.
Когда они пересекаются, то есть имеют хотя бы один общий атрибут.
Отношение находится в НФБК, если каждая нетривиальная и неприводимая функциональная зависимость имеет потенциальный ключ в качестве детерминанта.
Третья нормальная форма является более строгим требованием и требует, чтобы все неключевые атрибуты были взаимно независимыми.
Примеры:
· Бизнес: таблица «Клиенты» с атрибутами «ID клиента», «ФИО», «Адрес» и «Телефон».
· Математика: таблица «Переменные» с атрибутами «ID переменной», «Обозначение», «Значение», где каждая переменная имеет уникальное обозначение и независимое значение.
Пример таблицы в третьей нормальной форме (3НФ):
|
ID |
Имя |
Адрес |
Город |
Телефон |
|
1 |
Иван |
ул. Цветочная, д. 5 |
Москва |
+7 (900) 111-11-11 |
|
2 |
Пётр |
пр. Солнечный, д. 10 |
Санкт-Петербург |
+7 (900) 222-22-22 |
В этой таблице каждый атрибут зависит только от первичного ключа (ID) и не содержит транзитивных зависимостей.
Пример таблицы с нарушением третьей нормальной формы:
|
ID |
Имя |
Адрес |
Город |
Тип адреса |
|
1 |
Иван |
ул. Цветочная, д. 5 |
Москва |
Частный |
|
2 |
Пётр |
пр. Солнечный, д. 10 |
Санкт-Петербург |
Квартира |
|
3 |
Анна |
д. 15, СНТ «Зелёный» |
Подмосковье |
Частный |
В данном примере атрибут «Тип адреса» зависит не только от первичного ключа, но и от атрибута «Адрес». Это создаёт транзитивную зависимость и нарушает 3НФ.
Четвёртая нормальная форма (4NF)
Четвёртая нормальная форма исключает нетривиальные многозначные зависимости.
Примеры:
· Бизнес: таблица «Книги» с атрибутами «ID книги», «Автор», «Жанр» и «Издательство».
· Математика: таблица «Пары чисел» с атрибутами «ID пары», «Первое число», «Второе число», где каждому первому числу соответствует определённое множество вторых чисел.
Пример таблицы в четвёртой нормальной форме (4НФ):
|
Номер заказа |
Клиент |
Товар |
Количество |
|
1 |
Клиент 1 |
Товар 1 |
10 |
|
2 |
Клиент 2 |
Товар 2 |
5 |
В этой таблице каждый атрибут зависит только от первичного ключа, и нет
многозначных зависимостей.
Пример таблицы с нарушением 4НФ:
|
Номер заказа |