Опрос

Что вас больше интересует?

  • игры для nokia
  • темы на телефон
  • программы на мобильный
  • обзоры мобильных телефонов


 

Какие игры вы предпочитаете?

  • игры для мальчиков
  • игры для девочек
  • драки
  • стрелялки
  • логические игры
  • спортивные


 

счетчики

Спонсор раздела:

Пятая нормальная форма - 5NF

Статьи

Пятая нормальная форма требует обеспечить возможность перестройки данных в нормализованных таблицах. Приведение таблицы к 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, к пятой нормальной форме необходимо разбивать таблицу таким образом, чтобы исходные данные реконструировались без искажений.

Добавить комментарий


Защитный код
Обновить