Ogni campo deve contenere un
solo valore: PRIMA FORMA NORMALE,
chiamata anche FORMA ATOMICA.
Se una tabella si trova nella prima forma normale, non c’è alcuna possibilità di
suddividere ulteriormente i campi della tabella.
I motivi per cui non si devono avere campi che contengono più di un valore
risiedono nella definizione stessa dei database relazionali. Non sono tutti
semplici da capire, di seguito si elencano i principali.
|
|
I database relazionali non sono in grado di fare ricerche, efficienti, se il campo considerato contiene più di un valore all’interno. |
|
|
Le relazioni non possono esistere su campi contenenti più valori. |
Ci sono altri motivi, ma non vale
la pena di analizzarli in questa sede.
Quando si incontrano campi che contengono più valori, questi campi essere
suddivisi in modo che contengano un unico valore su ogni record.
In alcuni casi la suddivisione è semplice e naturale, in altri è molto più
complessa.
Come al solito, gli esempi valgono molto più delle parole.
ESEMPIO. Indirizzo.
La figura 6.03 visualizza una tabella Persone (con solo i campi più
interessanti).
FIG. 6.03
La tabella ha una chiave
primaria, quindi la prima regola è confermata. Il campo Indirizzo, però,
contiene più valori di “tipo” diverso. È possibile fare ricerche sul campo
indirizzo definito in questo modo, ma risultano molto lente, perché non si
devono confrontare due parole, ma intere frasi composte di più parti (via, nome
della via, numero civico e città). Per esempio, trovare tutte le persone che
abitano nella stessa città, con questa definizione del campo indirizzo, risulta
complesso. Conviene suddividere il campo indirizzo, come nelle tabelle viste
fino ad ora, figura 6.04.
FIG. 6.04
Questa è la suddivisione in cui
si trova di solito il campo indirizzo nelle tabelle. Con questa nuova
definizione è molto più veloce la ricerca delle persone che abitano nella stessa
città.
Non sempre questa è la forma migliore, dipende dalle operazioni che si devono
fare sulla base di dati. Si supponga che la tabella serva per un elenco
telefonico, in cui si effettuano ricerche anche sui nomi delle vie. Anche in
questo caso la ricerca risulterebbe lenta e macchinosa, per cui si deve
suddividere ulteriormente la tabella, come mostrato nella figura 6.05.
FIG. 6.05
Per sapere fino a dove
suddividere il campo si deve consultare l’analisi dei requisiti. In generale,
tutti i campi che servono per confronti o ricerche, nel normale utilizzo del
database, devono essere suddivisi.
ESEMPIO. Telefono.
Le stesse osservazioni fatte in precedenza volgono per il numero di telefono. Si
consideri la tabella visualizzata nella figura 6.06.
FIG. 6.06
La tabella ha una chiave
primaria, IdPersona, quindi la prima regola è assicurata. Il campo Telefono
potrebbe essere corretto per molti archivi, ma, se si vogliono fare ricerche
sulle colonne telefono, queste risulterebbero troppo lunghe e macchinose. La
figura 6.07 visualizza una possibile suddivisione del campo Telefono.
FIG. 6.07