Progettazione di basi di dati Metodologie e modelli Progettazione di basi di dati È una delle attività del processo di sviluppo dei sistemi informativi va quindi inquadrata in un contesto più generale: il ciclo di vita dei sistemi informativi: Progettazione ER Insieme e sequenzializzazione delle attività svolte da analisti, progettisti, utenti, nello sviluppo e nell’uso dei sistemi informativi attività iterativa, quindi ciclo 21 December, 2015 - slide 2 Studio di fattibilità Raccolta e analisi dei requisiti Progettazione Realizzazione Validazione e collaudo Funzionamento Progettazione ER 21 December, 2015 - slide 3 Fasi (tecniche) del ciclo di vita Studio di fattibilità: definizione costi e priorità Raccolta e analisi dei requisiti: studio delle proprietà del sistema Progettazione: di dati e funzioni Realizzazione Validazione e collaudo: sperimentazione Funzionamento: il sistema diventa operativo Si aggiunge la PROTOTIPAZIONE che può portare a Progettazione ER Modifica dei requisiti 21 December, 2015 - slide 4 La progettazione di un sistema informativo riguarda due aspetti: progettazione dei dati progettazione delle applicazioni Ma: i dati hanno un ruolo centrale Progettazione ER i dati sono più stabili 21 December, 2015 - slide 5 Studio di fattibilità Raccolta e analisi dei requisiti Progettazione dei dati Realizzazione Validazione e collaudo Funzionamento Progettazione ER 21 December, 2015 - slide 6 Requisiti della base di dati “CHE COSA”: analisi Progettazione concettuale Schema concettuale Progettazione logica Schema logico “COME”: progettazione Progettazione fisica Schema fisico Progettazione ER 21 December, 2015 - slide 9 Modello dei dati insieme di costrutti utilizzati per organizzare i dati di interesse e descriverne la dinamica componente fondamentale: meccanismi di strutturazione (o costruttori di tipo) come nei linguaggi di programmazione esistono meccanismi che permettono di definire nuovi tipi, così ogni modello dei dati prevede alcuni costruttori ad esempio, il modello relazionale prevede il costruttore relazione, che permette di definire insiemi di record omogenei Progettazione ER 21 December, 2015 - slide 11 Schemi e istanze In ogni base di dati esistono: lo schema, sostanzialmente invariante nel tempo, che ne descrive la struttura (aspetto intensionale) nel modello relazionale, le intestazioni delle tabelle l’istanza, i valori attuali, che possono cambiare anche molto rapidamente (aspetto estensionale) nel modello relazionale, il “corpo” di ciascuna tabella Progettazione ER 21 December, 2015 - slide 12 Due tipi (principali) di modelli modelli logici: utilizzati nei DBMS esistenti per l’organizzazione dei dati utilizzati dai programmi indipendenti dalle strutture fisiche esempi: relazionale, reticolare, gerarchico, a oggetti modelli concettuali: permettono di rappresentare i dati in modo indipendente da ogni sistema cercano di descrivere i concetti del mondo reale sono utilizzati nelle fasi preliminari di progettazione il più noto è il modello Entity-Relationship Progettazione ER 21 December, 2015 - slide 13 Modelli concettuali, perché? Proviamo a modellare una applicazione definendo direttamente lo schema logico della base di dati: Progettazione ER da dove cominciamo? rischiamo di perderci subito nei dettagli dobbiamo pensare subito a come correlare le varie tabelle (chiavi etc.) i modelli logici sono rigidi 21 December, 2015 - slide 14 Modelli concettuali, perché? servono per ragionare sulla realtà di interesse, indipendentemente dagli aspetti realizzativi permettono di rappresentare le classi di dati di interesse e le loro correlazioni prevedono efficaci rappresentazioni grafiche (utili anche per documentazione e comunicazione) Progettazione ER 21 December, 2015 - slide 15 Architettura (semplificata) di un DBMS utente Schema logico Schema interno BD Progettazione ER 21 December, 2015 - slide 16 Progettazione concettuale Progettazione logica Progettazione fisica Progettazione ER 21 December, 2015 - slide 17 Modello Entity-Relationship (Entità-Relazione) Il più diffuso modello concettuale Progettazione ER Ne esistono molte versioni, (più o meno) diverse l’una dall’altra 21 December, 2015 - slide 18 I costrutti del modello E-R Progettazione ER Entità Relationship Attributo Identificatore Generalizzazione …. 21 December, 2015 - slide 19 Entità Classe di oggetti (fatti, persone, cose) della applicazione di interesse con proprietà comuni e con esistenza “autonoma” Esempi: Progettazione ER impiegato, città, conto corrente, ordine, fattura 21 December, 2015 - slide 20 Relationship Legame logico fra due o più entità, rilevante nell’applicazione di interesse Esempi: Progettazione ER Residenza (fra persona e città) Esame (fra studente e corso) 21 December, 2015 - slide 21 Uno schema E-R, graficamente Studente Progettazione ER Esame Corso 21 December, 2015 - slide 22 Entità Classe di oggetti (fatti, persone, cose) della applicazione di interesse con proprietà comuni e con esistenza “autonoma” Esempi: Progettazione ER impiegato, città, conto corrente, ordine, fattura 21 December, 2015 - slide 23 Entità: schema e istanza Entità: classe di oggetti, persone, … "omogenei" Occorrenza (o istanza) di entità: elemento della classe (l'oggetto, la persona, …, non i dati) nello schema concettuale rappresentiamo le entità, non le singole istanze (“astrazione”) Progettazione ER 21 December, 2015 - slide 24 Rappresentazione grafica di entità Progettazione ER Impiegato Dipartimento Città Vendita 21 December, 2015 - slide 25 Entità, commenti Ogni entità ha un nome che la identifica univocamente nello schema: nomi espressivi opportune convenzioni singolare Progettazione ER 21 December, 2015 - slide 26 Relationship Legame logico fra due o più entità, rilevante nell’applicazione di interesse Esempi: Residenza (fra persona e città) Esame (fra studente e corso) Chiamata anche: Progettazione ER relazione, correlazione, associazione 21 December, 2015 - slide 27 Rappresentazione grafica di relationship Studente Esame Corso Impiegato Residenza Città Progettazione ER 21 December, 2015 - slide 28 Relationship, commenti Ogni relationship ha un nome che la identifica univocamente nello schema: nomi espressivi opportune convenzioni singolare sostantivi invece che verbi (se possibile) Progettazione ER 21 December, 2015 - slide 29 Esempi di occorrenze E1 E2 S1 E3 S2 C2 S3 S4 Studente Progettazione ER C1 E4 C3 Corso 21 December, 2015 - slide 30 Relationship, occorrenze Una occorrenza di una relationship binaria è coppia di occorrenze di entità, una per ciascuna entità coinvolta Una occorrenza di una relationship n-aria è una n-upla di occorrenze di entità, una per ciascuna entità coinvolta Nell'ambito di una relationship non ci possono essere occorrenze (coppie, ennuple) ripetute Progettazione ER 21 December, 2015 - slide 31 Due relationship sulle stesse entità Sede di lavoro Impiegato Progettazione ER Residenza Città 21 December, 2015 - slide 33 Relationship n-aria Fornitore Fornitura Prodotto Dipartimento Progettazione ER 21 December, 2015 - slide 34 Relationship ricorsiva: coinvolge “due volte” la stessa entità Conoscenza Persona Progettazione ER 21 December, 2015 - slide 35 Relationship ricorsiva con “ruoli” Successione Successore Progettazione ER Presidente Predecessore 21 December, 2015 - slide 36 Esempi di occorrenze successore:S2,predecessore: S3 successore:S1,predecessore: S2 S2 S3 Successore Progettazione ER Predecessore S1 21 December, 2015 - slide 37 Relationship ternaria ricorsiva Superficie Migliore Peggiore Confronto Tennista Progettazione ER 21 December, 2015 - slide 38 Esempi di occorrenze S1 T1 è migliore di T2 su S2 S2 T2 è migliore di T1 su S1 T3 è migliore di T2 su S1 T1 T2 T3 Progettazione ER 21 December, 2015 - slide 39 Attributo Proprietà elementare di un’entità o di una relationship, di interesse ai fini dell’applicazione Associa ad ogni occorrenza di entità o relationship un valore appartenente a un insieme detto dominio dell’attributo Progettazione ER 21 December, 2015 - slide 40 Attributi, rappresentazione grafica Cognome Nome Data Studente Matricola Progettazione ER Voto Esame Titolo Corso Codice 21 December, 2015 - slide 41 Esempi di occorrenze Matricola: 34567 Data: 25/07/2004 Cognome: Rossi Voto: 26 Nome: Mario Codice: Inf205 Titolo: Basi di dati E1 E2 S1 C1 S2 C2 Matricola: 46742 Cognome: Neri Nome: Piero Esame Studente Progettazione ER Corso 21 December, 2015 - slide 42 Attributi composti Raggruppano attributi di una medesima entità o relationship che presentano affinità nel loro significato o uso Esempio: Progettazione ER Via, Numero civico e CAP formano un Indirizzo 21 December, 2015 - slide 43 Rappresentazione grafica Cognome Impiegato Età Indirizzo Via Numero CAP Progettazione ER 21 December, 2015 - slide 44 Cognome Telefono Direzione Impiegato Dipartimento Afferenza Codice Nome Composizione Partecipazione Data Progetto Budget Progettazione ER Nome Sede Via Indirizzo CAP Città 21 December, 2015 - slide 45 Altri costrutti del modello E-R Cardinalità di relationship di attributo Identificatore interno esterno Generalizzazione Progettazione ER 21 December, 2015 - slide 46 Cardinalità di relationship Coppia di valori associati a ogni entità che partecipa a una relationship specificano il numero minimo e massimo di occorrenze delle relationship cui ciascuna occorrenza di una entità può partecipare Progettazione ER 21 December, 2015 - slide 47 Esempio di cardinalità (1,5) Impiegato Progettazione ER (0,50) Assegnamento Incarico 21 December, 2015 - slide 48 per semplicità usiamo solo tre simboli: 0 e 1 per la cardinalità minima: 0 = “partecipazione opzionale” 1 = “partecipazione obbligatoria” 1 e “N” per la massima: Progettazione ER “N” non pone alcun limite 21 December, 2015 - slide 49 Occorrenze di Residenza R1 S1 C1 S2 S3 C2 R2 S4 R3 R4 Studente Progettazione ER C3 C4 Città 21 December, 2015 - slide 50 Cardinalità di Residenza (1,1) Studente Progettazione ER (0,N) Residenza Città 21 December, 2015 - slide 51 Tipi di relationship Con riferimento alle cardinalità massime, abbiamo relationship: Progettazione ER uno a uno uno a molti molti a molti 21 December, 2015 - slide 52 Relationship “molti a molti” (0,N) Studente (0,N) Corso Esame (0,N) Montagna (1,N) Scalata Alpinista (1,N) Macchinista Progettazione ER (1,N) Abilitazione Locomotore 21 December, 2015 - slide 53 Relationship “uno a molti” (0,1) Persona (0,N) Impiego Azienda (1,1) Cinema (0,N) Ubicazione Località (1,1) Comune Progettazione ER (1,N) Ubicazione Provincia 21 December, 2015 - slide 54 Due avvertenze Attenzione al "verso" nelle relationship uno a molti le relationship obbligatorie-obbligatorie sono molto rare Progettazione ER 21 December, 2015 - slide 55 Relationship “uno a uno” (0,1) Professore Professore di ruolo Professore di ruolo Progettazione ER (0,1) Cattedra Titolarità (1,1) (0,1) Cattedra Titolarità (1,1) (1,1) Titolarità Cattedra coperta 21 December, 2015 - slide 56 Cardinalità di attributi E’ possibile associare delle cardinalità anche agli attributi, con due scopi: Progettazione ER indicare opzionalità ("informazione incompleta") indicare attributi multivalore 21 December, 2015 - slide 57 Rappresentazione grafica (0,N) Nome Impiegato (0,1) Progettazione ER Telefono Numero patente 21 December, 2015 - slide 58 Identificatore di una entità “strumento” per l’identificazione univoca delle occorrenze di un’entità costituito da: attributi dell’entità (attributi +) entità esterne attraverso relationship Progettazione ER identificatore interno identificatore esterno 21 December, 2015 - slide 59 Identificatori interni Targa Automobile Modello Data Nascita Persona Indirizzo Progettazione ER Cognome Nome 21 December, 2015 - slide 60 Identificatore esterno Cognome Matricola Nome (1,1) Studente Anno di corso Progettazione ER (0,N) Iscrizione Università Indirizzo 21 December, 2015 - slide 61 Alcune osservazioni ogni entità deve possedere almeno un identificatore, ma può averne in generale più di uno una identificazione esterna è possibile solo attraverso una relationship a cui l’entità da identificare partecipa con cardinalità (1,1) perché non parliamo degli identificatori delle relationship? Progettazione ER 21 December, 2015 - slide 62 (0,1) Cognome (0,1) Telefono Direzione Impiegato (0,N) (1,1) (0,N) Codice (1,N) Progettazione ER Nome Nome (1,1) Data Progetto Dipartimento Afferenza (0,1) Partecipazione Budget (1,N) Composizione (1,N) Sede Via Indirizzo CAP Città 21 December, 2015 - slide 63 Generalizzazione mette in relazione una o più entità E1, E2, ..., En con una entità E, che le comprende come caso particolare Progettazione ER E è generalizzazione di E1, E2, ..., En E1, E2, ..., En sono specializzazioni (o sottotipi) di E 21 December, 2015 - slide 66 Rappresentazione grafica Dipendente Impiegato Progettazione ER Funzionario Dirigente 21 December, 2015 - slide 67 Proprietà delle generalizzazioni Se E (genitore) è generalizzazione di E1, E2, ..., En (figlie): ogni proprietà di E è significativa per E1, E2, ..., En ogni occorrenza di E1, E2, ..., En è occorrenza anche di E Progettazione ER 21 December, 2015 - slide 68 Città (0,N) Nascita (1,1) Persona Codice fiscale Nome Età Stipendio Lavoratore Progettazione ER Studente 21 December, 2015 - slide 69 Ereditarietà tutte le proprietà (attributi, relationship, altre generalizzazioni) dell’entità genitore vengono ereditate dalle entità figlie e non rappresentate esplicitamente Progettazione ER 21 December, 2015 - slide 70 Tipi di generalizzazioni totale se ogni occorrenza dell'entità genitore è occorrenza di almeno una delle entità figlie, altrimenti è parziale esclusiva se ogni occorrenza dell'entità genitore è occorrenza di al più una delle entità figlie, altrimenti è sovrapposta consideriamo (senza perdita di generalità) solo generalizzazioni esclusive e distinguiamo fra totali e parziali Progettazione ER 21 December, 2015 - slide 71 Persona Disoccupato Progettazione ER Lavoratore 21 December, 2015 - slide 72 Persona Uomo Progettazione ER Donna 21 December, 2015 - slide 73 Esercizio Le persone hanno CF, cognome ed età; gli uomini anche la posizione militare; gli impiegati hanno lo stipendio e possono essere segretari, direttori o progettisti (un progettista può essere anche responsabile di progetto); gli studenti (che non possono essere impiegati) un numero di matricola; esistono persone che non sono né impiegati né studenti (ma i dettagli non ci interessano) Progettazione ER 21 December, 2015 - slide 75 CF Persona Cognome Uomo Stipendio Donna Età Matr. Impiegato Studente Direttore Progettista Militare Segretario Responsabile Progettazione ER 21 December, 2015 - slide 76 Documentazione associata agli schemi concettuali dizionario dei dati entità relationship Progettazione ER vincoli non esprimibili 21 December, 2015 - slide 77 (0,1) (1,1) Direzione Cognome Impiegato Codice (0,N) (0,1) (0,N) Partecipazione Afferenza (0,1) Data (1,N) Progetto Budget Progettazione ER Nome Telefono (1,N) Dipartimento Nome (1,1) Composizione (1,N) Sede Via Indirizzo CAP Città 21 December, 2015 - slide 78 Dizionario dei dati (entità) Entità Impiegato Progetto Descrizione Dipendente dell'azienda Progetti aziendali Dipartimento Struttura aziendale Sede Sede dell'azienda Progettazione ER Attributi Codice, Cognome, Stipendio Nome, Budget Nome, Telefono Città, Indirizzo Identificatore Codice Nome Nome, Sede Città 21 December, 2015 - slide 79 Dizionario dei dati (relationship) Relazioni Direzione Descrizione Direzione di un dipartimento Afferenza Afferenza a un dipartimento Partecipazione Partecipazione a un progetto Composizione Composizione dell'azienda Progettazione ER Componenti Attributi Impiegato, Dipartimento Impiegato, Data Dipartimento Impiegato, Progetto Dipartimento, Sede 21 December, 2015 - slide 80 Vincoli non esprimibili Vincoli di integrità sui dati (1) Il direttore di un dipartimento deve a afferire a tale dipartimento (2) Un impiegato non deve avere uno stipendio maggiore del direttore del dipartimento al quale afferisce (3) Un dipartimento con sede a Roma deve essere diretto da un impiegato con più di dieci anni di anzianità (4) Un impiegato che non afferisce a nessun dipartimento non deve partecipare a nessun un progetto Progettazione ER 21 December, 2015 - slide 81 Modellazione dei dati in UML UML viene talvolta utilizzato in alternativa al modello ER per la rappresentazione concettuale dei dati Si fa uso dei diagrammi delle classi Cambia la rappresentazione diagrammatica ma non l’approccio alla progettazione Vediamo come sia possibile rappresentare schemi concettuali con UML Progettazione ER 21 December, 2015 - slide 82 Classi Impiegato Codice Cognome Stipendio Età Progettazione ER Progetto Nome Budget Data consegna 21 December, 2015 - slide 83 Associazioni Studente Matricola Corso Esame Anno Iscrizione Nome Anno corso Sede di lavoro Impiegato Cognome Stipendio Età Progettazione ER Città Residenza Nome Numero abitanti 21 December, 2015 - slide 84 Classe di associazione Studente Corso Matricola Nome Anno Iscrizione Anno corso Esame Data Voto Progettazione ER 21 December, 2015 - slide 85 Associazione ternaria Dipartimento Nome Telefono Fornitore Prodotto Denominazione Codice Indirizzo Prezzo Fornitura Quantità Progettazione ER 21 December, 2015 - slide 86 Reificazione di associazione Dipartimento Nome Telefono Fornitore Denominazione Indirizzo Progettazione ER Fornitura Quantità Prodotto Codice Prezzo 21 December, 2015 - slide 87 Aggregazione e composizione Progettazione ER Team Tecnico Azienda Filiale 21 December, 2015 - slide 88 Associazioni con molteplicità Ordine Persona Turista Progettazione ER 1 Vendita Residenza Prenotazione 0..1 Fattura Città 1.. Viaggio 21 December, 2015 - slide 89 Identificatori Automobile Targa {id} Modello Colore Progettazione ER Persona Data Nascita {id} Cognome {id} Nome {id} Indirizzo 21 December, 2015 - slide 90 Identificatore esterno Studente Matricola {id} Anno Iscrizione Cognome Università 1.. Iscrizione <<identificante>> 1 Nome {id} Città Indirizzo 25/07/2009 Progettazione ER 21 December, 2015 - slide 91 Generalizzazioni Persona Professionista Codice Fiscale {id} Partita IVA {id} Cognome Indirizzo Età {parziale, esclusiva} Uomo Situazione militare Progettazione ER Donna Avvocato Ingegnere Dottore Specializzazione 21 December, 2015 - slide 92 Uno schema concettuale in UML Direzione 1 0..1 Impiegato Dipartimento Codice {id} 0..1 1.. Cognome Telefono 1.. Stipendio Afferenza Età 1.. Data afferenza 1.. Partecipazione Composizione <<identificante>> Data inizio 1 Progetto Progettazione ER Nome {id} Nome {id} Progetti aziendali Budget nei quali lavorano Data consegna 0..1 gli impiegati Sede Città {id} Indirizzo 21 December, 2015 - slide 93 Esercizio: biblioteca Definire uno schema E-R per una biblioteca, con le seguenti specifiche: oggetto dei prestiti sono esemplari (detti anche copie) di singoli volumi, identificati attraverso un numero di inventario; ogni volume è relativo ad una specifica edizione (che può essere articolata in più volumi, anche in modo diverso dalle altre edizioni) di un'opera un volume può essere presente in più copie una edizione è caratterizzata dall'opera, dalla collana e dall'anno riassumendo ed esemplificando, è possibile prendere in prestito la seconda copia del terzo volume de “I Miserabili”, edizione Mondadori, collana Oscar, del 1975 Progettazione ER ogni collana ha un nome e un codice e un editore ogni editore ha un nome e un codice ogni opera ha un titolo, un autore e un anno di prima pubblicazione per ogni prestito in corso (quelli conclusi non interessano), sono rilevanti la data prevista di restituzione e l'utente (che può avere più volumi in prestito contemporaneamente), con codice identificativo, nome, cognome e recapito telefonico 21 December, 2015 - slide 94 Esercizio: biblioteca Codice Editore Volume Nome (0,N) NumInv (1,1) (0,N) (1,1) Copia (0,1) Numero Prestito (1,1) Collana (0,N) (0,N) (1,1) Edizione Data NVolumi Anno (0,N) Utente (1,1) Codice Nome Codice (0,N) Titolo Opera Progettazione ER Autore Nome Cognome Telefono Anno 21 December, 2015 - slide 95