Normalizzazione (informatica): differenze tra le versioni

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Contenuto cancellato Contenuto aggiunto
Semplificata trattazione, rimossi esempi poco utili e non consistenti
Riga 16: Riga 16:
Si dice che una relazione è in 2NF se e solo se:
Si dice che una relazione è in 2NF se e solo se:
* soddisfa i requisiti della 1NF;
* soddisfa i requisiti della 1NF;
* tutti gli attributi non-chiave presentano una [[dipendenza funzionale]] dalla chiave nella sua interezza, ovvero non dipendono solo da una parte della chiave.
* tutti gli attributi non-chiave presentano una [[dipendenza funzionale]] dalla chiave nella sua interezza, ovvero non dipendono solo da una parte della chiave. La dipendenza funziona può essere anche transitiva ( es. A->B e B->C ed A è chiave, allora C dipende in maniera piena dalla chiave A anche se transitivamente)


; Terza forma normale (3NF)
; Terza forma normale (3NF)
Si dice che una relazione è in 3NF se e solo se:
Si dice che una relazione è in 3NF se e solo se:
* soddisfa i requisiti della 2NF;
* soddisfa i requisiti della 2NF;
* tutti gli attributi non-chiave dipendono soltanto dalla chiave, ovvero non esistono dipendenze funzionali tra attributi non-chiave.
* tutti gli attributi non-chiave dipendono direttamente dalla chiave, ovvero non esistono dipendenze transitive tra gli attributi non-chiave e la chiave.


; Forma normale di Boyce e Codd (BCNF)
; Forma normale di Boyce e Codd (BCNF)

Versione delle 17:20, 12 mag 2024

In informatica la normalizzazione è un procedimento volto alla mitigazione di una serie di difetti sistematici di una base di dati relazionale.

Esistono vari livelli di normalizzazione, via via più stringenti, che se applicati correttamente portano la base di dati in una delle cosiddette "forme normali". Ovvero uno stato in cui risultano rispettati una precisa serie di vincoli di integrità, che garantiscono l'assenza, dimostrabile formalmente, di determinate classi di problemi.

Forme normali

Si può dire che una base di dati si trova in una data forma normale quando tutte le relazioni ivi contenute soddisfano i requisiti della forma normale, ergo esse stesse si trovano in forma normale. Di seguito vengono indicate le definizioni delle forme normali per le relazioni.

Prima forma normale (1NF)

Si dice che una una relazione è in 1NF se e solo se:

  • ogni attributo è definito su un dominio con valori atomici, ovvero indivisibili;
  • ogni istanza di attributo contiene un singolo valore del dominio di riferimento.
Seconda forma normale (2NF)

Si dice che una relazione è in 2NF se e solo se:

  • soddisfa i requisiti della 1NF;
  • tutti gli attributi non-chiave presentano una dipendenza funzionale dalla chiave nella sua interezza, ovvero non dipendono solo da una parte della chiave. La dipendenza funziona può essere anche transitiva ( es. A->B e B->C ed A è chiave, allora C dipende in maniera piena dalla chiave A anche se transitivamente)
Terza forma normale (3NF)

Si dice che una relazione è in 3NF se e solo se:

  • soddisfa i requisiti della 2NF;
  • tutti gli attributi non-chiave dipendono direttamente dalla chiave, ovvero non esistono dipendenze transitive tra gli attributi non-chiave e la chiave.
Forma normale di Boyce e Codd (BCNF)

Si dice che una relazione è in BCNF se e solo se:

  • soddisfa i requisiti della 3NF;
  • per ogni dipendenza funzionale non banale , è una superchiave.

Limiti di 4NF e 5NF

La quarta e quinta forma normale, in realtà, raramente vengono utilizzate, in quanto ad un incremento di rigore nell'eliminazione della ridondanza corrisponde un degrado delle prestazioni (query di selezione o, peggio, modifica dei dati, richiedono molto più tempo per l'esecuzione).

Problemi degli schemi non-normali

Metodologie di normalizzazione

Decomposizione delle relazioni

Questo processo si fonda su un semplice criterio: se una relazione presenta più concetti tra loro indipendenti, la si decompone in relazioni più piccole, una per ogni concetto. Questo tipo di processo non è sempre applicabile in tutte le tabelle, dato che in alcuni casi potrebbe comportare una perdita d'informazioni.

Una decomposizione dovrebbe sempre soddisfare due proprietà:

  • la decomposizione senza perdita, che garantisce la ricostruzione delle informazioni originarie
  • la conservazione delle dipendenze, che garantisce il mantenimento dei vincoli di integrità originari.

Per "decomposizione senza perdita" si intende l'atto della manipolazione di una relazione R volta ad ottenere (eventualmente) due o più relazioni (ad esempio R1 e R2) che oltre a conservare le dipendenze funzionali verificano anche la seguente condizione:

Teorema: Sia data una relazione R(X), con X insieme degli attributi di R, e due sottoinsiemi A, B di X tali che A unito B coincide con X; siano inoltre R1 e R2 due relazioni rispettivamente su A e su B. Allora è condizione sufficiente affinché la decomposizione su A e B sia senza perdita se, detto C l'insieme intersezione tra A e B, è superchiave per R1(A) o R2(B).

Bibliografia

  • Paolo Atzeni, Stefano Ceri, Piero Fraternali, Stefano Paraboschi e Riccardo Torlone, Basi di dati, 5ª ed., Milano, McGraw-Hill, 2018, ISBN 978-88-386-9445-5.

Voci correlate

Collegamenti esterni

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica