Modelli dei dati Modelli e database • In generale un modello è la rappresentazione di idee e conoscenze relative a un fenomeno espressa in un certo linguaggio formale – Es. Si pensi al modello su carta di una casa, espresso con il linguaggio della geometria e della matematica • Un database relazionale (un insieme di tabelle) è un modello (una rappresentazione) di una porzione della realtà di interesse, detta universo del discorso • Il modello è espresso in termini del modello dei dati offerto dal DBMS in uso Modelli dei dati Il Modello Relazionale Il modello relazionale dei dati, proposto nel 1970 ed adottato nei sistemi commerciali a partire dal 1978, si è diffuso rapidamente tanto sui sistemi grandi quanto sugli elaboratori personali. I meccanismi per definire un database con il modello relazionale sono il record (o ennupla) e la tabella (o relazione): – una tabella R(T) è definita da un insieme finito di coppie, dette campi, della forma T = (A1: T1, A2: T2,…, An: Tn), dove • A1, A2,…, An sono detti attributi • T1, T2,…, Tn sono tipi elementari – lo schema di una base di dati è un insieme di schemi di relazione R1(T1), R2(T2), …, Rk(Tk); – un’istanza di una tabella R(T) è un insieme finito di record di tipo T della forma (A1: v1, A2: v2,…, An: vn), dove vi è di tipo Ti Modello relazionale Esempio: relazione Studenti Relazione Studenti(Nome: string, Matricola: string, Provincia: string, AnnoNascita:int) attributo Istanza di Studenti record Nome Matricola Provincia AnnoNascita Isaia 171523 PI 1980 Rossi 167459 LU 1975 Bianchi 179856 LI 1078 Bonini PI 1980 175649 Valore di attributo Una tabella si rappresenta graficamente come una tabella con una colonna per ogni attributo e una riga per ogni record dell’istanza della tabella. Modello relazionale Nozioni e specifiche • La cardinalità di una tabella è data dal numero dei record che appartengono alla sua istanza. • Il grado di una tabella è dato dal numero di attributi della tabella. • Due record sono uguali se contengono gli stessi valori per gli stessi attributi. • Una tabella può contenere record uguali (tabelle come multinsiemi). • Ogni tabella contiene un insieme non ordinato di record: due tabelle che differiscono solo per l’ordine dei record in esse contenute, sono uguali. Modello relazionale Operazioni sulle relazioni • Chiusura delle operazioni. Ogni operazione ha come parametri in ingresso delle relazioni e restituisce sempre una relazione. • Questo consente la composizione di operazioni: il risultato di un’operazione può essere utilizzato come input per un’altra operazione. Progettazione Progettazione di database • Supponiamo di voler modellare l’universo del discorso dell’Università, in particolare il contesto della gestione della carriera universitaria degli studenti • È improponibile progettare un database sulla base del solo universo del discorso e senza l’adozione di metodologie di modellazione – Passare direttamente dalla realtà dell’Università a tabelle relazionali sulla base della sola intuizione è un’operazione ardua e rischiosa • Un modello (un database) è il risultato di un processo di interpretazione, guidato dalle idee e conoscenze possedute dal soggetto che interpreta • Definire un modello è un’operazione complessa (intuizione e metodo) Progettazione Metodologie • Esistono metodologie di modellazione che forniscono gli strumenti e linguaggi per: – individuare e rappresentare le componenti interessanti dell’universo del discorso, al fine di realizzarne un modello concettuale; – per successivamente convertire il modello concettuale in un database relazionale • Il modello concettuale descrive la realtà in maniera intuitiva (non informatica) ed è allo stesso tempo facilmente trasformabile in un database, cioè in un modello della realtà interpretabile da un computer Progettazione Fasi di progettazione L’informatica offre strumenti per costruire: – modelli per l’analisi del problema; – modelli per la progettazione della soluzione; – modelli per la realizzazione del progetto. ANALISI DEI REQUISITI Specifica dei requisiti PROGETTAZIONE CONCETTUALE Modello concettuale PROGETTAZIONE LOGICA e FISICA Modello relazionale logico e fisico Prog. della soluzione Aspetti del problema Aspetto ontologico Quale conoscenza dell’universo del discorso si rappresenta? In quali termini discutiamo la realtà? Aspetto linguistico Una volta stabilito in quali termini descrivere la realtà, quale linguaggio utilizziamo per definirne un modello? Aspetto pragmatico Come si procede per costruire un modello? Aspetto ontologico Aspetto ontologico Cosa si modella • Conoscenza concreta: – I fatti • Conoscenza astratta – Struttura e vincoli sulla conoscenza concreta Aspetto ontologico La conoscenza concreta Fatti specifici che si vogliono rappresentare: – le entità con le loro proprietà, – le classi (o collezioni) di entità omogenee – le associazioni fra entità. Aspetto ontologico Con. concreta: entità e proprieta’ • Le entità rappresentano fatti concreti o astratti, nel dominio del discorso, di cui interessa rappresentare l’esistenza. – Ad esempio, lo studente Mando Lino (la persona) è un fatto concreto, un esame da lui passato con 30 è un fatto astratto; entrambi sono interessanti nell’ambito della realtà universitaria che intendiamo modellare • Ogni entità è accompagnata da un insieme di proprietà, che la caratterizzano oltre la sua semplice esistenza – le proprietà si distinguono dalle entità poiché sono fatti che interessano solo in quanto descrivono le caratteristiche di entità. – Ad esempio, il nome di uno studente (es. “Lino Mando”), la data di un esame Aspetto ontologico Con. concreta: proprietà • Una proprietà è una coppia (Attributo, valore di un certo tipo) esempio: (nome, ‘Franca Mente’) dove ‘Franca Mente’ è di tipo string (o char) • Stabilire quali informazioni possono essere considerate una proprietà di un’entità è un processo semantico • Come conseguenza i nomi degli attributi di una proprietà devono riflettere il significato dei valori ad essi associati. Aspetto ontologico Con. concreta: proprietà (cont.) Classificazione delle proprietà: – primitiva / strutturata • Es. età e indirizzo – obbligatoria / opzionale • Es. nome e telefono – univoca / multivalore • Es. matricola e lingueParlate – costante / variabile • Es. nome e età – calcolata / non calcolata • Es. età e telefono Aspetto ontologico Determinare le proprietà • Esempio, la proprietà Indirizzo di un’entità studente potrebbe essere intesa come primitiva o strutturata: (indirizzo, “Via Diotisalvi, 45 56100 Pisa, Italia”) oppure come, (indirizzo, {(via, “Via Diotisalvi, 45”), (codice, 56100) (città, “Pisa”), (stato, “Italia”)}) • Quale è la soluzione migliore? – per operare sullo stato di residenza di uno studente nel primo caso è necessario scrivere codice per estrarre il valore dall’attributo indirizzo, mentre nel secondo caso il valore è reso esplicito dall’attributo stato. Aspetto ontologico Determinare le proprietà (cont.) • Ci sono casi in cui la scomposizione del valore di una proprietà non è necessaria o è richiesta solo parzialmente • Ad esempio, supponiamo che l’Università, per ragioni statistiche, sia interessata a trattare solamente lo stato degli studenti • Una suddivisione via, città, codice, stato sarebbe troppo specifica e inutile, basterebbe invece una strutturazione del tipo indirizzo, stato. • Se l’unico scopo degli indirizzi fosse invece quello della spedizione, la soluzione migliore sarebbe quella di un unico attributo indirizzo. Aspetto ontologico Determinare le proprietà (cont.) • Un altro aspetto da considerare nel determinare le proprietà di un’entità è quello di investigare su eventuali future esigenze. • Ad esempio, potrebbe essere molto probabile che in futuro sarà necessario mantenere informazioni riguardo la data di nascita dello studente. • In questo caso, anche se l’esigenza non è rilevata nel momento dell’analisi della realtà, è bene prevedere una proprietà con attributo dataNascita. Aspetto ontologico Determinare le proprietà (cont.) • A volte non è semplice distinguere le entità dalle proprietà. • Ad esempio, gli indirizzi degli studenti potrebbero essere interpretati come entità con proprietà via, città, codice, stato. • Questo potrebbe essere accettabile solo se nella realtà Universitaria tutti gli indirizzi fossero strutturati allo stesso modo e se fossero previste operazioni sugli indirizzi che prescindono da altre entità associate ad un indirizzo. Aspetto ontologico Domini delle proprietà e tipi • Il dominio di una proprietà specifica l’insieme dei valori che possono essere associati alla proprietà. • I domini sono al livello concettuale (modello dei dati) e non vanno confusi con i tipi, che sono invece al livello della realtà fisica di un database – La proprietà nomeProvincia ha come dominio l’insieme {Aosta, Aquila,…Milano,….., Venezia}, cioè tutte le possibile provincie – Il tipo che verrà associato a questo dominio sarà char(20), cioè l’insieme di tutte le stringhe di lunghezza minore o uguale a 20. Aspetto ontologico Con. concreta: collezioni • Classe (o collezione): un insieme variabile nel tempo di entità omogenee, cioè entità associate a proprietà con gli stessi nomi di attributi e con gli stessi domini • Ad esempio, le classi degli Studenti e degli Esami Aspetto ontologico Con. Concreta: esempio Studenti nome = “Lino Mando" Esami d1 a1 materia = “BD" voto = 26 matricola = “12345" d2 Entita’ nome = “Franca Mente" materia = “ALG" voto = “27" a2 d3 matricola = “54321" materia = “FIS" voto = “24" Proprieta’ Collezione Aspetto ontologico Con. concreta: gerarchia di classi • Spesso le classi di entità sono organizzate in una gerarchia di specializzazione/generalizzazione per trattare insiemi di entità ad un diverso livello di dettaglio. Una classe della gerarchia minore di altre viene detta sottoclasse (le altre sono superclassi). • Due importanti caratteristiche delle gerarchie: – ereditarietà delle proprietà: un’entità di una sottoclasse eredita le proprietà associate alla superclasse. – Le entità di una sottoclasse sono un sottoinsieme degli elementi della superclasse Aspetto ontologico Sottoclassi e superclassi Matricole Studenti a1 nome = “Lino Mando" nome = “Lino Mando" votoMaturità = “58” a1 matricola = “12345" matricola = “12345" nome = “Franca Mente" matricola = “54321" a2 Laureandi a2 nome = “Franca Mente" relatore = “Lina Carto” matricola = “54321" Studenti è superclasse di Laureandi e Matricole, mentre Laureandi e Matricole sono sottoclassi di Studenti Aspetto ontologico Con. concreta: le associazioni • Un’istanza di associazione è un fatto che correla due o più entità, stabilendo un legame logico tra di loro. Esempi: – Lo studente ‘Lino Mando’ ha passato l’esame di basi di dati con 27; – L’esame di fisica con voto 24 è stato passato dallo studente con matricola 54321 • Un’associazione fra due classi di entità è un insieme di istanze di associazione tra entità della prima e della seconda classe, che varia in generale nel tempo. – Associazione esamiPassati-passatoDa tra la classe Studenti e la classe Esami Aspetto ontologico Esempio di associazioni Associazione Studenti nome = “Lino Mando" esamiPassati-passatoDa a1 Esami d1 materia = “BD" voto = 26 matricola = “12345" nome = “Franca Mente" d2 voto = “27" a2 matricola = “54321" materia = “ALG" d3 materia = “FIS" voto = “24" Istanza di associazione Aspetto ontologico Tipi di associazioni • Il grado di un’associazione è dato dal numero delle classi che vi partecipano: – Grado 1: associazione unaria – Grado 2: associazione binaria – Grado 3: associazione ternaria – Es. esamiPassati-passatoDa è binaria • Le associazioni binarie si classificano in base alla – Molteplicità: • Uno-a-uno (1:1) • uno-a-molti (1:n) • molti-a-molti (n:n) – Totalità o parzialità Aspetto ontologico Es. Tipi di associazioni – (1:n) associazione PassatoDa-EsamiPassati tra Esami e Studenti: ad ogni esame è sempre associato uno studente (totale), mentre ogni studente può essere associato a nessuno, uno o più esami (parziale) – (1:n) associazione Tesista-Relatore tra Professori e Studenti: ogni professore può avere uno, nessuno o più tesisti (parziale), mentre uno studente può avere nessuno o un relatore (parziale) – (1:1) associazione CorsiTenuti-TenutoDa tra Professori e Corsi: ogni professore deve tenere un corso (totale) e ogni Corso è tenuto da un professore (totale) – (n:n) associazione CorsiSeguiti-StudentiIscritti tra Studenti e Corsi: ogni studente segue almeno un corso (totale) e ogni corso è seguito da almeno uno studente (totale) Aspetto ontologico Con. astratta: vincoli d’integrita’ I vincoli d’integrità sulla conoscenza concreta possono essere: • Statici: definiscono delle condizioni sui valori della conoscenza concreta che devono essere soddisfatte indipendentemente da come evolve l’universo del discorso. Le condizioni possono riguardare: – I valori di una proprietà. – I valori di proprietà diverse di una stessa entità. – I valori di proprietà di entità diverse di uno stesso insieme. – I valori di proprietà di entità di insiemi diversi. – Caratteristiche di collezioni di entità. – Le proprietà strutturali delle associazioni. • Dinamici: definiscono delle condizioni sul modo in cui la conoscenza concreta può evolvere nel tempo. Aspetto ontologico Es. Vincoli d’integrità • Vincolo d’integrità statico: –Il voto di un esame non può essere minore di 18 o maggiore di 30 • Vincolo d’integrita dinamico: – L’età di uno studente non può diminuire nel tempo Aspetto linguistico Formalismo grafico ER • Grazie al formalismo grafico Entity-Relationship (ER) è possibile descrivere la natura della conoscenza concreta in termini di classi, associazioni e gerarchie di classi • I vincoli d’integrità dovranno essere invece descritti a parte, mediante appositi descrittori di vincoli • Il modello ER di un universo del discorso è detto schema Aspetto linguistico ER: classi e attributi Le entità non hanno un corrispondente nell’ER, nel quale si modellano solo le classi, cioè collezioni di entità lingueParlate Persone telefono nome La classe Persone: una collezione di entità persone con proprietà lingueParlate, telefono, nome Attributi totale strutturato multivalore parziale unione Aspetto linguistico ER: associazioni Le associazioni si rappresentano come un rombo collegato con degli archi alle classi associate; esempio: haInPrestito inPrestitoA Libri Utenti Data Le associazioni possono avere delle proprietà haInPrestito Utenti inPrestitoA Libri Prestiti Data Aspetto linguistico Es. Associazioni (1:1) (1:1) associazione CorsiTenuti-TenutoDa tra Professori e Corsi: ogni professore deve tenere un corso (totale) e ogni Corso è tenuto da un professore (totale) corsoTenuto Professori tenutoDa Corsi Aspetto linguistico Es. Associazioni (1:n) (1:n) associazione Tesista-Relatore tra Professori e Studenti: ogni professore può avere uno, nessuno o più tesisti (parziale), mentre uno studente può avere nessuno o un relatore (parziale) relatoreDi Professori tesistaDi Studenti Aspetto linguistico Es. Associazioni (n:n) (n:n) associazione CorsiSeguiti-StudentiIscritti tra Studenti e Corsi: ogni studente segue almeno un corso (totale) e ogni corso è seguito da almeno uno studente (totale) studentiIscritti Corsi corsiSeguiti Studenti Aspetto linguistico Esempio della biblioteca Specializza PiùGenerale PiùSpecifico Indicizza Descrizioni Bibliografiche Termini Usa Descrive Documenti Fisici UsatoPer E’DatoIn E’SinonimoDi HaPreso HaScritto Autori Utenti Prestiti Aspetto linguistico Gerarchia tra classi • Fra le classi può essere definita una relazione di sottoclasse (o sottoinsieme), con le seguenti proprietà: • Se C è sottoclasse di C’, allora le proprietà di C sono un soprainsieme di quelle di C’ • Se C è sottoclasse di C’, allora le entita’ in C sono un sottoinsieme delle entita’ in C’ • La gerarchia può essere semplice o multipla Aspetto linguistico ER: sottoclassi e superclassi Persone nome: string lingueParlate: seq string annoNascita: int possiede: Auto Studenti matricola: string votiEsami: seq string annoIscrizione: int Aspetto linguistico Esempio: gerarchia multipla Persone Studenti Piloti StudentPiloti Aspetto linguistico Relazione tra sottoinsiemi Studenti Laureandi FuoriCorso Studenti Laureandi Sottoinsiemi indipendenti Sottoinsiemi disgiunti Matricole Persone Sottoinsiemi partizione Maschi Femmine Aspetto linguistico Esempio della biblioteca con sottoclassi Testi in Consultazione Specializza PiùGenerale PiùSpecifico Indicizza Descrive Descrizioni Bibliografiche Termini Usa Documenti Fisici UsatoPer E’DatoIn E’SinonimoDi HaPreso HaScritto Utenti Autori Regolari Docenti Sospesi Studenti Prestiti Aspetto linguistico Descrittore di classe con vincoli Classe Scopo Vincoli Esami Esami sostenuti dagli studenti iscritti chiave codice; 18 <= self.Voto <= 30; if self.Lode then self.voto = 30; Aspetto pragmatico Progettazione concettuale • Identificare le classi • Identificare le associazioni e le loro proprietà strutturali • Identificare le proprietà, e i loro tipi, delle classi e delle associazioni • Individuare le specializzazioni • Individuare le generalizzazioni