Cos'è la normalizzazione?
La 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 utilizzando le 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 ha proposto la teoria della normalizzazione dei dati con l'introduzione della prima forma normale, e ha continuato ad estendere la teoria con la seconda e la terza forma normale. Successivamente si è unito a Raymond F. Boyce per sviluppare la teoria della forma normale di Boyce-Codd.
Forme normali del database
Ecco un elenco di forme normali
- 1NF (prima forma normale)
- 2NF (seconda forma normale)
- 3NF (Terza forma normale)
- BCNF (forma normale di Boyce-Codd)
- 4NF (Quarta forma normale)
- 5NF (quinta forma normale)
- 6NF (sesta forma normale)
La teoria della normalizzazione dei dati in SQL Server è ancora in fase di ulteriore sviluppo. Ad esempio, ci sono discussioni anche sulla sesta forma normale. Tuttavia, nella maggior parte delle applicazioni pratiche, la normalizzazione dà il meglio di sé nella 3a forma normale . L'evoluzione delle teorie di normalizzazione SQL è illustrata di seguito:

Normalizzazione del database con esempi
L' esempio di normalizzazione del database può essere facilmente compreso con l'aiuto di un caso di studio. Supponiamo che una libreria video mantenga un database di film noleggiati. Senza alcuna normalizzazione nel database, tutte le informazioni vengono memorizzate in una tabella come mostrato di seguito. Comprendiamo la normalizzazione nel database con l'esempio di tabelle:
Qui puoi vedere che la colonna Film noleggiati ha più valori. Ora passiamo alle prime forme normali:
Regole 1NF (prima forma normale)
- Ogni cella della tabella dovrebbe contenere un singolo valore.
- Ogni record deve essere unico.
La tabella sopra in 1NF-
Esempio 1NF
Prima di procedere capiamo alcune cose:
Cos'è una CHIAVE?
Una CHIAVE è un valore utilizzato per identificare un record in una tabella in modo univoco. Una CHIAVE può essere una singola colonna o una combinazione di più colonne
Nota: le colonne in una tabella che NON vengono utilizzate per identificare un record in modo univoco sono chiamate colonne non chiave.
Cos'è una chiave primaria?

Un valore primario è un valore di una singola colonna utilizzato per identificare un record di database in modo univoco.
Ha i seguenti attributi
- Una 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 utilizzate per identificare un record in modo univoco
Nel nostro database abbiamo due persone con lo stesso nome Robert Phil, ma vivono in luoghi diversi.
Pertanto, abbiamo bisogno sia del nome completo che dell'indirizzo per identificare un record in modo univoco. Questa è una chiave composta.
Passiamo alla seconda forma normale 2NF
Regole 2NF (Seconda forma normale)
- Regola 1 - Sii in 1NF
- Regola 2- Chiave primaria a colonna singola
È chiaro che non possiamo andare avanti per creare il nostro semplice database nella seconda forma di normalizzazione a meno che non partizioniamo la tabella sopra.
Abbiamo diviso la nostra tabella 1NF in due tabelle. Tabella 1 e Tabella 2. La tabella 1 contiene le 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
La chiave esterna fa riferimento alla chiave primaria di un'altra tabella! Aiuta a connettere i tuoi tavoli
- Una chiave esterna può avere un nome diverso dalla sua chiave primaria
- Assicura che le righe in una tabella abbiano righe corrispondenti in un'altra
- A differenza della chiave primaria, non devono essere univoci. Molto spesso non lo sono
- Le chiavi esterne possono essere nulle anche se le chiavi primarie no
Perché hai bisogno di una chiave esterna?
Supponiamo che un principiante inserisca un record nella Tabella B come
Sarai in grado di inserire solo valori nella tua chiave esterna che esistono nella chiave univoca nella tabella padre. Questo aiuta nell'integrità referenziale.
Il problema precedente può essere superato dichiarando l'ID di appartenenza da Table2 come chiave esterna dell'ID di appartenenza da Table1
Ora, se qualcuno cerca di inserire un valore nel campo ID appartenenza che non esiste nella tabella genitore, verrà mostrato un errore!
Cosa sono le dipendenze funzionali transitive?
Una dipendenza funzionale transitiva è quando si modifica una colonna non chiave, potrebbe causare la modifica di una qualsiasi delle altre colonne non chiave
Considera la tabella 1. La modifica della colonna non chiave Full Name può cambiare il titolo.
Passiamo a 3NF
Regole 3NF (Terza Forma Normale)
- Regola 1 - Sii 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:
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 dell'appellativo è la chiave primaria e nella tabella 1 l'ID dell'appellativo è estraneo alla chiave primaria nella tabella 3
Ora il nostro piccolo esempio è a un livello che non può essere ulteriormente scomposto per ottenere forme normali di normalizzazione superiori. In effetti, è già in forme di normalizzazione più elevate. In database complessi sono normalmente necessari sforzi separati per passare ai livelli successivi di normalizzazione dei dati. Tuttavia, discuteremo brevemente i prossimi livelli di normalizzazione nel seguito.
BCNF (forma normale di Boyce-Codd)
Anche quando un database è in 3 ° forma normale, si verificherebbero comunque delle anomalie se avesse più di una chiave candidata .
A volte BCNF è indicato anche come 3.5 Forma normale.
Regole 4NF (quarta forma normale)
Se nessuna istanza di tabella di database contiene due o più dati indipendenti e multivalore che descrivono l'entità rilevante, allora è in 4a forma normale.
Regole 5NF (quinta forma normale)
Una tabella è in 5 ° forma normale solo se è in 4NF e non può essere scomposto in un qualsiasi numero di tavoli più piccoli senza perdita di dati.
6NF (sesta forma normale) proposta
La sesta forma normale non è standardizzata, tuttavia è da tempo discussa da esperti di database. Si spera di avere una definizione chiara e standardizzata per la sesta forma normale nel prossimo futuro ...
Questo è tutto per la normalizzazione SQL !!!
Sommario
- La progettazione di database è fondamentale per l'implementazione di successo di un sistema di gestione di database che soddisfi i requisiti di dati di un sistema aziendale.
- Il processo di normalizzazione in DBMS aiuta a produrre sistemi di database convenienti 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.
- Una chiave primaria identifica in modo univoco i record in una tabella e non può essere nulla
- Una chiave esterna aiuta a connettere la tabella e fa riferimento a una chiave primaria