logo

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

  • BCNF е предварителна версия на 3NF. Той е по-строг от 3NF.
  • Една таблица е в BCNF, ако всяка функционална зависимост X → Y, X е супер ключът на таблицата.
  • За BCNF таблицата трябва да е в 3NF, а за всеки FD LHS е супер ключ.

Пример: Да приемем, че има компания, в която служители работят в повече от един отдел.

конвертиране на низ в 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, защото лявата част на двете функционални зависимости е ключ.