logo

Boyce Codd normaalimuoto (BCNF)

  • BCNF on 3NF:n edistynyt versio. Se on tiukempi kuin 3NF.
  • Taulukko on BCNF:ssä, jos jokainen toiminnallinen riippuvuus X → Y, X on taulukon superavain.
  • BCNF:lle taulukon tulee olla 3NF-muodossa, ja jokaiselle FD:lle LHS on superavain.

Esimerkki: Oletetaan, että on olemassa yritys, jossa työntekijät työskentelevät useammalla kuin yhdellä osastolla.

mikä on svn checkout

TYÖNTEKIJÄtaulukko:

EMP_ID EMP_MAA EMP_DEPT DEPT_TYPE EMP_DEPT_NO
264 Intia Suunnittelu D394 283
264 Intia Testaus D394 300
364 Iso-Britannia Kaupat D283 232
364 Iso-Britannia Kehittyy D283 549

Yllä olevassa taulukossa toiminnalliset riippuvuudet ovat seuraavat:

 EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} 

Ehdokasavain: {EMP-ID, EMP-DEPT}

Taulukko ei ole BCNF:ssä, koska EMP_DEPT tai EMP_ID eivät yksin ole avaimia.

Muuntaaksesi annetun taulukon BCNF:ksi, jaamme sen kolmeen taulukkoon:

EMP_COUNTRY taulukko:

EMP_ID EMP_MAA
264 Intia
264 Intia

EMP_DEPT-taulukko:

EMP_DEPT DEPT_TYPE EMP_DEPT_NO
Suunnittelu D394 283
Testaus D394 300
Kaupat D283 232
Kehittyy D283 549

EMP_DEPT_MAPPING-taulukko:

EMP_ID EMP_DEPT
D394 283
D394 300
D283 232
D283 549

Toiminnalliset riippuvuudet:

 EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} 

Ehdokasavaimet:

Ensimmäiseen pöytään: EMP_ID
Toiselle pöydälle: EMP_DEPT
Kolmannelle pöydälle: {EMP_ID, EMP_DEPT}

Nyt tämä on BCNF:ssä, koska molempien toiminnallisten riippuvuuksien vasen puoli on avain.