Четвёртая нормальная форма (4NF)
1.Определения Четвёртая нормальная форма (4NF) — одна из возможных нормальных форм отношения реляционной базы данных.Эквивалентная формулировка определения: Переменная отношения R находится в четвёртой нормальной форме тогда и только тогда, когда в случае существования таких подмножеств A и B атрибутов этой переменной отношения R, для которых выполняется нетривиальная многозначная зависимость A →→ B, все атрибуты переменной отношения R также функционально зависят от А.
2.Пример Пусть в таблице хранится информация о поставщиках, заказчиках и магазинах заказчика. <Поставщик, Заказчик, Магазин>
Поставим условие, что атрибут (Поставщик) никак не зависит от атрибута (Магазин), что вполне логично, так как поставка идет заказчику, а не в магазин. Предположим также, что данному заказчику может соответствовать произвольное количество поставщиков и магазинов.
Заметим, что первичным ключом данной таблицы является совокупность всех ее столбцов, а поэтому она находится в третьей нормальной форме. Не смотря на это работать с таблицей не удобно. Действительно, если необходимо для данного заказчика добавить нового поставщика, то делать это придется, указав конкретный магазин. Удалить же поставщика можно, только удалив все записи, где он присутствует, что может привести к удалению и заказчика..
В указанном примере причиной проблем является так называемая многозначная зависимость. Дело в том, что поле (Заказчик) не явно определяет и множество поставщиков, и множество магазинов. Такое отношение называется многозначной зависимостью. И так в нашем случае налицо две многозначные зависимости. Записывается это так: (Заказчик)->>(Поставщик) и (Заказчик)->>(Магазин).
Таблица будет находиться в четвертой нормальной форме (4НФ), если она находится в третьей нормальной форме и при наличии многозначной зависимости, например, атрибута B от атрибута A, другие атрибуты будут функционально зависеть от атрибута A.
В нашем примере, очевидно, таблица не находится в четвертой нормальной форме. Для того, что устранить проблему можно провести декомпозицию. В результате получим две таблицы<Поставщик, Заказчик> <Заказчик, Магазин>
Легко видеть, что получившиеся таблицы удовлетворяют требованиям четвертой нормальной формы. Лишний раз подчеркну, что такое разбиение возможно только по причине условия: поставщик никак не связан с магазинами заказчика.