Database: la modellazione concettuale Lezione per una Quinta ITC S.I.A. di: Anastasi Gaetano Ciaramella Alessandro Giannini Giacomo Meomartino Michele Sartor Massimiliano
Che cos’è un modello? Definizione: rappresentazione formale di una parte del mondo reale per uno scopo ben definito Esempi:Modello atomico, carta geografica A partire dalla stessa cosa, scopi diversi danno vita a modelli diversi
Importanza del modello Carta geografica: come sarebbe spostarsi senza avere le carte? Permette di avere una rappre-sentazione della cosa che interessa senza avere la cosa reale: modellini di auto Permette valutazioni preventive: galleria del vento
Come si realizza un modello? Si usano formalismi e convenzioni In una carta geografica: Nazioni = poligoni Fiumi = linee azzurre Pianure = aree verdi In un database: ???
Cosa rappresentare in un modello In una carta geografica: Fiumi, laghi, città, strade, … In un database: Entità con i loro tipi e proprietà Collezioni di entità Legami tra le entità Condizioni e vincoli
Un primo esempio (1) “Una compagnia di trasporti desidera realizzare una base di dati per monitorare i treni che utilizza, indicandone il numero, il nome del macchinista e la tipologia (espresso o locale); desidera al contempo monitorare le stazioni che essa serve specificandone il nome, l’indirizzo e l’importanza (principale o secondaria), oltre ai treni che la contemplano nel loro percorso.”
Un primo esempio In questo esempio sono entità: Treni Stazioni Le loro proprietà sono rispettivamente: Numero, macchinista, espresso Nome, indirizzo, importanza In generale sono entità le cose che di per sé hanno senso di esistere nel mio modello, sono proprietà quelle cose che servono per descrivere le entità
Il formalismo grafico (1) Le entità del mondo reale vengono rappresentate con dei rettangoli che chiameremo classi Le proprietà delle entità saranno elencate all’interno dei rettangoli e si chiameranno attributi
Il tipo degli attributi Ogni attributo può assumere un insieme particolare di valori (tipo) Esistono tipi semplici, composti, enumerati, sequenza
Le associazioni Nel mondo esistono dei legami tra le entità che noi vogliamo modellare, ad esempio ogni treno si ferma in varie stazioni: se questo è importante nel mio modello determina un legame tra i treni e le stazioni. Questi legami si chiamano associazioni e si modellano con una linea che unisce le entità in associazione
Molteplicità e totalità Per raffinare il mio modello voglio esprimere di più: in quante stazioni si può fermare un treno? Solo una o più di una? Anche nessuna oppure no? E in una stazione quanti treni si fermano?
Molteplicità e totalità obbligatoria opzionale 1 molti
Altri esempi Uomini, mogli Calciatori, partite Calciatori, partite, squadre Proprietari, auto Persone, auto
Un primo esempio (2) Estendo l’esempio, cambiando scopo cambierà il modello: la società vuole anche i dati necessari per pagare i macchinisti. Mi serviranno quindi IBAN e codice fiscale dei macchinisti. A questo punto il macchinista non può più essere una semplice proprietà ma deve diventare un’entità
Attributo o Entità? Descrivendo delle Persone, mi accorgo che possono avere più numeri di telefono: l’attributo sarà quindi multivalore. Nella misura in cui mi interessa solo il numero posso modellare così: Se viceversa volessi sapere anche la tipologia a cui corrisponde ogni numero, dovrei fare Nota che un numero di telefono può essere collegato a più di una persona (coinquilini, colleghi in uno stesso ufficio)
Un primo esempio (3) Raffinando il processo di analisi mi rendo conto che i treni espresso si fermano solo nelle stazioni principali, mentre i treni locali si possono fermare in qualsiasi stazione Quindi devo esprimere il fatto che alcuni treni si comportano in modo diverso dagli altri, ovvero implicitamente che esistono più sottoinsiemi all’interno della classe
Una (non) soluzione Vengono duplicati inutilmente gli eventuali attributi comuni di treni locali e treni espressi Vengono duplicati inutilmente gli attributi comuni delle stazioni secondarie e principali Viene replicata inutilmente la relazione tra treni e macchinisti Viene replicata inutilmente la relazione treni locali – stazioni secondarie e treni locali – stazioni principali
Gerarchie: una soluzione
Attributi delle associazioni Se volessi esprimere anche la durata delle fermate dei treni nelle varie stazioni, a quale entità attribuirei la proprietà durata? Stazioni? No, perché diversi treni hanno tempi di fermata diversi Treni? No, perché i tempi differiscono nelle varie stazioni Durata è una proprietà del legame che intercorre tra i treni e le stazioni: devo modellarla come attributo dell’associazione
La soluzione finale