logo

Boyce Codd normali forma (BCNF)

  • 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.