logo

Boyce Codd normál forma (BCNF)

  • A BCNF a 3NF továbbfejlesztett változata. Szigorúbb, mint a 3NF.
  • Egy tábla akkor van BCNF-ben, ha minden X → Y, X funkcionális függőség a tábla szuperkulcsa.
  • A BCNF esetében a táblázatnak 3NF-ben kell lennie, és minden FD esetében az LHS szuperkulcs.

Példa: Tegyük fel, hogy van olyan cég, ahol az alkalmazottak egynél több osztályon dolgoznak.

jelentkezzen ki a google fiókból androidon

ALKALMAZOTT táblázat:

EMP_ID EMP_COUNTRY EMP_DEPT DEPT_TYPE EMP_DEPT_NO
264 India Tervezés D394 283
264 India Tesztelés D394 300
364 Egyesült Királyság Üzletek D283 232
364 Egyesült Királyság Fejlesztés D283 549

A fenti táblázatban a funkcionális függőségek a következők:

 EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} 

Jelölt kulcs: {EMP-ID, EMP-DEPT}

A tábla nincs BCNF-ben, mert sem az EMP_DEPT, sem az EMP_ID önmagában nem kulcs.

Az adott tábla BCNF-re való konvertálásához három táblára bontjuk:

EMP_COUNTRY táblázat:

EMP_ID EMP_COUNTRY
264 India
264 India

EMP_DEPT táblázat:

EMP_DEPT DEPT_TYPE EMP_DEPT_NO
Tervezés D394 283
Tesztelés D394 300
Üzletek D283 232
Fejlesztés D283 549

EMP_DEPT_MAPPING táblázat:

EMP_ID EMP_DEPT
D394 283
D394 300
D283 232
D283 549

Funkcionális függőségek:

 EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} 

Jelölt kulcsok:

Az első táblázathoz: EMP_ID
A második táblázathoz: EMP_DEPT
A harmadik táblázathoz: {EMP_ID, EMP_DEPT}

Nos, ez a BCNF-ben van, mert mindkét funkcionális függőség bal oldali része kulcs.