Basi di Dati Modello Concettuale dei Dati: Concetti Fondamentali versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca – [email protected] – Università della Basilicata Mod. Concettuale >> Sommario Concetti Fondamentali Introduzione Raccolta dei Requisiti Diagramma Concettuale delle Classi Classe Associazione Cardinalità Generalizzazione Linee Guida per la Modellazione G. Mecca - [email protected] - Basi di Dati 2 Mod. Concettuale >> Concetti Fondamentali >> Introduzione Introduzione Modellazione concettuale attività svolta durante l’analisi Obiettivo definire il modello concettuale dei dati Funzioni nel processo di sviluppo analizzare le relazioni tra i dati definire il nucleo delle classi (componenti) guidare la progettazione della base di dati G. Mecca - [email protected] - Basi di Dati 3 Mod. Concettuale >> Concetti Fondamentali >> Introduzione Introduzione Il punto di partenza la raccolta dei requisiti Raccolta dei Requisiti i requisiti iniziali sono normalmente imprecisi è necessario precisarli e approfondirli in sintesi, si tratta di comprendere come funziona la realtà a cui l’applicazione si riferisce G. Mecca - [email protected] - Basi di Dati 4 Mod. Concettuale >> Concetti Fondamentali >> Introduzione Raccolta dei Requisiti Fonti per la raccolta utenti dell’applicazione, attraverso interviste e questionari documentazione esistente (leggi e normative, regolamenti interni) modulistica usata dall’organizzazione Il problema delle fonti fonti diverse possono fornire informazioni contrastanti G. Mecca - [email protected] - Basi di Dati 5 Mod. Concettuale >> Concetti Fondamentali >> Introduzione Raccolta dei Requisiti Attenzione è un’attività difficile e poco standardizzabile Suggerimenti effettuare iterazioni ripetute con gli utenti tenere presente la prospettiva dell’utente sull’applicazione accertarsi di adottare un linguaggio comune identificare i casi d’uso e discuterne le attività in dettaglio, individuando le priorità G. Mecca - [email protected] - Basi di Dati 6 Mod. Concettuale >> Concetti Fondamentali >> Introduzione Raccolta dei Requisiti Caso fortunato gli utenti conoscono UML è possibile basare la comunicazione sugli schemi concettuali intermedi Al termine del processo i requisiti sono descritti da un documento di sintesi lo schema concettuale prodotto G. Mecca - [email protected] - Basi di Dati 7 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Il Diagramma delle Classi di UML Nel nostro approccio diagramma delle classi di UML ci sono altri approcci molto simili; esempio: modello Entità-Relazione (ER) >> Modello concettuale classi con attributi associazioni cardinalità generalizzazioni G. Mecca - [email protected] - Basi di Dati 8 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Il Diagramma delle Classi di UML Il termine classe nella terminologia UML viene utilizzato con significati diversi A livello concettuale classe come rappresentazione di un insieme di oggetti della realtà A livello di progetto classe come specifica di una classe software A livello di implementazione classe come documentazione di una classe software G. Mecca - [email protected] - Basi di Dati 9 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Il Diagramma delle Classi di UML In questa lezione siamo in fase di analisi non bisogna commettere l’errore di fraintendere gli obiettivi del modello Obiettivi del modello concettuale descrivere i concetti della realtà di interesse non componenti software dell’applicazione (nè tabelle, nè classi del linguaggio di prog.) G. Mecca - [email protected] - Basi di Dati 10 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Il Diagramma delle Classi di UML Errori tipici descrivere i dettagli delle tabelle descrivere i metodi delle classi Livello di astrazione opportuno non è necessario che nel modello concettuale ci siano tutti gli attributi non è normalmente rilevante il tipo degli attributi G. Mecca - [email protected] - Basi di Dati 11 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Un Esempio: Il S.I. Universitario E’ necessario sviluppare un frammento del S.I. utilizzato dalla segreteria studenti per la gestione dei dati dei corsi di laurea in Informatica dell’Università della Basilicata Il sistema deve gestire i dati degli studenti della laurea triennale e specialistica. Per ciascuno studente è necessario gestire i dati relativi agli esami sostenuti Il sistema deve inoltre gestire i dati relativi agli insegnamenti offerti, e i dati relativi agli esami sostenuti per ciascun insegnamento Per ciascun corso è necessario tenere traccia dei docenti, che possono essere uno o più, e che sono interni o supplenti esterni; Per ogni docente si tiene traccia dei recapiti telefonici, per poter contattare il docente in caso di problemi relativi agli esami sostenuti Per gli studenti, è necessario tenere traccia del docente relatore della prova finale e dei dati del tirocinio svolto. Gli studenti della laurea triennale possono chiedere un relatore solo se sono iscritti al terzo anno Infine, il sistema deve tenere traccia delle attività di tutorato svolte dagli studenti della laurea sp. nei confronti degli studenti della laurea triennale G. Mecca - [email protected] - Basi di Dati 12 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Classi “Concetti” della realtà di interesse fatti, persone, cose, con esistenza autonoma esempio: studente, corso, esame, docente Istanza di una classe insieme di oggetti della realtà di interesse Le classi hanno attributi proprietà rilevanti per l’applicazione stereotipo <<id>> per gli identificatori stereotipo: notazione per indicare che un costrutto ha un ruolo ben identificabile G. Mecca - [email protected] - Basi di Dati 13 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Classi Esempi: Studente Corso Esame Docente <<id>> matricola <<id> codice voto cognome cognome titolo lode nome nome ciclo data qualifica annoDiCorso nome della classe attributi (proprietà) classe Tirocinio sede dataInizio durata identificatore (stereotipo) G. Mecca - [email protected] - Basi di Dati 14 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Classi Istanze delle classi {77777, Bruno Pasquale, 1} Studente <<id>> matricola cognome nome annoDiCorso G. Mecca - [email protected] - Basi di Dati {444, Pinco, Palla, 3} {88888, Pinco, Pietro, 1} 15 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Associazioni Relazione tra classi legame logico rilevante per l’applicazione es: superamento tra studente ed esame es: titolarità tra docente e corso Istanza di un’associazione insieme di archi tra le istanze delle classi coinvolte G. Mecca - [email protected] - Basi di Dati 16 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Associazioni Esempi: verso di lettura del nome Studente <<id>> matricola nome dell’ associazione Docente < relatore cognome Corso titolarità <<id>> codice cognome nome titolo nome qualifica ciclo annoDiCorso associazione G. Mecca - [email protected] - Basi di Dati 17 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Associazioni: Istanze Studenti {77777, Bruno Pasquale, 1} {Totti, Francesco, ordinario} {Vieri, Christian, associato} {Del Piero, Alex} {444, Pinco, Palla, 3} {111, Rossi, Mario 1} {88888, Pinco, Pietro, 1} Docenti G. Mecca - [email protected] - Basi di Dati 18 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Cardinalità Vincoli sulle associazioni vincoli sul numero di archi tra gli oggetti Vincoli sugli attributi numero di valori dell’attributo Cardinalità minima normalmente 0 oppure 1 Cardinalità massima normalmente 1 oppure * (n) (ma anche 3 o 5) G. Mecca - [email protected] - Basi di Dati 19 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Cardinalità Cardinalità di una associazione espresse per entrambe le classi quattro cardinalità (ma alcune possono essere omesse) Cardinalità di una classe in un’associazione numero di minimo e massimo di oggetti della classe associabili ad un oggetto dell’altra G. Mecca - [email protected] - Basi di Dati 20 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Cardinalità cardinalità minima cardinalità massima Esempi: Studente <<id>> matricola Docente < relatore cognome nome annoDiCorso cardinalità di attributo cognome Corso titolarità nome 0..* 0..1 qualifica <<id>> codice titolo 0..* 0..* ciclo numTelefono [0..*] cardinalità di associazione G. Mecca - [email protected] - Basi di Dati 21 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Cardinalità cardinalità relatore > 0..1 Studenti cardinalità 0..* {Totti, Francesco, ordinario} {Vieri, Christian, associato} {Del Piero, Alex} {444, Pinco, Palla, 3} {77777, Bruno Pasquale, 1} {111, Rossi, Mario 1} {88888, Pinco, Pietro, 1} Docenti G. Mecca - [email protected] - Basi di Dati 22 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Cardinalità Classificazione delle associazioni rispetto alla cardinalità uno a uno: cardinalità massima 1 da tutte e due le parti uno a molti: cardinalità massima 1 da una parte e * dall’altra molti a molti: cardinalità massima * da tutte e due le parti G. Mecca - [email protected] - Basi di Dati 23 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Cardinalità 0..1 associazione uno a uno Tirocinio sede ha svolto > associazione molti a molti dataInizio durata 1..1 Studente Docente <<id>> matricola < relatore cognome nome cognome nome 0..* 0..1 qualifica annoDiCorso Corso <<id>> codice titolarità 0..* 0..* titolo ciclo numTelefono [0..*] 1..1 1..1 Esame ha sostenuto > relativo a > voto 0..* lode data G. Mecca - [email protected] - Basi di Dati 0..* associazione uno a molti 24 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Generalizzazioni Relazioni tra i concetti rappr. dalle classi superclasse (padre): concetto più generale sottoclasse (figlio): concetto più specifico Implicano la semantica dell’ereditarietà le proprietà e le associazioni del padre sono anche proprietà e associazioni dei figli le istanze dei figli sono anche istanze del padre G. Mecca - [email protected] - Basi di Dati 25 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Generalizzazione Docente Studente cognome <<id>> matricola nome cognome qualifica nome numTelefono [0..*] annoDiCorso DocenteInterno Supplente facoltà G. Mecca - [email protected] - Basi di Dati Studente Laurea Triennale Studente Laurea Specialistica 26 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Generalizzazione: Istanze Docente {Vieri, Christian, associato} cognome nome qualifica {Del Piero, Alex} numTelefono [0..*] DocenteInterno {Totti, Francesco, ordinario} Supplente facoltà {Totti, Francesco, ordinario, ingegneria} {Vieri, Christian, associato, scienze} Docente {Del Piero, Alex} DocenteInterno G. Mecca - [email protected] - Basi di Dati Supplente 27 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Il Diagramma Completo Il diagramma completo contiene tutti i costrutti visti E’ possibile aggiungere annotazioni utili per commentare i costrutti e per esprimere vincoli altrimenti non esprimibili; es: gli studenti della laurea tr. possono chiedere un relatore solo se sono iscritti al terzo anno G. Mecca - [email protected] - Basi di Dati 28 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Il Diagramma Completo Esempi: Studente Docente <<id>> matricola < relatore cognome cognome nome 0..* nome 0..1 qualifica annoDiCorso gli studenti della laurea triennale possono avere un relatore solo se al terzo anno G. Mecca - [email protected] - Basi di Dati annotazione 29 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Corso Esame 0..* <<id>> codice voto < relativo a titolo ciclo titolarità docente Docente lode 1..1 0..* data ha sostenuto > relatore solo se al 3 anno cognome relatore > Studente 0..1 0..* Tirocinio <<id>> matricola cognome nome qualifica 1..* 1..* ciclo sede dataInizio 1..1 durata nome numTelefono [0..*] 0..1 annoDiCorso ha svolto > 1..* DocenteInterno Supplente facolta Un Diagramma con Errori G. Mecca - [email protected] - Basi di Dati Studente Laurea Triennale 0..* Studente Laurea Specialistica < tutor 1..1 30 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Corso Esame < relativo a <<id>> codice 0..* 1..1 titolo voto 0..* relatore solo se al 3 anno ciclo titolarità data 1..1 Docente lode ha sostenuto > Studente cognome relatore > nome <<id>> matricola cognome 0..* qualifica 0..1 0..* numTelefono [0..*] 0..* Tirocinio sede 1..1 dataInizio nome durata annoDiCorso ha svolto > DocenteInterno Supplente facolta Diagramma Corretto G. Mecca - [email protected] - Basi di Dati Studente Laurea Triennale 0..* 0..1 Studente Laurea Specialistica < tutor 0..1 31 Mod. Concettuale >> Concetti Fondamentali >> Linee Guida Linee Guida per la Modellazione Punto di partenza requisiti l’attività di modellazione concettuale e l’analisi dei requisiti procedono parallelamente Processo iterativo prototipo del modello approfondimento dei requisiti nuovo prototipo ecc. G. Mecca - [email protected] - Basi di Dati 32 Mod. Concettuale >> Concetti Fondamentali >> Linee Guida Linee Guida per la Modellazione Nel seguito alcune linee guida per la modellazione Suggerimenti sulla metodologia Identificazione dei concetti Classi e attributi Classi descrittive Identificazione delle associazioni Associazioni e chiavi esterne G. Mecca - [email protected] - Basi di Dati 33 Mod. Concettuale >> Concetti Fondamentali >> Linee Guida Metodologia Non esiste una vera metodologia dipende molto dall’esperienza Indicazioni metodologiche strategia “mista” parte dall’alto (“top down”) parte dal basso (“bottom up”) verifiche ripetute di qualità G. Mecca - [email protected] - Basi di Dati 34 Mod. Concettuale >> Concetti Fondamentali >> Linee Guida Metodologia Qualità dello schema concettuale correttezza: deve rispecchiare correttamente le specifiche (si verifica disegnando le istanze) completezza: deve descrivere tutti gli aspetti delle specifiche leggibilità: deve essere facilmente interpretabile (notazione per i nomi) minimalità: deve evitare ridondanze G. Mecca - [email protected] - Basi di Dati 35 Mod. Concettuale >> Concetti Fondamentali >> Linee Guida Metodologia Per cominciare divisione dei requisiti in sezioni ogni sezione rappresenta la specifica di una parte dell’applicazione Schema scheletro complessivo schema delle classi corrispondenti ai concetti fondamentali (es: docente, studente, esame, corso) G. Mecca - [email protected] - Basi di Dati 36 Mod. Concettuale >> Concetti Fondamentali >> Linee Guida Metodologia Esempio di schema scheletro: Studente <<id>> matricola Docente Corso Esame voto G. Mecca - [email protected] - Basi di Dati 37 Mod. Concettuale >> Concetti Fondamentali >> Linee Guida Metodologia Approfondimento delle sezioni per ciascuna sezione viene prodotto uno schema di dettaglio esempio: gerarchia di docenti esempio: gerarchia di studenti e tutorato esempio: relazione tra studenti ed esami Integrazione degli schemi gli schemi delle sezioni vengono integrati sulla base dello schema scheletro G. Mecca - [email protected] - Basi di Dati 38 Mod. Concettuale >> Concetti Fondamentali >> Linee Guida Identificazione dei Concetti Identificazione dei concetti ci sono alcune categorie tipiche di concetti che è possibile rappresentare con le classi nel seguito viene riportata una lista parziale ATTENZIONE: la lista NON è ESAUSTUVA è opportuno, per ogni classe introdotta, provare a collocarla in una delle categorie elencate o giustificare perché non rientra G. Mecca - [email protected] - Basi di Dati 39 Mod. Concettuale >> Concetti Fondamentali >> Linee Guida Identificazione dei Concetti Oggetti fisici es: libro, aereo Luoghi es: magazzino, motore es: aula, aeroporto Persone o ruoli Sistemi es: controllo aereo Organizzazioni es: Ministero, linea aerea Eventi es: esame, acquisto, volo G. Mecca - [email protected] - Basi di Dati Oggetti in contenitori es: merce, carburatore Cataloghi es: registro d’esame, registro di volo es: docente, pilota Contenitori Registrazioni es: verb. d’esame, ricevuta Regole di funzionamento es: regole per piani di studio, o regole per i rimborso dei biglietti 40 Mod. Concettuale >> Concetti Fondamentali >> Linee Guida Identificazione dei Concetti Classi e attributi in alcuni casi è possibile rappresentare dati sia con una classe che con un attributo Linee guida un attributo dovrebbe essere percepito dal progettista come un numero o una stringa (o altri valori semplici assimilabili) una classe dovrebbe essere percepita come una collezione di oggetti G. Mecca - [email protected] - Basi di Dati 41 Mod. Concettuale >> Concetti Fondamentali >> Linee Guida Identificazione dei Concetti Nel dubbio è preferibile scegliere una classe separata es: città in cui si svolge un tirocinio in fase di progetto queste scelte devono però essere riconsiderate possono introdurre eccessiva frammentazione tra le tabelle e costringere a troppi join (>>) G. Mecca - [email protected] - Basi di Dati 42 Mod. Concettuale >> Concetti Fondamentali >> Linee Guida Identificazione dei Concetti Classi descrittive in alcuni casi è necessario distinguere tra gli oggetti fisici e le loro descrizioni Esempio un sito che vende lettori MP3 ogni lettore “fisico” è un oggetto del magazzino con un numero seriale e una serie di caratteristiche (prezzo, descrizione ecc.) G. Mecca - [email protected] - Basi di Dati 43 Mod. Concettuale >> Concetti Fondamentali >> Linee Guida Classi Descrittive Una Magazzino possibile descrizione LettoreMP3 supponiamo che ogni lettore numeroDiSerie prezzo venduto sia cancellato dalla descrizione base di dati in questo caso, se i lettori vengono esauriti, si perde traccia del loro prezzo e descrizione Magazzino SpecificheMP3 LettoreMP3 numeroDiSerie 0..* 1..1 prezzo descrizione classe descrittiva G. Mecca - [email protected] - Basi di Dati 44 Mod. Concettuale >> Concetti Fondamentali >> Linee Guida Identificazione delle Associazioni Associazioni relazioni logiche tra due concetti normalmente molte nella realtà di interesse Criterio fondamentale rappresentare le associazioni che corrispondono ad informazione da preservare nel tempo “relazioni che è necessario conoscere” G. Mecca - [email protected] - Basi di Dati 45 Mod. Concettuale >> Concetti Fondamentali >> Linee Guida Identificazione delle Associazioni Esempi es: associazione tra studente e tirocinio (sì, per poter ricostruire la carriera dello studente) es: associazione tra docente e corso (sì, perchè è un’informazione rilevante organizzativamente – es: orario, carichi did.) es: personale della segreteria che registra un esame (probabilmente non è necessario tenerne traccia) G. Mecca - [email protected] - Basi di Dati 46 Mod. Concettuale >> Concetti Fondamentali >> Linee Guida Identificazione delle Associazioni E’ opportuno limitare il numero di associazioni evitando di introdurre associazioni ridondanti es: la relazione tra studente e i corsi superati è ricostruibile con studente-esame-corso attenzione però alla semantica es: la relazione tra studente e i corsi che ha nel piano di studi G. Mecca - [email protected] - Basi di Dati 47 Mod. Concettuale >> Concetti Fondamentali >> Linee Guida Identificazione delle Associazioni Anche per le associazioni esistono una serie di categorie tipiche di cui viene riportato un elenco NON esaustivo Categorie ad alta priorità A è una parte di B (fisicamente o logicam.) A è contenuto in B (fisicamente o logicam.) G. Mecca - [email protected] - Basi di Dati 48 Mod. Concettuale >> Concetti Fondamentali >> Linee Guida Identificazione delle Associazioni A è una parte di B es: ala-aereo (fisica) es: tratta-volo (logica) es: dipartimento-università (organizzativa) A è membro di B es: docente-facoltà, pilotalinea aerea A è contenuta in B es: magazz.-merce (fisico) es: volo-orario dei voli (logico) G. Mecca - [email protected] - Basi di Dati A è registrato in B es: esame-registro, prenotazione-archivio A descrive B es: lettMP3-descrMP3 A gestisce o effettua B es: docente-corso A è evento collegato a B es: partenza-volo, venditanegozio A possiede B es: passeggero-bagaglio 49 Mod. Concettuale >> Concetti Fondamentali >> Linee Guida Identificazione delle Associazioni Errore frequente introdurre nelle classi attributi che sono chiavi esterne esempio: matricola dello studente nella classe Esame Esame Studente matricola voto <<id>> matricola cognome lode lode nome data data annoDiCorso G. Mecca - [email protected] - Basi di Dati Esame ha sostenuto > voto 50 Mod. Concettuale >> Sommario Concetti Fondamentali Introduzione Raccolta dei Requisiti Diagramma Concettuale delle Classi Classe Associazione Cardinalità Generalizzazione Linee Guida per la Modellazione G. Mecca - [email protected] - Basi di Dati 51 Mod. Concettuale >> Concetti Fondamentali >> Il Diagramma delle Classi Un Esempio: Il S.I. Universitario E’ necessario sviluppare un frammento del S.I. utilizzato dalla segreteria studenti per la gestione dei dati dei corsi di laurea in Informatica dell’Università della Basilicata Il sistema deve gestire i dati degli studenti della laurea triennale e specialistica. Per ciascuno studente è necessario gestire i dati relativi agli esami sostenuti Il sistema deve inoltre gestire i dati relativi agli insegnamenti offerti, e i dati relativi agli esami sostenuti per ciascun insegnamento Per ciascun corso è necessario tenere traccia dei docenti, che possono essere uno o più, e che sono interni o supplenti esterni; Per ogni docente si tiene traccia dei recapiti telefonici, per poter contattare il docente in caso di problemi relativi agli esami sostenuti Per gli studenti, è necessario tenere traccia del docente relatore della prova finale e dei dati del tirocinio svolto. Gli studenti della laurea triennale possono chiedere un relatore solo se sono iscritti al terzo anno Infine, il sistema deve tenere traccia delle attività di tutorato svolte dagli studenti della laurea sp. nei confronti degli studenti della laurea triennale G. Mecca - [email protected] - Basi di Dati 52 Termini della Licenza Termini della Licenza This work is licensed under the Creative Commons AttributionShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. G. Mecca - [email protected] - Basi di Dati 53