
Lezione 6
OSSERVAZIONE
Spesso, disegnando un diagramma ER, ci si domanda: "Ma questo è un attributo o un'entità?"
In questa lezione impareremo come rispondere a questa domanda.
Partiamo dal problema della biblioteca visto nella lezione precedente (con una piccola modifica).
Problema
Vogliamo creare un piccolo database per una biblioteca.
Per ogni libro vogliamo tenere traccia dei seguenti dati:
titolo, autore, editore, genere e anno della prima edizione. Inoltre,
per ciascun autore vogliamo poter gestire nome, cognome, sesso,
vogliamo sapere se è in vita o meno e - se è in vita - quanti anni ha.
Analisi - 1
La prima domanda che ci poniamo è la biblioteca è una entità?
La risposta è no. Ma perchè?
Se le righe della tabella relativa ad una certa entità saranno una soltanto allora possiamo dire che quella non deve essere una entità.
Analisi - 2
Partiamo dal diagramma ER che avevamo proposto prima (che non aveva l'editore).
L'attributo sesso di Autore è un
attributo o una entità?
E l'attributo genere di Libro è
un attributo o una entità?
Quando - come in questo caso - l'attributo è di tipo dominio la risposta è semplice: se siamo in grado di elencare facilmente tutti i valori che potrà assumere allora è un attributo altrimenti è una entità.
Nel nostro caso l'attributo sesso di Autore può ragionevolente assumere solo i due valori "Maschio" e "Femmina": sarà quindi semplicissimo inserire nel nostro database questi due valori.
Per quanto riguarda invece l'attributo genere di Libro sarebbe un po' difficile per noi inserire tutti i possibili generi. Risulta quindi più opportuno gestire genere come un entità a parte.
Osservazioni come quella precedente ci permettono di scrivere - per esempio - la parola "Romanzo" nel nostro database una sola volta e non tante volte quante sono i romanzi archiviati, evitando così ridondanza e inconsistenza.
Questa è senza dubbio una soluzione migliore rispetto alla precedente.
E per quanto riguarda l'editore?
Editore sarà un attributo di Libro? O sarà piuttosto una entità a se' stante?
L'ultima osservazione (la possibilità di archiviare una sola volta un certo editore) spinge verso la creazione di una nuova entità. Inoltre la possibilità di introdurre ulteriori caratteristiche dell'editore conferma questa ipotesi.
Schema concettuale: er
Schema logico: relazionale
autore (id, nome, cognome, sesso, dataDiNascita, inVita)
genere (id, descrizione)
editore (id, nome, gruppo*, sito*)
libro (id, titolo, anno, idAutore, idGenere, idEditore)
Analisi - 3
Quanto detto in merito a editore o genere può valere anche per anno?
La risposta è no ed i motivi sono due.
Innanzitutto facciamo una riflessione per lo spazio occupato: fatto salvo lo spazio che serve per occupare la tabella
(che esiste ma si immagina sia trascurabile in quanto gli anni saranno al più 500) consideriamo che
memorizzare un valore numerico che contiene un anno o memorizzare un valore numerico
che contiene una chiave esterna è lo stesso.
Inoltre si ritiene che l'inserimento di una
stringa da parte dell'utente sia soggetta a diversi tipi di errore, mentre l'inserimento di
un numero è molto più semplice.
Ovviamente ciò non toglie che, rilevatane l'opportunità, anche un attributo numerico potrebbe diventare entità.
Challenge - 1
Supponiamo di voler gestire anche la nazionalità dell'autore.
Realizzare diagramma ER e schema relazionale.
Challenge - 2
Supponiamo di voler gestire anche i seguenti dati del libro: codice ISBN, prezzo ed eventuale collana a cui il libro appartiene.
Realizzare diagramma ER e schema relazionale.
Challenge - 3
Facendo riferimento al problema relativo ai capi di abbigliamento della lezione 2, era corretto considerare la tipologia del capo di abbigliamento un attributo?
Dai una risposta ed eventualmente realizza il nuovo diagramma ER e schema relazionale.
Challenge - 4
Facendo riferimento al problema relativo alla rubrica della lezione 3, era corretto considerare il titolo del contatto come un attributo? Ed il cap? E la località? E la provincia?
Dai una risposta ed eventualmente realizza il nuovo diagramma ER e schema relazionale.
Challenge - 5
Facendo riferimento al problema relativo agli ospiti di una struttura alberghiera della lezione 4, gli attributi tipo e comune dell'entità documento meritano ulteriore attenzione, così come cap, località e provincia dell'entità ospite.
Fai le tue considerazioni ed eventualmente realizza il nuovo diagramma ER e schema relazionale.