вторник, 27 мая 2014 г.

Нормализация БД. Усиленная 3 форма (нормальная форма Бойса-Кодда)

Википедия говорит, что отношения находится в нормальной форме Бойса-Кодда тогда и только тогда, когда детерминанты всех ее функциональных зависимостей являются потенциальными ключами.
Иначе говоря:

  • Детерминант функциональной зависимости - это то, что в левой её части 
  • Потенциальный ключ - подмножество атрибутов, удовлетворяющее требованиям уникальности и минимальности (несократимости)
  • Для проверки на соответствие НФБК нужно выделить все функциональные зависимости. Если любой детерминант можно выбрать в качестве ключа - отношение соответствует усиленной 3 форме.
  • НФБК может отличаться  от 3 НФ только в том случае, если у отношения несколько потенциальных ключей
Например, есть следующая таблица:

producer_idproducer_nameproduct_nameamount
1AlphaApricot10
1AlphaPeach20
1AlphaStrawberry50
2BetaApricot10
2BetaStrawberry30

Есть 2 варианта выбора ключа:

  •  producer_id + product_name

producer_idproducer_nameproduct_nameamount
1AlphaApricot10
1AlphaPeach20
1AlphaStrawberry50
2BetaApricot10
2BetaStrawberry30

  • producer_name + product_name

producer_idproducer_nameproduct_nameamount
1AlphaApricot10
1AlphaPeach20
1AlphaStrawberry50
2BetaApricot10
2BetaStrawberry30

Отношение соответствует 1, 2, 3 НФ.

Для того, чтобы доказать, что данное отношение не находится в НФБК, нужно найти такое функциональное отношение, в котором левая часть (детерминант)  не равна   producer_id + product_name или  producer_name + product_name (т.е. потенциальному ключу).

Таких зависимостей две:

  • producer_name -> producer_id
  • producer_id -> producer_name

Для приведения к НБКФ таблицу можно преобразовать так:

producer_idproducer_name
1Alpha
2Beta

producer_idproduct_nameamount
1Apricot10
1Peach20
1Strawberry50
2Apricot10
2Strawberry30

Комментариев нет:

Отправить комментарий