- BCNF yra pažangi 3NF versija. Jis yra griežtesnis nei 3NF.
- Lentelė yra BCNF, jei kiekviena funkcinė priklausomybė X → Y, X yra lentelės superraktas.
- BCNF atveju lentelė turi būti 3NF, o kiekvienam FD LHS yra super raktas.
Pavyzdys: Tarkime, kad yra įmonė, kurioje darbuotojai dirba daugiau nei viename padalinyje.
kaip konvertuoti eilutę į char
DARBUOTOJŲ lentelė:
EMP_ID | EMP_COUNTRY | EMP_DEPT | DEPT_TYPE | EMP_DEPT_NO |
---|---|---|---|---|
264 | Indija | Projektavimas | D394 | 283 |
264 | Indija | Testavimas | D394 | 300 |
364 | JK | Parduotuvės | D283 | 232 |
364 | JK | Besivystantis | D283 | 549 |
Aukščiau pateiktoje lentelėje funkcinės priklausomybės yra tokios:
EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO}
Kandidato raktas: {EMP-ID, EMP-DEPT}
Lentelė nėra BCNF, nes nei EMP_DEPT, nei vien EMP_ID nėra raktai.
Norėdami konvertuoti pateiktą lentelę į BCNF, išskaidome ją į tris lenteles:
EMP_COUNTRY lentelė:
EMP_ID | EMP_COUNTRY |
---|---|
264 | Indija |
264 | Indija |
EMP_DEPT lentelė:
EMP_DEPT | DEPT_TYPE | EMP_DEPT_NO |
---|---|---|
Projektavimas | D394 | 283 |
Testavimas | D394 | 300 |
Parduotuvės | D283 | 232 |
Besivystantis | D283 | 549 |
EMP_DEPT_MAPPING lentelė:
EMP_ID | EMP_DEPT |
---|---|
D394 | 283 |
D394 | 300 |
D283 | 232 |
D283 | 549 |
Funkcinės priklausomybės:
EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO}
Kandidatų raktai:
Pirmajai lentelei: EMP_ID
Dėl antrosios lentelės: EMP_DEPT
Dėl trečios lentelės: {EMP_ID, EMP_DEPT}
Dabar tai yra BCNF, nes kairioji abiejų funkcinių priklausomybių dalis yra raktas.