esempio di normalizzazione

12
Esempio di normalizzazione Lezione per la classe VAL novembre 2009

Upload: silvano-natalizi-itis-alessandro-volta-perugia

Post on 05-Dec-2014

7.334 views

Category:

Education


0 download

DESCRIPTION

esempio di normalizzazione

TRANSCRIPT

Page 1: Esempio Di Normalizzazione

Esempio di normalizzazione

Lezione per la classe VAL novembre 2009

Page 2: Esempio Di Normalizzazione

Problema da risolvere: memorizzazione di fatture

Page 3: Esempio Di Normalizzazione

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.

Page 4: Esempio Di Normalizzazione

La lista dei campi del nostro esempio: fatture

SalesOrderNo, Date, CustomerNo, CustomerName, CustomerAdd, ClerkNo, ClerkName, ItemNo, Description, Qty, UnitPrice

Page 5: Esempio Di Normalizzazione

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 campiLa 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

Page 6: Esempio Di Normalizzazione

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

Page 7: Esempio Di Normalizzazione

Seconda forma normale

Occorre rimuovere le dipendenze parzialiDipendenza 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

Page 8: Esempio Di Normalizzazione

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)

Page 9: Esempio Di Normalizzazione

Terza forma normale

Rimuove le dipendenze transitiveDipendenza 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

Page 10: Esempio Di Normalizzazione

Terza forma normale per il nostro esempio

FATTURA(SalesOrderNo, Date, CustomerNo, CustomerName, CustomerAdd, ClerkNo, ClerkName)

Abbiamo due dipendenze funzionali:CustomerNoCustomerName, CustomerAddClerkNoClerkName

I loro determinanti CustomerNo e ClerkNo non fanno parte della chiave primaria, nè sono chiave

Creiamo le due nuove tabelleCLIENTE(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)

Page 11: Esempio Di Normalizzazione

LE TABELLE NORMALIZZATE

FATTURA(SalesOrderNo, Date, CustomerNo, ClerkNo)

ORDINE(SalesOrderNo, ItemNo, Qty, UnitPrice)

ITEM(ItemNo, Description)

CLIENTE(CustomerNo, CustomerName, CustomerAdd)

IMPIEGATO(ClerkNo, ClerkName)

Page 12: Esempio Di Normalizzazione

LO SCHEMA CONCETTUALE