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