Presentazione 14.1 Progettazione di una base di dati Informatica Generale (Prof. Luca A. Ludovico) Ciclo di vita dei sistemi informativi 1. Studio di fattibilità 2. Raccolta e analisi dei requisiti 3. Progettazione – – dei dati delle applicazioni 4. Implementazione 5. Validazione e collaudo 6. Funzionamento • Tale processo non è quasi mai lineare, e richiede ritorni sui passi precedenti ciclo Informatica Generale (Prof. Luca A. Ludovico) Presentazione 14.1 Progettazione di una base di dati • Progettazione concettuale: da specifiche informali della realtà a descrizione formale e completa, ma indipendente dai criteri di rappresentazione usati in un DBMS. • Progettazione logica: traduzione dello schema concettuale nel modello di rappresentazione dei dati proprio del DBMS a disposizione, ancora indipendente però dai dettagli fisici. • Progettazione fisica: completamento del modello logico con la specifica dei parametri fisici di memorizzazione dei dati (organizzazione dei file e degli indici). Informatica Generale (Prof. Luca A. Ludovico) Presentazione 14.1 Progettazione di una base di dati Requisiti Progettazione della base di dati Prodotto Progettazione concettuale Schema concettuale Progettazione logica Schema logico Progettazione fisica Schema fisico Informatica Generale (Prof. Luca A. Ludovico) Presentazione 14.1 Progettazione di una base di dati Requisiti ABC Progettazione della base di dati Prodotto Progettazione concettuale Progettazione logica Progettazione fisica Informatica Generale (Prof. Luca A. Ludovico) Presentazione 14.1 Parte 1 Progettazione concettuale Informatica Generale (Prof. Luca A. Ludovico) Il modello Entità-Relazione • Il modello Entità-Relazione (Entity-Relationship, E-R) è un modello concettuale. • Fornisce una serie di strutture, i costrutti, per descrivere la realtà di interesse all’interno di uno schema concettuale. • I costrutti hanno una rappresentazione grafica con cui si costruisce un digramma che semplifica l’interpretazione dello schema concettuale. Informatica Generale (Prof. Luca A. Ludovico) Presentazione 14.1 Costrutti principali del modello: entità • Entità: classi di oggetti che hanno proprietà comuni ed esistenza autonoma ai fini dell’applicazione. – Esempi: Studente, Dipartimento, Corso • Istanza o occorrenza di entità: è un oggetto della classe. – Esempio: Milano e Roma sono 2 occorrenze dell’entità Città • Attenzione: una occorrenza di entità non è un valore che identifica un oggetto (ad es., matricola per Studente) ma è l’oggetto stesso (lo studente Mario Rossi matr. 610135) Informatica Generale (Prof. Luca A. Ludovico) Presentazione 14.1 Costrutti principali del modello: relazioni • Relazioni o associazioni: legami logici significativi per l’applicazione di interesse tra due o più entità. – Esempio: Esame è relazione tra Studente e Corso – Esempio: Afferenza è relazione tra Docente e Dipartimento • Istanza o occorrenza di relazione: è una ennupla costituita da occorrenze di entità, una per ciascuna delle entità coinvolte (nel caso frequente di relazione binaria, sono 2 occorrenze tra le 2 entità) – Esempio: istanza della relazione Esame può essere Giuseppe Bruni matr. 614152 <–> Informatica (cod. 112) Informatica Generale (Prof. Luca A. Ludovico) Presentazione 14.1 Costrutti principali del modello: attributi • Attributi: descrizioni delle proprietà elementari di entità e relazioni che sono di interesse ai fini dell’applicazione. – Esempio: matricola, nome, cognome sono possibili attributi dell’entità Studente. – Esempio: data_esame è possibile attributo di Esame. • Un attributo associa a ciascuna occorrenza di entità o relazione un valore appartenente a un insieme, detto dominio. • Alle volte si raggruppano in attributi composti. Informatica Generale (Prof. Luca A. Ludovico) Presentazione 14.1 Rappresentazione grafica dei costrutti 1/2 • Entità • Relazione • Attributo semplice • Attributo composto • Cardinalità di relazione • Cardinalità di attributo Informatica Generale (Prof. Luca A. Ludovico) Presentazione 14.1 (m1, M1) (m2, M2) (m, M) Alcune convenzioni • I nomi di entità e relazioni vengono scritti all’interno dei rispettivi simboli. • I nomi delle entità sono solitamente al singolare. Per le relazioni è meglio evitare verbi, perché la lettura diventa monodirezionale. • I nomi identificativi di entità e relazioni devono essere univoci, ossia non si possono ripetere nello schema. Per gli attributi di entità distinte invece il problema non sussiste. Informatica Generale (Prof. Luca A. Ludovico) Presentazione 14.1 Rappresentazione grafica dei costrutti • Identificatore interno • Identificatore esterno • Generalizzazione • Sottoinsieme Informatica Generale (Prof. Luca A. Ludovico) Presentazione 14.1 2/2 Altri costrutti: cardinalità delle relazioni • Descrive il numero min e max di occorrenze di relazione cui una occorrenza dell’entità può partecipare. In altri termini: quante volte in una relazione tra entità un’occorrenza di un’entità può essere legata a occorrenze dell’altra entità. • Valori solitamente usati: 0, 1, N – Cardinalità min: 0 (partecipaz. opzionale) o 1 (obbligatoria) – Cardinalità max: 1 o N (molti) • Esempio: (1, 5) Impiegato Informatica Generale (Prof. Luca A. Ludovico) Presentazione 14.1 (0, 50) Assegnamento Incarico Altri costrutti: cardinalità degli attributi • Descrive il numero min e max di valori del singolo attributo associati a ogni occorrenza di entità o relazione. • Nella maggior parte dei casi, la cardinalità è (1,1) e viene omessa. Valori solitamente usati: 0, 1, N – Cardinalità min: 0 (compilazione opzionale) o 1 (obbligatoria) – Cardinalità max: 1 o N (attributo multivalore) • Esempio: Persona (1, 1) cognome (0, 1) patente (0, N) Informatica Generale (Prof. Luca A. Ludovico) Presentazione 14.1 targa auto Altri costrutti: generalizzazione • Legame logico tra una entità E detta entità padre e una o più entità E1, … , En dette entità figlie, di cui E è più generale. • E è generalizzazione di E1, … , En mentre E1, … , En sono specializzazioni di E. • Esempi: – – Uomo e Donna sono specializzazioni di Persona. Professionista è generalizzazione di Medico, Avvocato e Ingegnere. • Ogni occorrenza di entità figlia è pure occorrenza del padre. • Ogni proprietà dell’entità padre è pure proprietà di tutte le entità figlie: ereditarietà. Informatica Generale (Prof. Luca A. Ludovico) Presentazione 14.1 Classificazione delle generalizzazioni 1. Totale vs. parziale – – Totale se ogni occorrenza della classe padre è occorrenza di almeno una delle classi figlie Parziale altrimenti 2. Esclusiva vs sovrapposta – – Esclusiva se ogni occorrenza della classe padre è al più occorrenza di una delle classi figlie Sovrapposta altrimenti. • Esempi: – – – E = Persona, E1 = Uomo, E2 = Donna: gen. totale esclusiva E = Veicolo, E1 = Auto, E2 = Bici: gen. parziale esclusiva E = Persona, E1 = Studente, E2 = Lavoratore: gen. parziale sovrapposta Informatica Generale (Prof. Luca A. Ludovico) Presentazione 14.1 Esempi di schemi concettuali Cognome Anno Matricola (0, N) (0, N) Studente Corso Esame Nome Anno Docente voto data (1, N) (0, N) Sede lavoro Cognome Stipendio Codice fisc (1, 1) Impiegato (0, N) Nascita data Comune Nome Nazione Abitanti Esercizio: testo • • • • • • Si progetti lo schema concettuale di un database contenente informazioni di carattere organizzativo relative a un’azienda con diverse sedi. Ogni sede è dislocata in una città, presenta un indirizzo ed è organizzata in dipartimenti. Ogni dipartimento ha un nome e un numero di telefono. Ai dipartimenti afferiscono, a partire da una certa data, i dipendenti dell’azienda. Alcuni impiegati svolgono il ruolo di direttore di dipartimento. Tutti gli impiegati vengono descritti per cognome, nome, stipendio, età e codice identificativo univoco. I dipendenti lavorano su progetti a partire da una certa data. Ogni progetto ha un nome, un budget e una data di consegna. Informatica Generale (Prof. Luca A. Ludovico) Presentazione 14.1 Esercizio: soluzione (0,N) (1,N) Direzione Cognome Nome Stipendio Età Codice (1,N) Impiegato Nome Telefono (1,N) Afferenza (1,N) Dipartimento (1,1) data Partecipazione Composizione data (0,N) Nome Budget Data cons. Progetto (1,N) Sede Indirizzo Città Via Civico CAP Parte 2 Progettazione logica Informatica Generale (Prof. Luca A. Ludovico) Le due fasi della progettazione logica 1. Ristrutturazione dello schema Entità-Relazione Finalità: ottimizzazione dello schema concettuale (E-R) e semplificazione della fase successiva Fasi: • • • • Analisi delle ridondanze (attributi e associazioni derivabili) Eliminazione delle generalizzazioni (accorpamento delle figlie nel padre, del padre nelle figlie, sostituzione con associazioni) Partizionamento/accorpamento di entità e associazioni Scelta degli identificatori primari 2. Traduzione verso il modello logico Informatica Generale (Prof. Luca A. Ludovico) Presentazione 14.1 I tipi di associazione 1. Uno a uno: quando la cardinalità massima a entrambi i lati dell’associazione è 1. • Esempio: l’associazione Identificazione tra le entità Impiegato e Carta_identità. 2. Uno a molti: quando la cardinalità massima è posta a 1 su un lato e a N sull’altro lato. • Esempio: l’associazione Composizione tra le entità Autore e Opera (1 autore può comporre tante opere, 1 opera è composta da uno e un solo autore). 3. Molti a molti: quando la cardinalità massima è posta a N (o comunque è maggiore di 1) su entrambi i lati. • Esempio: l’associazione Esame tra le entità Studente e Corso Informatica Generale (Prof. Luca A. Ludovico) Presentazione 14.1 Traduzione da schema concettuale a logico • Entità: in generale si traducono in tabelle. Ogni entità origina una tabella, le cui colonne corrispondono agli attributi. • Relazioni: 1. 2. 3. Uno a uno: le due entità coinvolte danno origine nello schema ristrutturato a un’unica tabella, che coinvolge tutti gli attributi delle entità originarie. Uno a molti: le due entità si traducono in due tabelle distinte, con un vincolo di chiave esterna tra l’entità che presenta molteplicità e la chiave primaria dell’altra entità. Molti a molti: le due entità si traducono in due tabelle, e si aggiunge una terza tabella che presenta chiavi esterne verso le due entità originarie. L’insieme delle chiavi esterne è chiave primaria per la tabella. Informatica Generale (Prof. Luca A. Ludovico) Presentazione 14.1 Esercizio con Access Cognome Anno Matricola (0, N) (0, N) Studente Corso Esame Nome Anno Codice (1,1) data voto Affidamento (0,N) Docente Nome Cognome Matricola