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