3NF vs BCNF
La normalizzazione è un processo che viene eseguito per ridurre al minimo 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 alterazione o modifica dei dati richiederà la modifica di una sola tabella. La Third Normal Form (3NF) è stata introdotta nel 1971 da Edgar F. Codd, che è anche l'inventore del modello relazionale e del concetto di normalizzazione. Boyce-Codd Normal Form (BCNF) è stato introdotto nel 1974 da Codd e Raymond F. Boyce.
Cos'è 3NF?
3NF è la terza forma normale utilizzata nella normalizzazione del database relazionale. Secondo la definizione di Codd, si dice che una tabella è 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 candidata di quella tabella. Nel 1982 Carlo Zaniolo ha prodotto una definizione diversa per 3NF. Le tabelle conformi alla 3NF generalmente non contengono anomalie che si verificano durante l'inserimento, l'eliminazione o l'aggiornamento di 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 delle anomalie che non vengono affrontate dal 3NF. Una tabella si dice in BCNF, se e solo se, per ciascuna delle dipendenze della forma A → B non banali, A è una superchiave. La scomposizione di una tabella che non è nella forma normale BCNF non garantisce la produzione di tabelle nella forma BCNF (pur preservando le dipendenze che erano presenti nella tabella originale).
Qual è la differenza tra 3NF e BCNF?
Sia 3NF che BCNF sono forme normali utilizzate nei database relazionali per ridurre al minimo le ridondanze nelle tabelle. In una tabella che è nella forma normale BCNF, per ogni dipendenza funzionale non banale della forma A → B, A è una super-chiave mentre una tabella conforme a 3NF dovrebbe essere nella 2NF e ogni non-prima l'attributo dovrebbe dipendere direttamente da ogni chiave candidata di quella tabella. BCNF è considerato una forma normale più forte del 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 scomposizione di una tabella che si trova nel 3NF. Questa scomposizione comporterà ulteriori operazioni di join (o prodotti cartesiani) durante l'esecuzione di query. Ciò aumenterà il tempo di calcolo. D' altra parte, le tabelle che rispettano BCNF avrebbero meno ridondanze rispetto alle tabelle che rispettano solo 3NF. Inoltre, il più delle volte, è possibile ottenere una tabella conforme alla 3NF senza ostacolare la conservazione delle dipendenze e l'unione senza perdite. Ma questo non è sempre possibile con BCNF.