Your SlideShare is downloading. ×
Lezione Liste Database
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Lezione Liste Database

301

Published on

Le liste di dati presentano problemi quando vengono aggiornate. Una possibile soluzione è quella di spezzarle in più tabelle.

Le liste di dati presentano problemi quando vengono aggiornate. Una possibile soluzione è quella di spezzarle in più tabelle.

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

  • Be the first to like this

No Downloads
Views
Total Views
301
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Lezione sullo schema logico del database I lezione Le liste e i loro problemi, soluzioni
  • 2. Una semplice lista
    • La figura mostra una semplice lista di studenti e delle loro email, memorizzata in un foglio elettronico
    Possiamo ordinarla alfabeticamente per nome o email, modificare i suoi valori a nostro piacimento aggiungere i dati di un nuovo studente, eliminare i dati di uno studente.
  • 3. Una lista più complicata
    • Aggiungiamo, alla lista degi studenti, due nuove colonne con i nomi dei loro tutor(adviser) e la email di costoro
  • 4. Problemi di aggiornamento
    • Se eliminiamo i dati dello studente Chip Marino, eliminando la sesta riga, rimoviamo anche i dati del tutor Tran.
    • Analogamente, l’aggiornamento di un valore di questa lista dà inaspettate conseguenze. Se per esempio cambiamo l’email di adviser nell’ottava riga, otteniamo dei dati inconsistenti.
    • Dopo la variazione, la quinta riga indica una email del prof. Taing diversa da quella dell’ottava riga dello stesso prof. Taing. E’ il medesimo professore ? Da questa lista non possiamo dire se c’è un solo prof. Taing con due indirizzi email inconsistenti, oppure ci sono due prof. Taing con differenti email!
    • Abbiamo aggiunto confusione ed incertezza nei dati
  • 5. Inserimento di una riga incompleta
    • Infine, che succede se aggiungiamo i dati di un professore che non ha studenti da seguire ? Ad esempio il Prof. Greene non ha allievi, ma vogliamo comunque memorizzare la sua email.
    • A tale scopo dobbiamo inserire una riga con valori incompleti, chiamati valori nulli (null values).
  • 6. I tre problemi
  • 7. Che cosa è accaduto in questi due esempi?
    • Siamo partiti da una lista funzionante con due sole colonne.
    • Abbiamo aggiunto altre due colonne e ci siamo inguaiati.
    • Dipende dal fatto che la nuova lista ha 4 colonne anziché 2?
  • 8. Esaminiamo quest’altra lista Ci sono problemi di aggiornamento ?
  • 9. Quale è la differenza tra le due liste ?
    • Le due liste hanno entrambe 4 colonne, ma quella dell’adviser dà problemi in fase di modifica, invece quella della pensione (dorm) non dà problemi
    • Nella lista Dorm si possono eliminare i dati dello studente Chip Marino e perdere i dati solo di quello studente. Non ci sono inattese conseguenze
    • Possiamo modificare il valore di Dorm per lo studente Tzu Lai senza introdurre inconsistenze.
    • Infine possiamo aggiungere un nuovo studente Garret Ingram senza null values.
  • 10. Differenza essenziale tra le due liste
    • La differenza essenziale tra le due liste è che lo Studente con Dor ha a che fare con un’unica cosa. Tutti i dati di questa lista si riferiscono ad uno studente.
    • Al contrario la lista con studente e adviser si riferisce agli studenti e agli advisers
    • In generale ci sono dei problemi, quando una lista ha dei dati di due o più cose diverse
  • 11. Lista con dati di tre cose diverse
  • 12. I problemi peggiorano aumentando il numero delle cose di una lista
    • Per rinforzare questa idea, esaminiamo la precedente lista con i dati degli studenti, degli adviser e dei loro dipartimenti.
    • Questa lista ha i dati di tre cose diverse: studente, adviser, dipartimento
    • I problemi peggiorano. Infatti una modifica nel valore di adviser potrebbe richiedere solo la modifica della sue email oppure se cambia il dipartimento anche del dipartimento e della sue admin
  • 13. Esercizio
  • 14. Come si risolvono questi problemi ?
    • La lista con Studente e Adviser ha due temi: Studente e Adviser. Spezziamo la lista e mettiamola in due tabelle !
  • 15. Legame tra le due tabelle
    • Vogliamo sempre sapere per ogni studente quale è il suo Adviser (tutor). Pertanto lasciamo la colonna AdviserName nella tabella studente.
    • I valori di AdviserName legano l’una con l’altra le righe delle due tabelle
    • Una tabella è come una lista: un insieme di righe e di colonne.
  • 16. Azioni di modifica
    • Le azioni di modifica sono: insert, update, delete
    • Per valutare un progetto di un database dobbiamo considerare ciascuna di queste tre azioni
    • Possiamo inserire i dati del Prof. Greene aggiungendoli alla tabella ADVISER. Nessun studente è legato al Prof. Greene, ma questo non è un problema. Forse qualche studente lo potrà avere come tutori in futuro.
    • L’email del Prof. Taing può essere modificata in [email_address] e non si hanno dati inconsistenti, perché l’email è memorizzata una sola volta nella tabella ADVISER
    • Possiamo anche eliminare i dati dello studente marino dalla tabella STUDENTE, senza per questo perdere i dati del adviser.
  • 17. Azioni di modifica consistenti
  • 18. Simile strategia
    • Possiamo sviluppare una strategia simile per trattare la lista dello studente con advisor e dipartimento
    • Questa lista ha tre temi, pertanto la spezziamo nelle tre tabelle STUDENTE, ADVISER, DEPARTMENT
  • 19. Azioni di modifica consistenti
  • 20. Effetto collaterale
    • Il precedente disegno ha risolto il problema della inconsistenza dei dati nella modifica di una lista, ma ha introdotto un altro problema come effetto collaterale!
    • Che cosa succede quando eliminiamo la prima riga di ADVISER ?
    • Succede che gli studenti Andrews e Fischer si trovano ad avere un nome AdviserName invalido perché un Baker non esiste più nella tabella ADVISER
    • Per prevenire il verificarsi di questo problema, possiamo progettare il nostro database
      • in modo da impedire l’eliminazione di una riga se altre righe dipendono da essa;
      • oppure far si che anche le righe dipendenti siano eliminate insieme con essa
  • 21. Una lista con trabocchetto
    • Art course list con problemi di modifica
  • 22. Quali sono i temi della lista Art Course?
    • Uno dei temi è customer, l’altro “art course”.
    • Ma…
    • Il customer ha pagato una certa cifra per un corso. Questa quantità non è una proprietà del cliente perché dipende dal corso che viene frequentato. Ma non è neanche una proprietà del corso perché dipende dal cliente.
    • Pertanto c’è un terzo tema che riguarda l’iscrizione di un particolare studente ad un particolare corso.
  • 23. Soluzione con una tabella associativa
  • 24. Osservazioni
    • Nel precedente disegno abbiamo introdotto una colonna ID che assegna un numero identificativo a ciascuna riga di CUSTOMER
    • Ciò è necessario perché alcuni clienti potrebbero avere il medesimo nome.
    • Lo stesso abbiamo fatto per la tabella COURSE, ossia abbiamo introdotto una colonna ID chiamata CourseNumber che assegna un numero identificativo a ciascuna riga di COURSE.
    • Ciò è necessario perché alcuni corsi potrebbero avere il medesimo nome
    • Osserva che le righe della tabella ENROLLMENT mostrano il pagamento di un particolare cliente per uno specifico corso ed usa le colonne ID CustomerNumber e CourseNumber come colonne di legame alle altre due tabelle.
  • 25. Lista più complicata
  • 26. Soluzione
  • 27. Questione scottante
    • Può essere cosa buona l’aver spezzato la lista in pezzi per eliminare il problema della sua modifica, ma se gli utenti vogliono vedere i loro dati nel formato originale ?
    • Con i dati separati in differenti tabelle, gli utenti devono saltare da una tabella all’altra per trovare l’informazione che vogliono e questa tarantella può diventare noiosa.
    • Come si risolve ?
  • 28. Continua…

×