Raccomandato, 2024

Scelta Del Redattore

Differenza tra 3NF e BCNF

La normalizzazione è un metodo che rimuove la ridondanza da una relazione riducendo al minimo l'inserimento, la cancellazione e l'aggiornamento delle anomalie che degradano le prestazioni dei database. In questo articolo, distingueremo tra due forme normali più alte, cioè 3NF e BCNF. La differenza fondamentale tra 3NF e BCNF è che 3NF elimina la dipendenza transitiva da una relazione e una tabella da essere in BCNF, la dipendenza funzionale banale X-> Y in una relazione deve essere mantenuta, solo se X è la chiave super.

Cerchiamo di discutere le differenze tra 3NF e BCNF con l'aiuto del grafico di confronto mostrato di seguito.

Grafico comparativo

Base per il confronto3NFBCNF
ConcettoNessun attributo non-prime deve essere transitivamente dipendente dalla chiave Candidate.Per qualsiasi dipendenza insignificante in una relazione R dice X-> Y, X dovrebbe essere una super chiave della relazione R.
Dipendenza3NF può essere ottenuto senza sacrificare tutte le dipendenze.Le dipendenze potrebbero non essere conservate in BCNF.
DecomposizioneLa decomposizione senza perdita di dati può essere ottenuta in 3NF.La decomposizione senza perdita di dati è difficile da ottenere in BCNF.

Definizione di 3NF

Una tabella o una relazione è considerata in Terza Forma Normale solo se la tabella è già in 2NF e non esiste un attributo non-prime che dipende in modo transitorio dalla chiave candidata di una relazione.

Quindi, prima di affrontare il processo di normalizzazione di una tabella in 3NF, permettimi di discutere la chiave del candidato. Una chiave candidata è una super-chiave minima, ovvero una super-chiave con attributi minimi che possono definire tutti gli attributi di una relazione. Quindi, nel processo di normalizzazione della tabella, in primo luogo, si riconosce la chiave candidata di una determinata relazione. Gli attributi che fanno parte della chiave candidata sono attributi primi e gli attributi che non fanno parte della chiave candidata sono attributi non primi .

Ora se abbiamo una relazione R (A, B, C, D, E, F) e abbiamo le seguenti dipendenze di funzione per la relazione R.

Osservando le dipendenze funzionali, possiamo concludere che AB è una chiave candidata per la relazione R perché usando la chiave AB possiamo cercare il valore di tutti gli attributi in una relazione R. Quindi A, B diventa attributi primi mentre insieme formano la chiave candidato. Gli attributi C, D, E, F diventano attributi non primi perché nessuno di loro è la parte di una chiave candidata.

La tabella è in 2NF poiché nessun attributo non-prime dipende parzialmente dalla chiave candidata

Ma, una dipendenza transitiva è osservata tra le dipendenze funzionali fornite, poiché l'attributo F non dipende direttamente dalla chiave candidata AB . Invece, l'attributo F dipende transitivamente dalla chiave candidata AB tramite l'attributo D. Fino all'attributo D ha un certo valore che possiamo raggiungere per attribuire il valore di F, dalla chiave candidata AB. Nel caso in cui il valore dell'attributo D sia NULL non possiamo mai trovare / cercare il valore di F con l'aiuto della chiave candidata AB. Questo è il motivo per cui 3NF richiede di rimuovere la dipendenza transitiva dalle relazioni.

Quindi, per rimuovere questa dipendenza transitiva, dobbiamo dividere la relazione R. Mentre dividendo una relazione posiziona sempre la chiave candidata e tutti gli attributi che dipendono da quella chiave candidata nella prima relazione. Nella prossima relazione divisa, inseriremo l'attributo che causa la dipendenza transitiva e anche gli attributi che dipendono da esso nella seconda relazione.

Ora, le tabelle R1 e R2 si trovano in 3NF in quanto non sono presenti dipendenze parziali e transitive. La relazione R1 (A, B, C, D, E) ha una chiave candidata AB mentre la relazione R2 (D, E) ha D come chiave candidata.

Definizione di BCNF

BCNF è considerato il più forte di 3NF. La relazione R per essere in BCNF deve essere in 3NF . E ovunque una dipendenza funzionale non banale A -> B valga in relazione a R, allora A deve essere un superkey della relazione R. Come sappiamo, la chiave Super è una chiave che ha un singolo attributo o insieme di attributi che determina, l'intero attributi di una relazione.

Passiamo ora a un esempio per capire BCNF in un modo migliore. Supponiamo di avere una relazione R (A, B, C, D, F), che ha le seguenti dipendenze funzionali.

Osservando la relazione R, possiamo dire che A e BF sono chiavi candidate della relazione R, perché solo loro possono cercare il valore di tutti gli attributi nella relazione R. Quindi A, B, F sono gli attributi primi mentre, C e D sono attributi non primari . Nessuna dipendenza transitiva è osservata nelle dipendenze funzionali presenti sopra. Quindi, la tabella R è in 3NF.

Ma una dipendenza funzionale cioè D -> F sta violando la definizione di BCNF, secondo la quale, se D -> F esiste allora D dovrebbe essere la chiave super che non è il caso qui. Quindi divideremo la relazione R.

Ora, le tabelle R1 e R2 sono in BCNF. La relazione R1 ha due chiavi candidate A e B, la dipendenza funzionale banale di R1 cioè A-> BCD e B -> ACD, tenuta per BCNF come A e B sono le super chiavi per la relazione. La relazione R2 ha D come chiave candidata e la dipendenza funzionale D -> F vale anche per BCNF poiché D è una chiave super.

Differenze chiave tra 3NF e BCNF

  1. 3NF afferma che nessun attributo non-prime deve essere transitivamente dipendente dalla chiave candidata della relazione. D'altra parte, BCNF afferma che se esiste una dipendenza funzionale banale X -> Y per una relazione; quindi X deve essere una super chiave.
  2. 3NF può essere ottenuto senza sacrificare la dipendenza della relazione. Tuttavia, la dipendenza potrebbe non essere preservata durante l'ottenimento di BCNF.
  3. 3NF può essere ottenuto senza perdere alcuna informazione dalla vecchia tabella mentre, mentre si ottiene BCNF possiamo perdere alcune informazioni dalla vecchia tabella.

Conclusione:

BCNF è molto più restrittivo di 3NF che aiuta a normalizzare di più la tabella. La relazione in 3NF ha una ridondanza minima a sinistra che viene ulteriormente rimossa dal BCNF.

Top