logo

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

  • BCNF є попередньою версією 3NF. Це суворіше, ніж 3NF.
  • Таблиця знаходиться в BCNF, якщо кожна функціональна залежність X → Y, X є суперключем таблиці.
  • Для BCNF таблиця має бути в 3NF, а для кожного FD LHS є суперключем.

приклад: Припустімо, що є компанія, де співробітники працюють більш ніж в одному відділі.

об'єкт для jsonobject java

Таблиця СПІВРОБІТНИК:

EMP_ID EMP_COUNTRY EMP_DEPT DEPT_TYPE EMP_DEPT_NO
264 Індія Проектування D394 283
264 Індія Тестування D394 300
364 Великобританія Магазини D283 232
364 Великобританія Розвиток D283 549

У таблиці вище функціональні залежності:

 EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} 

Ключ кандидата: {EMP-ID, EMP-DEPT}

Таблиця не знаходиться в BCNF, оскільки ні EMP_DEPT, ні EMP_ID самі по собі не є ключами.

Щоб перетворити дану таблицю в BCNF, розкладемо її на три таблиці:

Таблиця EMP_COUNTRY:

EMP_ID EMP_COUNTRY
264 Індія
264 Індія

Таблиця EMP_DEPT:

EMP_DEPT DEPT_TYPE EMP_DEPT_NO
Проектування D394 283
Тестування D394 300
Магазини D283 232
Розвиток D283 549

Таблиця EMP_DEPT_MAPPING:

EMP_ID EMP_DEPT
D394 283
D394 300
D283 232
D283 549

Функціональні залежності:

 EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} 

Ключі кандидатів:

Для першої таблиці: EMP_ID
Для другої таблиці: EMP_DEPT
Для третьої таблиці: {EMP_ID, EMP_DEPT}

Тепер це в BCNF, оскільки ліва частина обох функціональних залежностей є ключем.