Normalizzazione DBMS: esempio di database 1NF, 2NF, 3NF

Normalizzazione DBMS

La normalizzazione in breve

La normalizzazione รจ il processo di strutturazione di un database per ridurre la ridondanza e migliorare la coerenza. In parole povere, suddivide tabelle di grandi dimensioni e disordinate in tabelle piรน piccole e ben organizzate. Questo garantisce che i dati siano archiviati in modo logico, rendendo i database efficienti, facili da gestire e privi di duplicazioni o errori.

Che cos'รจ la normalizzazione del database?

Normalizzazione del database รจ una tecnica di progettazione di database che riduce la ridondanza dei dati ed elimina caratteristiche indesiderate come anomalie di inserimento, aggiornamento e cancellazione. Le regole di normalizzazione dividono le tabelle piรน grandi in tabelle piรน piccole e le collegano tramite relazioni. Lo scopo della normalizzazione in SQL รจ eliminare i dati ridondanti (ripetitivi) e garantire che i dati vengano archiviati in modo logico.

L'inventore del modello relazionale Edgar Codd propose la teoria della normalizzazione dei dati con l'introduzione della Prima Forma Normale, e continuรฒ ad estendere la teoria con la Seconda e la Terza Forma Normale. Later si unรฌ a Raymond F. Boyce per sviluppare la teoria della forma normale di Boyce-Codd.

Perchรฉ abbiamo bisogno della normalizzazione?

Senza normalizzazione, i database diventano rapidamente incoerenti e ridondanti. Problemi come anomalie di inserimento (non รจ possibile aggiungere record incompleti), anomalie di aggiornamento (i cambiamenti in un posto non si riflettono ovunque), e anomalie di cancellazione (la rimozione accidentale di dati cancella informazioni preziose) si verificano spesso. La normalizzazione elimina questi problemi, garantendo l'integritร  dei dati, riducendo le duplicazioni e semplificando la gestione del database.

Quali sono i tipi di forme normali nei DBMS?

Ecco un elenco di forme normali in SQL:

  • 1NF (Prima Forma Normale): Assicura che la tabella del database sia organizzata in modo tale che ogni colonna contenga valori atomici (indivisibili) e ogni record sia univoco. Ciรฒ elimina i gruppi ripetuti, strutturando cosรฌ i dati in tabelle e colonne.
  • 2NF (seconda forma normale): Si basa su 1NF di Dobbiamo rimuovere i dati ridondanti da una tabella applicata a piรน righe. e posizionandoli in tabelle separate. Richiede che tutti gli attributi non chiave siano pienamente funzionali sulla chiave primaria.
  • 3NF (terza forma normale): Estende 2NF garantendo che tutti gli attributi non chiave non solo siano pienamente funzionali sulla chiave primaria ma anche indipendenti l'uno dall'altro. Ciรฒ elimina la dipendenza transitiva.
  • BCNF (forma normale di Boyce-Codd): Un perfezionamento di 3NF che risolve le anomalie non gestite da 3NF. Richiede che ogni determinante sia una chiave candidata, garantendo unโ€™aderenza ancora piรน rigorosa alle regole di normalizzazione.
  • 4NF (quarta forma normale): Risolve le dipendenze multivalore. Garantisce che non siano presenti piรน fatti multivalore indipendenti su un'entitร  in un record.
  • 5NF (quinta forma normale): Conosciuto anche come โ€œProjection-Join Normal Formโ€ (PJNF), riguarda la ricostruzione di informazioni da pezzi di dati piรน piccoli e disposti in modo diverso.
  • 6NF (Sesta forma normale): Teorico e non ampiamente implementato. Si occupa dei dati temporali (gestendo le modifiche nel tempo) scomponendo ulteriormente le tabelle per eliminare tutta la ridondanza non temporale.

La teoria della normalizzazione dei dati in MySQL il server รจ ancora in fase di ulteriore sviluppo. Ad esempio ci sono discussioni anche sul 6th Forma normale. Tuttavia, nella maggior parte delle applicazioni pratiche, la normalizzazione raggiunge il suo meglio in 3rd Forma normale. L'evoluzione della normalizzazione nelle teorie SQL รจ illustrata di seguito:

Moduli normali del database
Moduli normali del database

Normalizzazione del database con esempi

