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

Che cos'è la normalizzazione del database?

Normalizzazione è 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.

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...

Vantaggi della forma normale

  • 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.

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!!!

Conclusione

  • 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