Повна версія

Головна arrow Інформатика arrow Бази даних: проектування

  • Увеличить шрифт
  • Уменьшить шрифт


<<   ЗМІСТ   >>

Нормальна форма Бойса - Кодда (НФБК)

Виникнення перекриваються потенційних ключів, коли частина одного ключа входить до складу іншого ключа, є досить частим випадком, і використання правил приведення відносин до тієї чи іншої

нормальній формі сильно проблематично. Зокрема, для таких випадків була сформульована нормальна форма Бойса - Кодда (НФБК).

Відношення знаходиться в нормальній формі Байса - Кодда тоді і тільки тоді, коли кожна його нетривіальна і не приводиться зліва функціональна залежність має в якості свого детермінанта деякий потенційних ключ [1] .

Припустимо, що розглядається відношення містить три атрибути - "Замовлення", "Товар" і "Постачальник" (рис. 2.79), при цьому володіє деякими обмеженнями:

  • • в кожному замовленні вказується певний товар від одного постачальника;
  • • кожен постачальник поставляє тільки один товар;
  • • певний товар можуть поставляти кілька постачальників.

image119

Мал. 2.79. Функціональні залежності прикладу перекриваються ключів


В даному прикладі є перекриваються потенційні ключі: { "Замовлення", "Товар"} і { "Замовлення", "Постачальник"}. Наявне відношення знаходиться в третій нормальній формі, але не в нормальній формі Байса - Кодда. Це викликає аномалії оновлення, що заважають коректно зберігати і обробляти дані. У підсумку, дане відношення варто розбити на два відносини (рис. 2.80).

image120

Мал. 2.80. Нормалізація відносин з перекриваються ключами


Здавалося б, проблеми зв'язку замовлення і постачальника дозволені і аномалії оновлення зникли, але не всі. При спробі додати в відношення "Товари замовлення" новий екземпляр даних необхідно обов'язково додати відповідний екземпляр в відношення "Товари постачальника", оскільки важливо розуміти, товар якого постачальника буде розміщений в замовленні.

Правило переходу ЗНФ -> НФБК

Якщо відношення знаходиться в ЗНФ і існують функціональні залежності, де детермінанти не є потенційними ключами, то такі залежності необхідно виділити в окремі відносини.

Іншим прикладом перекриваються потенційних ключів може бути такою: залежність кількості товару від детермінанта "Товар" "Замовлення" і залежність цінового сегмента від детермінанта "Товар" - "Постачальник". Цей приклад найбільш наближений до реалій предметної області, оскільки кількість товару в замовленні повинно визначатися сукупністю атрибутів "Замовлення" і "Товар", а ціновий сегмент товару визначається не тільки самим товаром, але і постачальником цього товару.

Цей приклад представляє відношення в нормальній формі Байса - Кодда, хоча і містить перекриваються ключі (рис. 2.81), оскільки ці ключі є єдиними детермінантами для відповідного неключових атрибута і процес нормалізації не потрібно.

image121


Мал. 2.81. Функціональна залежність для двох відносин
з перекриваються ключами

  • [1] Дейт К. Дж. Введення в системи баз даних.
 
<<   ЗМІСТ   >>