Banca Dati Esempio di normalizzazione puรฒ essere facilmente compreso con lโ€™aiuto di un caso di studio. Supponiamo che una videoteca mantenga un database di film noleggiati. Senza alcuna normalizzazione nel database, tutte le informazioni vengono archiviate in un'unica tabella come mostrato di seguito. Comprendiamo il database di normalizzazione con un esempio di normalizzazione con soluzione:

Normalizzazione del database con esempio

Ecco, vedi La colonna Film noleggiati ha piรน valori. Passiamo ora alle prime forme normali:

Prima forma normale (1NF)

  • Ogni cella della tabella deve contenere un singolo valore.
  • Ogni record deve essere unico.

La tabella sopra in 1NF-

Esempio 1NF

Regole 1NF
Esempio di 1NF nel DBMS

Prima di procedere, capiamo alcune cose:

Cos'รจ una CHIAVE in SQL

A CHIAVE in SQL รจ un valore utilizzato per identificare in modo univoco i record in una tabella. Una CHIAVE SQL รจ una singola colonna o una combinazione di piรน colonne utilizzata per identificare in modo univoco righe o tuple nella tabella. La chiave SQL viene utilizzata per identificare informazioni duplicate e aiuta anche a stabilire una relazione tra piรน tabelle nel database.

Nota: le colonne di una tabella che NON vengono utilizzate per identificare un record in modo univoco sono chiamate colonne non chiave.

Cos'รจ una chiave primaria?

Chiave primaria
Chiave primaria nel DBMS

Un valore primario รจ un valore di colonna singola utilizzato per identificare in modo univoco un record del database.

Ha i seguenti attributi

  • A chiave primaria non puรฒ essere NULL
  • Un valore di chiave primaria deve essere univoco
  • I valori della chiave primaria dovrebbero essere modificati raramente
  • Alla chiave primaria deve essere assegnato un valore quando viene inserito un nuovo record.

Cos'รจ la chiave composita?

Una chiave composita รจ una chiave primaria composta da piรน colonne utilizzata per identificare un record in modo univoco

Nel nostro database abbiamo due persone con lo stesso nome Robert Phil, ma vivono in luoghi diversi.

Chiave composita nel database
Chiave composita nel database

Pertanto, sono necessari sia il nome completo che l'indirizzo per identificare un record in modo univoco. Questa รจ una chiave composita.

Passiamo alla seconda forma normale 2NF

Seconda forma normale (2NF)

  • Regola 1- Essere in 1NF
  • Regola 2: Chiave primaria a colonna singola che non dipende funzionalmente da alcun sottoinsieme della relazione chiave candidata

รˆ chiaro che non possiamo andare avanti per creare il nostro semplice database in 2nd Modulo di normalizzazione a meno che non partizioniamo la tabella sopra.

Regole 2NF

Regole 2NF

Abbiamo diviso la nostra tabella 1NF in due tabelle, vale a dire Tabella 1 e Tabella 2. La Tabella 1 contiene informazioni sui membri. La Tabella 2 contiene informazioni sui film noleggiati.

Abbiamo introdotto una nuova colonna chiamata Membership_id che รจ la chiave primaria per la tabella 1. I record possono essere identificati in modo univoco nella Tabella 1 utilizzando l'ID di appartenenza

Database โ€“ Chiave esterna

Nella tabella 2, Membership_ID รจ la chiave esterna

Database โ€“ Chiave esterna

Database โ€“ Chiave esterna
Chiave esterna nel DBMS

La chiave esterna fa riferimento alla chiave primaria di un'altra tabella! Aiuta a connettere le tue tabelle

  • Una chiave esterna puรฒ avere un nome diverso dalla sua chiave primaria
  • Garantisce che le righe in una tabella abbiano righe corrispondenti in un'altra
  • A differenza della chiave primaria, non devono essere univoche. Molto spesso non lo sono
  • Le chiavi esterne possono essere nulle anche se le chiavi primarie no

Database โ€“ Chiave esterna

Perchรฉ hai bisogno di una chiave esterna?

Supponiamo che un principiante inserisca un record nella Tabella B come

Perchรฉ hai bisogno di una chiave esterna

Potrai inserire nella chiave esterna solo i valori che esistono nella chiave univoca nella tabella padre. Questo aiuta nell'integritร  referenziale.

