Esempio Di Normalizzazione

6,957 views

Published on

esempio di normalizzazione

Published in: Education, Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,957
On SlideShare
0
From Embeds
0
Number of Embeds
33
Actions
Shares
0
Downloads
67
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Esempio Di Normalizzazione

  1. 1. Esempio di normalizzazione Lezione per la classe VAL novembre 2009
  2. 2. Problema da risolvere: memorizzazione di fatture
  3. 3. Metodo di soluzione <ul><li>Iniziare con una lista dei campi che devono apparire nel database </li></ul><ul><li>Pensa a questi campi come se appartenessero ad un’unica tabella </li></ul><ul><li>Non includere i campi derivati (calcolati) </li></ul><ul><li>Otteniamo questa informazione dalla stampa di un documento del quale si vogliono memorizzare i dati. </li></ul>
  4. 4. La lista dei campi del nostro esempio: fatture <ul><li>SalesOrderNo , Date, CustomerNo, CustomerName, CustomerAdd, ClerkNo, ClerkName, ItemNo , Description, Qty, UnitPrice </li></ul>
  5. 5. Prima forma normale <ul><li>Separa dalla tabella principale i gruppi di campi che si ripetono (altrimenti avremmo delle celle della tabella con più valori) </li></ul><ul><li>Crea una nuova tabella con questi gruppi di campi </li></ul><ul><li>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 </li></ul>
  6. 6. Prima forma normale del nostro esempio <ul><ul><li>La nuova tabella è: </li></ul></ul><ul><li>ORDINE( SalesOrderNo , ItemNo , Description, Qty, UnitPrice) </li></ul><ul><ul><li>I campi che si ripetono sono rimossi dalla tabella principale che si riduce a: </li></ul></ul><ul><li>FATTURA( SalesOrderNo , Date, CustomerNo, CustomerName, CustomerAdd, ClerkNo, ClerkName) </li></ul><ul><ul><li>abbiamo normalizzato nella 1nf </li></ul></ul>
  7. 7. Seconda forma normale <ul><li>Occorre rimuovere le dipendenze parziali </li></ul><ul><li>Dipendenza funzionale  il valore di un attributo di una tabella è determinato univocamente dal valore di un altro attributo. </li></ul><ul><li>Dipendenza parziale  è una dipendenza funzionale dove un attributo dipende solo da una parte di una chiave primaria (la chiave primaria deve essere composta) </li></ul><ul><li>Crea delle tabelle separate con i dati funzionalmente dipendenti ed i loro determinanti </li></ul>
  8. 8. Seconda forma normale nel nostro esempio <ul><li>Nella tabella ORDINE( SalesOrderNo , ItemNo , Description, Qty, UnitPrice) c’è la dipendenza parziale ItemNo , Description </li></ul><ul><li>Tutti questi campi ad eccezione della chiave primaria saranno rimossi dalla tabella originale. La chiave primaria è lasciata come chiave esterna per collegare le tabelle. </li></ul><ul><li>Pertanto la tabella ORDINE si spezza in ITEM( ItemNo , Description) e ORDINE( SalesOrderNo , ItemNo , Qty, UnitPrice) </li></ul>
  9. 9. Terza forma normale <ul><li>Rimuove le dipendenze transitive </li></ul><ul><li>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 </li></ul><ul><li>Crea una tabella separata per questa dipendenza funzionale. Lascia una copia del determinante nella tabella originale come chiave esterna </li></ul>
  10. 10. Terza forma normale per il nostro esempio <ul><li>FATTURA( SalesOrderNo , Date, CustomerNo, CustomerName, CustomerAdd, ClerkNo, ClerkName) </li></ul><ul><li>Abbiamo due dipendenze funzionali: </li></ul><ul><ul><li>CustomerNo  CustomerName, CustomerAdd </li></ul></ul><ul><ul><li>ClerkNo  ClerkName </li></ul></ul><ul><li>I loro determinanti CustomerNo e ClerkNo non fanno parte della chiave primaria, nè sono chiave </li></ul><ul><li>Creiamo le due nuove tabelle </li></ul><ul><li>CLIENTE( CustomerNo , CustomerName, CustomerAdd) </li></ul><ul><li>IMPIEGATO( ClerkNo , ClerkName) </li></ul><ul><li>Tutti questi campi ad eccezione delle loro chiavi primarie sono rimossi dalla tabella FATTURA: </li></ul><ul><li>FATTURA( SalesOrderNo , Date, CustomerNo, ClerkNo) </li></ul>
  11. 11. LE TABELLE NORMALIZZATE <ul><li>FATTURA( SalesOrderNo , Date, CustomerNo, ClerkNo) </li></ul><ul><li>ORDINE( SalesOrderNo , ItemNo , Qty, UnitPrice) </li></ul><ul><li>ITEM( ItemNo , Description) </li></ul><ul><li>CLIENTE( CustomerNo , CustomerName, CustomerAdd) </li></ul><ul><li>IMPIEGATO( ClerkNo , ClerkName) </li></ul>
  12. 12. LO SCHEMA CONCETTUALE

×