Ogni database che si rispetti deve attenersi a determinate regole. Queste regole sono considerate implicite per chi non è alle prime armi con i database.
Gli argomenti trattati da queste regole sono di vario genere. Principalmente si cerca di dare una forma alla struttura del database. Anche per questo motivo le regole che andremo a vedere stabiliscono come debba essere progettato un database, partendo proprio dal suo oggetto più importante, ovvero le tabelle.
Le entità devono essere uniche
Ogni tabella presente in un database, deve contenere dati su di un unica entità. Possiamo definire entità qualsiasi oggetto o evento reale rappresentato nel database. Per esempio le tabelle anagrafica e ordini sono due entità di tipo oggetto, la tabella ordini o la tabella fatture, sono due entità di tipo evento.
Rendere i record unici
Le tabelle non sono altro che griglie virtuali composte da righe e colonne. Ogni tabella deve avere un indice univoco in grado di rappresentare l'univocità di quel recordset rispetto agli altri dati. Abbiamo visto che questa univocità ci viene largamente fornita dai vincoli, e più precisamente dalle chiavi primarie. Se la chiave primaria è composta da una sola colonna, la chiameremo chiave primaria semplice, altrimenti sarà una chiave primaria composta.
Una chiave primaria, per essere tale, deve attenersi a determinate regole, quali:
- Minima (il minor numero possibile di colonne)
- Stabile (che il suo valore non cambia)
- Semplice (la struttura del dato non deve essere complessa)
Questi due concetti servono come base per la stabilità del nostro database.
La normalizzazione del database
Questo insieme di regole, che andremo a vedere, vengono definite anche come processo di normalizzazione, attraverso il quale, il database amministrator, cerca di dare una struttura logica al database, applicando una serie di regole ben definite. Se dovessimo affrontare un esame, sicuramente le forme normali che dovremmo andare a esporre sarebbero ben più di 3, ma anche raggiungendo la 3a forma normale il nostro database è robusto, scalabile e duraturo.
La prima forma normale
Per raggiungere la prima forma normale, ogni tabella deve contenere esclusivamente colonne atomiche. Ovvero, ogni informazione deve risiedere in una colonna distinta. Quindi, per esempio, una colonna NomeCognome non andrebbe bene. Questo perchè nella ricerca dei dati e nella manipolazione, tutto andrebbe a complicarsi; inoltre non potremmo sfruttare l'ordinamento per singola informazione.
Infine, una tabella non deve contenere valori ripetuti, quali Email01, Email02. Al contrario dobbiamo progettare con gli indici, una tabella madre e una figlia per i molteplici valori di quel campo.
La seconda forma normale
La seconda forma normale impone che tutte le colonne che non contengono chiavi primarie, devono essere dipendenti dalla chiave primaria.
In pratica, ogni tabella deve memorizzare i dati di un solo oggetto. Es: in una tabella ordini, non avremo i campi che descrivono l'oggetto dell'ordine, ma un ID collegato alla tabella prodotti. In questo caso tutte le informazioni della tabella dipendono dalla chiave primaria e non dal nome del prodotto presente nell'ordine.
La terza forma normale
La terza forma normale è quella che consolida la struttura del database. Questa regola impone che tutte le colonne che non sono chiavi devono essere reciprocamente indipendenti. Cioè, tutte le colonne che non sono chiavi primarie non devono eseguire nessun calcolo e nessuna operazione. Ogni tabella non uniforme dovrà essere scomposta in piccole tabelle.
In questo caso risulterà forse, per il programmatore che dovrà interfacciarsi al database, più ostico prelevare le informazioni, ma per questo problema potremmo creare delle viste adeguate, sfruttando così tutta la robustezza del database creato.