Il problema di cui sopra puรฒ essere superato dichiarando l'ID di appartenenza dalla Tabella 2 come chiave esterna dell'ID di appartenenza dalla Tabella 1

Ora, se qualcuno tenta di inserire un valore nel campo ID appartenenza che non esiste nella tabella genitore, verrร  mostrato un errore!

Cosa sono le dipendenze funzionali transitive?

Un transitivo dipendenza funzionale รจ quando si modifica una colonna non chiave, potrebbe causare la modifica di qualsiasi altra colonna non chiave

Considera la tabella 1. La modifica della colonna non chiave Nome completo puรฒ modificare il saluto.

Dipendenze funzionali transitive

Passiamo al 3NF

Terza forma normale (3NF)

  • Regola 1- Essere in 2NF
  • Regola 2- Non ha dipendenze funzionali transitive

Per spostare la nostra tabella 2NF in 3NF, dobbiamo nuovamente dividere la nostra tabella.

Esempio 3NF

Di seguito รจ riportato un esempio 3NF nel database SQL:

Esempio 3NF

Esempio 3NF

Esempio 3NF

Abbiamo nuovamente diviso le nostre tabelle e creato una nuova tabella che memorizza i Saluti.

Non ci sono dipendenze funzionali transitive e quindi la nostra tabella รจ in 3NF

Nella Tabella 3 l'ID del saluto รจ la chiave primaria e nella Tabella 1 l'ID del saluto รจ estraneo alla chiave primaria nella Tabella 3

Ora il nostro piccolo esempio รจ a un livello che non puรฒ essere ulteriormente scomposto per ottenere tipi di normalizzazione di forma normale piรน elevati in DBMS. Infatti, รจ giร  in forme di normalizzazione piรน elevate. Sforzi separati per passare ai livelli successivi di normalizzazione dei dati sono normalmente necessari in database complessi. Tuttavia, discuteremo brevemente i livelli successivi di normalizzazione in DBMS di seguito.

Forma normale di Boyce-Codd (BCNF)

Anche quando un database รจ in 3rd Forma normale, tuttavia potrebbero verificarsi anomalie se ne avesse piรน di una Candidato Chiave.

A volte viene indicato anche come BCNF 3.5 Forma normale.

Quarta forma normale (4NF)

Se nessuna istanza della tabella del database contiene due o piรน dati indipendenti e multivalore che descrivono l'entitร  rilevante, allora รจ in 4th Forma normale.

Quinta forma normale (5NF)

Una tabella รจ in 5th Forma normale solo se รจ in 4NF e non puรฒ essere scomposta in un numero qualsiasi di tabelle piรน piccole senza perdita di dati.

Proposta la sesta forma normale (6NF).

6th La forma normale non รจ standardizzata, tuttavia รจ da tempo oggetto di discussione tra gli esperti di database. Si spera di avere una definizione chiara e standardizzata per 6th La Forma Normale nel prossimo futuro...

Quali sono i vantaggi della normalizzazione?

  • Migliora la coerenza dei dati: La normalizzazione garantisce che ogni dato venga archiviato in un solo posto, riducendo le possibilitร  di dati incoerenti. Quando i dati vengono aggiornati, devono essere aggiornati solo in un unico posto, garantendo la coerenza.
  • Ridurre la ridondanza dei dati: La normalizzazione aiuta a eliminare i dati duplicati dividendoli in piรน tabelle correlate. Ciรฒ puรฒ risparmiare spazio di archiviazione e anche rendere il database piรน efficiente.
  • Migliora le prestazioni delle query: I database normalizzati sono spesso piรน facili da interrogare. Poichรฉ i dati sono organizzati in modo logico, le query possono essere ottimizzate per essere eseguite piรน velocemente.
  • Rendi i dati piรน significativi: La normalizzazione implica il raggruppamento dei dati in un modo che abbia senso e sia intuitivo. Ciรฒ puรฒ rendere il database piรน semplice da comprendere e utilizzare, soprattutto per le persone che non hanno progettato il database.
  • Ridurre le possibilitร  di anomalie: Le anomalie sono problemi che possono verificarsi durante l'aggiunta, l'aggiornamento o l'eliminazione dei dati. La normalizzazione puรฒ ridurre le possibilitร  che si verifichino queste anomalie garantendo che i dati siano organizzati logicamente.

