logo

Boyce Codd normālā forma (BCNF)

  • BCNF ir 3NF uzlabotā versija. Tas ir stingrāks par 3NF.
  • Tabula atrodas BCNF, ja katra funkcionālā atkarība X → Y, X ir tabulas superatslēga.
  • BCNF tabulai ir jābūt 3NF formātā, un katram FD LHS ir super atslēga.

Piemērs: Pieņemsim, ka ir uzņēmums, kurā darbinieki strādā vairāk nekā vienā nodaļā.

powershell mazāks par vai vienāds ar

DARBINIEKU tabula:

EMP_ID EMP_VALSTS EMP_DEPT DEPT_TYPE EMP_DEPT_NO
264 Indija Projektēšana D394 283
264 Indija Testēšana D394 300
364 Apvienotā Karaliste Veikali D283 232
364 Apvienotā Karaliste Attīstās D283 549

Iepriekš minētajā tabulā funkcionālās atkarības ir šādas:

 EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} 

Kandidāta atslēga: {EMP-ID, EMP-DEPT}

Tabula nav BCNF, jo ne EMP_DEPT, ne EMP_ID atsevišķi nav atslēgas.

Lai pārvērstu doto tabulu par BCNF, mēs to sadalām trīs tabulās:

EMP_COUNTRY tabula:

EMP_ID EMP_VALSTS
264 Indija
264 Indija

EMP_DEPT tabula:

EMP_DEPT DEPT_TYPE EMP_DEPT_NO
Projektēšana D394 283
Testēšana D394 300
Veikali D283 232
Attīstās D283 549

EMP_DEPT_MAPPING tabula:

EMP_ID EMP_DEPT
D394 283
D394 300
D283 232
D283 549

Funkcionālās atkarības:

 EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} 

Kandidātu atslēgas:

Pirmajai tabulai: EMP_ID
Otrajai tabulai: EMP_DEPT
Trešajai tabulai: {EMP_ID, EMP_DEPT}

Tagad tas ir BCNF, jo abu funkcionālo atkarību kreisā puse ir atslēga.