Esempio Di Normalizzazione

silvanonatalizi 4,854 views 12 slides Nov 23, 2009
Slide 1
Slide 1 of 12
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12

About This Presentation

esempio di normalizzazione


Slide Content

Esempio di
normalizzazione
Lezione per la classe VAL novembre 2009

Problema da risolvere:
memorizzazione di fatture

Metodo di soluzione
Iniziare con una lista dei campi che devono
apparire nel database
Pensa a questi campi come se appartenessero ad
un’unica tabella
Non includere i campi derivati (calcolati)
Otteniamo questa informazione dalla stampa di un
documento del quale si vogliono memorizzare i
dati.

La lista dei campi del nostro
esempio: fatture
SalesOrderNo, Date,
CustomerNo,
CustomerName,
CustomerAdd,
ClerkNo, ClerkName,
ItemNo, Description,
Qty, UnitPrice

Prima forma normale
Separa dalla tabella principale i gruppi di campi
che si ripetono (altrimenti avremmo delle celle
della tabella con più valori)
Crea una nuova tabella con questi gruppi di campi
La chiave primaria della nuova tabella è sempre
una chiave composta: di solito tra il numero del
documento e un campo che identifica
univocamente la linea che si ripete, come item
number

Prima forma normale del nostro
esempio
La nuova tabella è:
ORDINE(SalesOrderNo, ItemNo, Description, Qty,
UnitPrice)
I campi che si ripetono sono rimossi dalla tabella principale
che si riduce a:
FATTURA(SalesOrderNo, Date, CustomerNo,
CustomerName, CustomerAdd, ClerkNo,
ClerkName)
abbiamo normalizzato nella 1nf

Seconda forma normale
Occorre rimuovere le dipendenze parziali
Dipendenza funzionale il valore di un attributo di
una tabella è determinato univocamente dal valore
di un altro attributo.
Dipendenza parziale è una dipendenza
funzionale dove un attributo dipende solo da una
parte di una chiave primaria (la chiave primaria
deve essere composta)
Crea delle tabelle separate con i dati
funzionalmente dipendenti ed i loro determinanti

Seconda forma normale nel
nostro esempio
Nella tabella ORDINE(SalesOrderNo, ItemNo,
Description, Qty, UnitPrice) c’è la dipendenza
parziale ItemNo, Description
Tutti questi campi ad eccezione della chiave
primaria saranno rimossi dalla tabella originale. La
chiave primaria è lasciata come chiave esterna per
collegare le tabelle.
Pertanto la tabella ORDINE si spezza in
ITEM(ItemNo, Description) e
ORDINE(SalesOrderNo, ItemNo, Qty, UnitPrice)

Terza forma normale
Rimuove le dipendenze transitive
Dipendenza transitiva è un tipo di dipendenza
funzionale, laddove un attributo dipende da un
altro attributo che non è, né fa parte della chiave
primaria. Pertanto il suo valore è solo
indirettamente determinato dalla chiave primaria
Crea una tabella separata per questa dipendenza
funzionale. Lascia una copia del determinante
nella tabella originale come chiave esterna

Terza forma normale per il
nostro esempio
FATTURA(SalesOrderNo, Date, CustomerNo,
CustomerName, CustomerAdd, ClerkNo, ClerkName)
Abbiamo due dipendenze funzionali:
CustomerNoCustomerName, CustomerAdd
ClerkNoClerkName
I loro determinanti CustomerNo e ClerkNo non fanno parte
della chiave primaria, nè sono chiave
Creiamo le due nuove tabelle
CLIENTE(CustomerNo, CustomerName, CustomerAdd)
IMPIEGATO(ClerkNo, ClerkName)
Tutti questi campi ad eccezione delle loro chiavi primarie
sono rimossi dalla tabella FATTURA:
FATTURA(SalesOrderNo, Date, CustomerNo, ClerkNo)

LE TABELLE NORMALIZZATE
FATTURA(SalesOrderNo, Date, CustomerNo, ClerkNo)
ORDINE(SalesOrderNo, ItemNo, Qty, UnitPrice)
ITEM(ItemNo, Description)
CLIENTE(CustomerNo, CustomerName, CustomerAdd)
IMPIEGATO(ClerkNo, ClerkName)

LO SCHEMA CONCETTUALE