Quali sono gli svantaggi della normalizzazione?

  • Maggiore complessitร : La normalizzazione puรฒ portare a relazioni complesse. Un numero elevato di tabelle con chiavi esterne puรฒ essere difficile da gestire, portando a confusione.
  • Flessibilitร  ridotta: A causa delle rigide regole di normalizzazione, potrebbe esserci meno flessibilitร  nell'archiviazione dei dati che non aderiscono a queste regole.
  • Maggiori requisiti di archiviazione: Sebbene la normalizzazione riduca la ridondanza, potrebbe essere necessario allocare piรน spazio di archiviazione per ospitare tabelle e indici aggiuntivi.
  • Prestazioni generali: Unire piรน tabelle puรฒ essere costoso in termini di prestazioni. Piรน i dati sono normalizzati, piรน saranno necessarie unioni, il che puรฒ rallentare i tempi di recupero dei dati.
  • Perdita del contesto dei dati: La normalizzazione suddivide i dati in tabelle separate, il che puรฒ portare a una perdita di contesto aziendale. L'esame delle tabelle correlate รจ necessario per comprendere il contesto di un dato.
  • Necessitร  di conoscenze specialistiche: L'implementazione di un database normalizzato richiede una profonda comprensione dei dati, delle relazioni tra i dati e delle regole di normalizzazione. Ciรฒ richiede conoscenze specialistiche e puรฒ richiedere molto tempo.

Questo รจ tutto per la normalizzazione SQL!!!

Domande Frequenti

La normalizzazione in un DBMS รจ un processo di organizzazione dei dati in un database per ridurre la ridondanza e migliorarne l'integritร . Implica la suddivisione di tabelle di grandi dimensioni in tabelle piรน piccole e correlate e la definizione delle relazioni tra esse. Ciรฒ garantisce che i dati siano archiviati in modo logico e coerente, rendendo piรน efficienti aggiornamenti, inserimenti ed eliminazioni e prevenendo al contempo anomalie.

La normalizzazione dei dati struttura le tabelle del database per evitare ripetizioni. Ad esempio, invece di memorizzare l'indirizzo di un cliente in ogni record di ordine, la normalizzazione inserisce i dettagli del cliente in una tabella "Cliente" separata, collegata da una chiave. Questo riduce la ridondanza: se un indirizzo cambia, viene aggiornato una sola volta. Il risultato รจ un database piรน pulito ed efficiente, con dati accurati e coerenti.

Lo scopo della normalizzazione รจ eliminare i dati ridondanti, ridurre al minimo le anomalie e garantire l'efficienza del database. Semplifica la manutenzione mantenendo organizzate le informazioni correlate, riduce gli sprechi di spazio di archiviazione e garantisce la coerenza dei dati. La normalizzazione migliora anche le prestazioni delle query strutturando i dati in modo logico, consentendo a sviluppatori e utenti di accedere a informazioni accurate senza dover gestire duplicazioni o voci in conflitto.

La terza forma normale (3NF) รจ una fase di normalizzazione che garantisce che ogni attributo non chiave dipenda solo dalla chiave primaria e non da altri attributi non chiave. Ad esempio, in una tabella dei dipendenti, "Nome reparto" dovrebbe essere separato in una tabella di reparto anzichรฉ basarsi su "ID reparto". Questo evita dipendenze transitive, garantendo accuratezza, coerenza ed efficienza nella gestione dei dati.

Sintesi

  • Progettazione di banche dati รจ fondamentale per il successo dell'implementazione di un sistema di gestione del database che soddisfi i requisiti di dati di un sistema aziendale.
  • La normalizzazione nel DBMS รจ un processo che aiuta a produrre sistemi di database economicamente vantaggiosi e dotati di modelli di sicurezza migliori.
  • Le dipendenze funzionali sono una componente molto importante del processo di normalizzazione dei dati
  • La maggior parte dei sistemi di database sono database normalizzati fino alla terza forma normale in DBMS.
  • Una chiave primaria identifica in modo univoco un record in una tabella e non puรฒ essere nulla
  • Una chiave esterna aiuta a connettere la tabella e fa riferimento a una chiave primaria

Riassumi questo post con: