Таблица находится в первой нормальной форме (1НФ), если значения ее атрибутов атомарные (простые). Из приведенных в предыдущем вопросе таблиц, только первая не удовлетворяет этим требованиям. Таким образом, универсальное отношение «Питание» (Таблица 1.7) является отношением в первой нормальной форме.
Таблица находится во второй нормальной форме (2НФ), если она удовлетворяет определению 1НФ и все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом.
Ко второй нормальной форме приведены почти все таблицы (Рис. 1.12), кроме таблицы Поставщики, в которой поле «Страна» зависит только от поля «Город», которое является частью первичного ключа (Поставщик: Город).
Последнее обстоятельство приводит к проблемам при:
- включении данных (пока не появится поставщик из Вильнюса, нельзя зафиксировать, что этот город Литвы),
- удалении данных (исключение поставщика может привести к потере информации о местонахождении города),
- обновлении данных (при изменении названия страны приходится просматривать множество строк, чтобы исключить получение противоречивого результата).
Что же касается таблиц Рис 1.13, то ввод в них отсутствующих в предметной области цифровых первичных и внешних ключей формально затрудняет процедуру выявления функциональных связей между этими ключами и остальными полями. Действительно, легко установить связь между атрибутом Блюдо и Вид (блюда): Харчо – Суп, Лобио – Закуска и т.п., но нет прямой зависимости между полями БЛ и Вид (блюда), если не помнить, что значение БЛ соответствует номеру блюда. Для упрощения нормализации подобных таблиц целесообразно использовать следующую рекомендацию:
При проведении нормализации таблиц, в которые введены цифровые (или другие) заменители составных или текстовых первичных и внешних ключей, следует хотя бы мысленно подменять их на исходные ключи, а после окончания нормализации снова восстанавливать.
Таблица находится в третьей нормальной форме (3НФ), если она удовлетворяет определению 2НФ и ни одно из ее неключевых полей не зависит функционально от любого другого неключевого поля.
После разделения таблицы Поставщики (Рис 1.12) на две части, все таблицы этого проекта удовлетворяют определению 2НФ, а так как в них нет неключевых полей, функционально зависящих друг от друга, то все они находятся в 3НФ.
Как ни странно, этого нельзя сказать об аналогичных таблицах Рис 1.13. Если забыть рекомендацию о подмене на время нормализации ключей БЛ, ПР и ПОС на Блюдо, Продукт и (Поставщик, Город), то среди этих таблиц появятся две, не удовлетворяющие определению 3НФ.
Действительно, так как после ввода первичных ключей БЛ и ПР поля Блюдо и Продукт стали неключевыми – появились несуществовавшие ранее функциональные зависимости между неключевыми полями:
Блюдо->Вид и Продукт->Калорийность.
Следовательно, для приведения таблиц Блюда и Продукты Рис. 1.13 к 3НФ их надо разбить на
Блюда: (БЛ, Блюдо),
Вид блюда: (БЛ, Вид);
Продукты: (ПР, Продукт);
Калорийность продукта (ПР,Калорийносить);
хотя интуиция подсказывает, что это лишнее разбиение, совсем не улучшающее проекта базы данных. Столкнувшись с подобными противоречиями, которые могут возникать не только из-за введения кодированных первичных ключей, теоретики реляционных систем Кодд и Бойс обосновали и предложили более строгое определение для 3НФ, которое учитывает, что в таблице может быть несколько возможных ключей.
Таблица находится в нормальной форме Бойса – Кодда (НФБК) только если любая функциональная зависимость между его полями сводится к полной функциональной зависимости от возможного ключа.
В соответствии с этой формулировкой таблицы Блюда и Продукты находятся в НФБК или 3НФ.
В следующих нормальных формах учитывается не только функциональные, но и многозначные зависимости между полями таблицы. Для их описания используют понятие декомпозиции таблиц.
Полной декомпозицией таблиц называют такую совокупность произвольного числа ее проекций, соединение которых полностью совпадает с содержимым таблицы.
Например, естественным соединением таблиц, представленных на Рис. 1.12, 1.13 можно образовать исходную таблицу «Питание».
Таблица находится в пятой нормальной форме (5НФ), тогда и только тогда, когда в каждой ее полной декомпозиции все проекции содержат возможный ключ. Таблица, не имеющая ни одной декомпозиции находится в 5НФ.
Четвертая нормальная форма (4НФ) является частным случаем 5НФ, когда полная декомпозиция должна быть соединением ровно двух проекций.