Normalizzazione del database (spiegata in inglese semplice)
Introduzione alla normalizzazione del database
La normalizzazione del database è un processo utilizzato per organizzare un database in tabelle e colonne. L’idea principale con questo è che una tabella dovrebbe riguardare un argomento specifico e solo argomenti di supporto inclusi. Prendi un foglio di lavoro contenente le informazioni come esempio, in cui i dati contengono venditori e clienti che servono a diversi scopi:
- Identifica i venditori nella tua organizzazione
- Elenca tutti i clienti che la tua azienda chiama vendere un prodotto
- Identifica quali venditori chiamano clienti specifici.
Limitando una tabella a uno scopo riduci il numero di dati duplicati contenuti nel tuo database. Ciò elimina alcuni problemi derivanti dalle modifiche al database.
Per raggiungere questi obiettivi, utilizzeremo alcune regole stabilite. Quando si applicano queste regole, vengono create nuove tabelle. La progressione da indisciplinata a ottimizzata passa attraverso diverse forme normali.
Ci sono tre forme normali a cui la maggior parte dei database aderisce. Man mano che le tabelle soddisfano ogni successivo modulo di normalizzazione del database, diventano meno inclini alle anomalie di modifica del database e più focalizzate verso un unico scopo o argomento. Prima di procedere, assicurati di aver compreso la definizione di una tabella di database.
Motivi per la normalizzazione del database
Ci sono tre ragioni principali per normalizzare un database. Il primo è ridurre al minimo i dati duplicati, il secondo è ridurre al minimo o evitare problemi di modifica dei dati e il terzo è semplificare le query.
Mentre passiamo attraverso i vari stati di normalizzazione, discuteremo di come ogni modulo affronta questi problemi, ma per iniziare, esaminiamo alcuni dati che non sono stati normalizzati e discutiamo di alcune potenziali insidie.
Penso che una volta compresi i problemi, apprezzerai meglio la normalizzazione. Considera la seguente tabella:
La prima cosa da notare è che questa tabella ha molti scopi, tra cui:
- Identificazione dei venditori dell’organizzazione
- Elenco delle vendite uffici e numeri di telefono
- Associare un venditore a un ufficio vendite
- Mostrare i clienti di ogni venditore
Come DBA questo solleva una bandiera rossa. In generale mi piace vedere tabelle che hanno uno scopo. Il fatto che il tavolo serva a molti scopi introduce molte delle sfide; vale a dire, duplicazione dei dati, problemi di aggiornamento dei dati e maggiore impegno per eseguire query sui dati.
Anomalie di duplicazione e modifica dei dati
Notare che per ogni SalesPerson abbiamo elencato sia SalesOffice che OfficeNumber. Sono presenti dati del venditore duplicati. Le informazioni duplicate presentano due problemi:
- Aumenta lo spazio di archiviazione e riduce le prestazioni.
- Diventa più difficile mantenere le modifiche ai dati.
Ad esempio:
Considera se trasferiamo l’ufficio di Chicago a Evanston, Illinois. Per riflettere correttamente questo nella nostra tabella, dobbiamo aggiornare le voci di tutti i SalesPersons attualmente a Chicago. La nostra tabella è un piccolo esempio, ma puoi vedere se fosse più grande, che potenzialmente questo potrebbe comportare centinaia di aggiornamenti.
Queste situazioni sono anomalie di modifica. La normalizzazione del database li risolve. Possono verificarsi tre anomalie di modifica:
Inserisci anomalia
Ci sono fatti che non possiamo registrare finché non conosciamo le informazioni per l’intera riga. Nel nostro esempio non possiamo registrare un nuovo ufficio vendite finché non conosciamo anche l’addetto alle vendite. Perché? Perché per creare il record, dobbiamo fornire una chiave primaria. Nel nostro caso questo è EmployeeID.
Aggiorna anomalia
In questo caso abbiamo le stesse informazioni in più righe. Ad esempio, se il numero dell’ufficio cambia, sono necessari più aggiornamenti. Se non aggiorniamo tutte le righe, vengono visualizzate delle incongruenze.
Anomalia di eliminazione
L’eliminazione di una riga causa la rimozione di più di un insieme di fatti. Ad esempio, se John Hunt si ritira, l’eliminazione di quella riga ci fa perdere le informazioni sull’ufficio di New York.
Problemi di ricerca e ordinamento
L’ultimo motivo che prenderemo in considerazione è rendere più semplice la ricerca e l’ordinamento dei dati. Nella tabella SalesStaff, se desideri cercare un cliente specifico come Ford, dovresti scrivere una query come
SELECT SalesOfficeFROM SalesStaffWHERE Customer1 = ‘Ford’ OR Customer2 = ‘Ford’ OR Customer3 = ‘Ford’
Chiaramente se il cliente fosse in qualche modo in una colonna la nostra query sarebbe più semplice. Inoltre, considera se desideri eseguire una query e ordinare per cliente.
La nostra tabella attuale lo rende difficile. Dovresti usare tre query UNION separate!È possibile eliminare o ridurre queste anomalie separando i dati in tabelle diverse. Questo inserisce i dati in tabelle che servono a un unico scopo.
Il processo per riprogettare la tabella è la normalizzazione del database.
Definizione di normalizzazione del database
Esistono tre forme comuni di normalizzazione del database: 1a, 2a e 3a forma normale. Sono anche abbreviati rispettivamente come 1NF, 2NF e 3NF.
Ci sono diversi moduli aggiuntivi, come BCNF, ma considero quelli avanzati e non troppo necessari per imparare all’inizio.
Le forme sono progressive, il che significa che per qualificarsi per la terza forma normale una tabella deve prima soddisfare le regole per la seconda forma normale e la seconda forma normale deve aderire a quelle per la prima forma normale. Prima di discutere le varie forme e regole in dettaglio, riassumiamo le varie forme:
- Prima forma normale: le informazioni sono memorizzate in una tabella relazionale con ogni colonna contenente valori atomici. Non ci sono gruppi di colonne ripetuti.
- Seconda forma normale: la tabella è nella prima forma normale e tutte le colonne dipendono dalla chiave primaria della tabella.
- Terza forma normale: la tabella è nella seconda forma normale e tutte le sue colonne non dipendono transitivamente dalla chiave primaria
Se le regole non hanno molto senso, non preoccuparti. Ho collegato l’articolo per aiutarti a capirli.
Per ora è importante capire che ci sono tre regole per la normalizzazione del database che si sovrappongono. Alcune persone fanno sembrare complicata la normalizzazione del database.
ma non è necessario che lo sia e, una volta compresa, diventa intuitiva.