Differenza tra 3NF e BCNF

3NF vs BCNF

La normalizzazione è un processo che viene eseguito per minimizzare le ridondanze presenti nei dati nei database relazionali. Questo processo dividerà principalmente tabelle di grandi dimensioni in tabelle più piccole con meno ridondanze. Queste tabelle più piccole saranno correlate tra loro attraverso relazioni ben definite. In un database ben normalizzato, qualsiasi modifica o modifica nei dati richiederà la modifica di una sola tabella. Third Normal Form (3NF) è stato introdotto nel 1971 da Edgar F. Codd, che è anche l'inventore del modello relazionale e il concetto di normalizzazione. Boyce-Codd Normal Form (BCNF) fu introdotto nel 1974 da Codd e Raymond F. Boyce.

Che cos'è 3NF?

3NF è la terza forma normale utilizzata nella normalizzazione del database relazionale. Secondo la definizione del Codd, una tabella si dice che sia in 3NF, se e solo se, quella tabella è nella seconda forma normale (2NF), e ogni attributo nella tabella che non appartiene a una chiave candidata dovrebbe dipendere direttamente da ogni chiave candidato di quel tavolo. Nel 1982 Carlo Zaniolo ha prodotto una definizione diversa per la 3NF. Le tabelle conformi al 3NF in genere non contengono anomalie che si verificano durante l'inserimento, l'eliminazione o l'aggiornamento dei record nella tabella.

Cos'è BCNF?

BCNF (noto anche come 3.5NF) è un'altra forma normale utilizzata nella normalizzazione del database relazionale. È stato introdotto per catturare alcune anomalie che non sono affrontate dal 3NF. Si dice che una tabella sia in BCNF, se e solo se, per ciascuna delle dipendenze della forma A → B che non sono banali, A è una super-chiave. La scomposizione di una tabella che non è nella forma normale BCNF non garantisce la produzione di tabelle nel modulo BCNF (pur preservando le dipendenze presenti nella tabella originale).

Qual è la differenza tra 3NF e BCNF?

Sia 3NF che BCNF sono moduli normali utilizzati nei database relazionali per ridurre al minimo le ridondanze nelle tabelle. In una tabella che si trova nella forma normale BCNF, per ogni dipendenza funzionale non banale del modulo A → B, A è una super-chiave mentre, una tabella che è conforme a 3NF deve essere nella 2NF e ogni non-primaria l'attributo dovrebbe dipendere direttamente da ogni chiave candidato di quella tabella. BCNF è considerato come una forma normale più forte rispetto al 3NF ed è stato sviluppato per catturare alcune delle anomalie che non potevano essere catturate da 3NF. Ottenere una tabella conforme al modulo BCNF richiederà la decomposizione di una tabella che si trova in 3NF. Questa decomposizione comporterà operazioni di join aggiuntive (o prodotti cartesiani) durante l'esecuzione di query. Ciò aumenterà il tempo di calcolo. D'altro canto, le tabelle conformi a BCNF avrebbero meno ridondanze rispetto alle tabelle che rispettano solo 3NF. Inoltre, la maggior parte delle volte, è possibile ottenere una tabella conforme a 3NF senza ostacolare la conservazione delle dipendenze e l'unione senza perdita di dati. Ma questo non è sempre possibile con BCNF.