Пятая нормальная форма требует обеспечить возможность перестройки данных в нормализованных таблицах. Приведение таблицы к 5NF - крайне редкий случай. Это действие имеет смысл, только если таблица содержит так называемые зависимые сочетания. Поясню на примере. Предположим, что в нашей БД есть таблица, которая хранит данные о детали (столбец Item), поставщике этой детали (Supplier_Key) и устройстве, куда эта деталь была установлена (Machine_Key).
Таблица Machine_Item_Supplier служит наглядным примером таблицы, не приведенной к 5NF (она имеет зависимые сочетания). Наличие этих сочетаний при декомпозиции Machine_ Item_Supplier на две таблицы может послужить причиной появления ложных строк. Проверим это на практике: разобьем исходную таблицу на две (такое развитие событий вполне вероятно при построении запросов):
1. Таблица Machine_Item содержит данные об устройстве и установленной внем детали.
2. Таблица ItemSupplier хранит информацию о детали и ее поставщике.
А теперь попробуем решить обратную задачу: восстановим исходную таблицу из MachineItem и ItemSupplier. Для этого создаем обычный запрос на языке SQL, объединяющий обе таблицы по общему для них полю Item:
SELECT Machine_Item.Machine_Key, Machine_Item.Item, Item_Suplier.Supplier_Key
FROM Machine_Item, Item_Suplier
WHERE Machine_Item.Item = Item_Suplier.Item
В результате выполнения абсолютно правильного запроса SELECT мы получим:
В результате объединения двух таблиц мы приобрели целых четыре ложных (не существующих в реальной таблице) строки. Если декомпозиция вызывает генерацию вымышленных строк, то такое последствие называют зависимостью соединения. Поэтому при приведении таблиц, подобных Machi-ne_Item_Supplier, к пятой нормальной форме необходимо разбивать таблицу таким образом, чтобы исходные данные реконструировались без искажений.