Википедия говорит, что отношения находится в нормальной форме Бойса-Кодда тогда и только тогда, когда детерминанты всех ее функциональных зависимостей являются потенциальными ключами.
Иначе говоря:
- Детерминант функциональной зависимости - это то, что в левой её части
- Потенциальный ключ - подмножество атрибутов, удовлетворяющее требованиям уникальности и минимальности (несократимости)
- Для проверки на соответствие НФБК нужно выделить все функциональные зависимости. Если любой детерминант можно выбрать в качестве ключа - отношение соответствует усиленной 3 форме.
- НФБК может отличаться от 3 НФ только в том случае, если у отношения несколько потенциальных ключей
producer_id | producer_name | product_name | amount |
1 | Alpha | Apricot | 10 |
1 | Alpha | Peach | 20 |
1 | Alpha | Strawberry | 50 |
2 | Beta | Apricot | 10 |
2 | Beta | Strawberry | 30 |
Есть 2 варианта выбора ключа:
- producer_id + product_name
producer_id | producer_name | product_name | amount |
1 | Alpha | Apricot | 10 |
1 | Alpha | Peach | 20 |
1 | Alpha | Strawberry | 50 |
2 | Beta | Apricot | 10 |
2 | Beta | Strawberry | 30 |
- producer_name + product_name
producer_id | producer_name | product_name | amount |
1 | Alpha | Apricot | 10 |
1 | Alpha | Peach | 20 |
1 | Alpha | Strawberry | 50 |
2 | Beta | Apricot | 10 |
2 | Beta | Strawberry | 30 |
Отношение соответствует 1, 2, 3 НФ.
Для того, чтобы доказать, что данное отношение не находится в НФБК, нужно найти такое функциональное отношение, в котором левая часть (детерминант) не равна producer_id + product_name или producer_name + product_name (т.е. потенциальному ключу).
Таких зависимостей две:
- producer_name -> producer_id
- producer_id -> producer_name
Для приведения к НБКФ таблицу можно преобразовать так:
producer_id | producer_name |
1 | Alpha |
2 | Beta |
producer_id | product_name | amount |
1 | Apricot | 10 |
1 | Peach | 20 |
1 | Strawberry | 50 |
2 | Apricot | 10 |
2 | Strawberry | 30 |
Комментариев нет:
Отправить комментарий