Informatica Introduzione alle basi di dati Lezione 10 Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico: 2005-2006 La progettazione logica Obiettivo: Costruire uno schema logico in grado di descrivere le informazioni contenute nello schema Entità-Relazione prodotto nella fase di progettazione concettuale Prima di passare allo schema logico, lo schema Entità-Relazione va ristrutturato: Per semplificare la traduzione (non tutti i costrutti del modello E-R hanno una traduzione naturale nei modelli logici) Per ottimizzare il progetto (la progettazione logica deve tener conto delle prestazioni del sistema) 2 Analisi delle prestazioni su schemi E-R Indici di prestazioni: le prestazioni di una base di dati non sono valutabili in maniera precisa dalla progettazione logica Dipendenti anche da parametri fisici Due parametri che regolano le prestazioni dei sistemi software: Costo di una operazione: in termini di numero di occorrenze di entità e associazione che mediamente vanno visitate per rispondere a una operazione Occupazione di memoria: lo spazio di memoria necessario per memorizzare i dati descritti dallo schema 3 Analisi delle prestazioni su schemi E-R Per studiare questi parametri, dobbiamo conoscere: Volume dei dati: Numero di occorrenze di ogni entità e associazione dello schema Dimensioni di ciascun attributo (di entità o associazione) Caratteristiche delle operazioni: tipo dell’operazione, frequenza, dati coinvolti 4 Analisi delle prestazioni su schemi E-R Numero abitanti Per esempio: Persona (1,1) Residenza (1,N) Città Tavola dei volumi: Entità e associazioni con il volume (numero di occorrenze) previsto Concetto Tipo Volume Città E 200 Persona E 1000000 Residenza R 1000000 5 Analisi delle prestazioni su schemi E-R Tavola delle operazioni: Per ogni operazione, la frequenza prevista (e un simbolo per il tipo, interattiva (I) o batch (B)) Per esempio: Op. 1: memorizza una nuova persona con la relativa città di residenza Op. 2: stampa tutti i dati di una città (incl. num. abitanti) Operazione Tipo Frequenza Op. 1 I 500 al giorno Op. 2 I 2 al giorno 6 Analisi delle prestazioni su schemi E-R Tavola degli accessi: Per una operazione, il numero e il tipo accessi (di lettura (L) o scrittura (S)) necessario per svolgere l’operazione Per esempio: Op. 1 Op. 2 Concetto Costrutto Accessi Tipo Concetto Costrutto Accessi Tipo Persona Città E 1 S Residenza R 1 S Città E 1 L Città E 1 S E 1 L 7 Ristrutturazione di schemi E-R Una serie di passi da effettuare in sequenza: 1. Analisi delle ridondanze (eliminare o mantenere eventuali ridondanze presente nello schema E-R) 2. 3. 4. Eliminazione delle generalizzazioni Partizionamento/accorpamento di entità e associazioni (partizionare concetti in più concetti, o accorpare concetti separati in un unico concetto) Scelta degli identificatori primari (per quelle entità che ne hanno più di uno) 8 Analisi delle ridondanze Ridondanza: presenza di un dato che può essere derivati da altri dati Numero abitanti Per esempio: Persona (1,1) Residenza (1,N) Città Un tipo di ridondanza: un attributo (Numero abitanti) è derivabile da una operazione di conteggio di occorrenze Numero abitanti per una città = numero di occorrenza della associazione Residenza a cui tale città partecipa Ci sono altri tipi di ridondanze in esempi diversi (pagine 261 e 262 di Atzeni et al.) 9 Analisi delle ridondanze La presenza di ridondanze (dati derivati) in uno schema E-R presente un vantaggio e alcuni svantaggi Vantaggio: riduzione degli accessi necessari Svantaggi: Maggiore occupazione di memoria (un costo spesso trascurabile) La necessità di effettuare operazioni aggiuntive per mantenere il dato derivato aggiornato La decisione di mantenere o eliminare una ridondanza va presa confrontando costo delle operazioni che coinvolgono il dato ridondante e relativa occupazione in memoria nei casi di presenza o assenza della ridondanza 10 Analisi delle ridondanze Numero abitanti Per esempio: Persona (1,1) Residenza (1,N) Città Presenza del dato ridondante (attributo Numero abitanti): Assumiamo che Numero abitanti richiede 4 byte Numero di città = 200, quindi il dato ridondante richiede 800 byte 11 Analisi delle ridondanze Presenza del dato ridondante (attributo Numero abitanti): Op. 1 (memorizza una nuova persona con la relativa città di residenza): dalla sua tavola degli accessi, op. 1 richiede: Un accesso in scritta a Persona (memorizzare la nuova persona) Un accesso in scrittura a Residenza (per memorizzare una nuova coppia persona-città) Un accesso in lettura a Città (per cercare la città di interesse) Concetto Costr. Acc. Tipo Persona E 1 S Residenza R 1 S Città E 1 L Città E 1 S Un accesso in scrittura a Città (per incrementare di uno il numero di abitanti di quella città) 12 Analisi delle ridondanze Assenza del dato ridondante (attributo Numero abitanti viene tolto): Op. 1: una nuova tavola degli accessi: Concetto Costr. Acc. Tipo Persona E 1 S Residenza R 1 S Un accesso in scritta a Persona (memorizzare la nuova persona) Un accesso in scrittura a Residenza (per memorizzare una nuova coppia persona-città) Conclusione: per op. 1, è meglio l’assenza del dato ridondante (meno accessi, 800 byte risparmiato) 13 Analisi delle ridondanze La situazione per op. 2 (stampa tutti i dati di una città, incluso numero abitanti) è diversa In presenza di ridondanza: Concetto Costr. Acc. Tipo Città E 1 L In assenza di ridondanza: In media, 5000 accessi in lettura a Residenza (5000 è ottenuto dividendo il numero di persone (1000000) per il numero di città (200)) Concetto Costr. Acc. Tipo Città E 1 L Residenza R 5000 L 14 Analisi delle ridondanze Riassunto: Op. 1: meglio senza ridondanza Op. 2: meglio con ridondanza Un analisi più precisa può tenere conto: Il costo di ogni operazione di lettura e scrittura (scrittura è più costoso) La frequenza delle operazioni (nella tabella delle operazioni) Se l’obiettivo della eliminazione delle ridondanze è di risparmiare memoria o di ridurre il numero di accessi ai dati 15 Eliminazione delle generalizzazioni I modelli logici tradizionali (per esempio, il modello relazionale) non consentono di rappresentare direttamente una generalizzazione È necessario trasformare le generalizzazioni in entità e/o associazioni Tre metodi: 1. 2. 3. Accorpamento delle figlie della generalizzazione nel padre Accorpamento del padre della generalizzazione nelle figlie Sostituzione della generalizzazione con associazioni 16 Eliminazione delle generalizzazioni Per esempio: A02 A01 E0 E3 R1 A21 A11 E1 E2 (X,Y) R2 E4 17 Eliminazione delle generalizzazioni 1. Accorpamento delle figlie della generalizzazione nel padre: A01 A11 (0,1) A02 A21 (0,1) E0 R1 E3 ATIPO (0,Y) R2 E4 18 Eliminazione delle generalizzazioni 2. Accorpamento del padre della generalizzazione nelle figlie: R1 E3 R1 A02 A11 A01 E1 A01 E2 A21 A02 (X,Y) R2 E4 19 Eliminazione delle generalizzazioni 3. Sostituzione della generalizzazione con associazioni: A02 A01 E0 (0,1) (0,1) RG1 A11 E3 R1 (1,1) E1 RG2 (1,1) E2 A21 R2 E4 20 Partizionamento/accorpamento di concetti Partizionare o accorpare entità e/o associazioni per ottenere una maggior efficienza delle operazioni (idea: ridurre gli accessi) Partizionamento di entità Eliminazione di attributi multivalore Accorpamento di entità Altri tipi di partizionamento/accorpamento 21 Partizionamento/accorpamento di concetti Partizionamenti di entità Cognome Per esempio: Indirizzo Prima Codice Livello Impiegato Stipendio Ritenute Data nascita Dopo Codice Cognome Indirizzo Data nascita Livello Dati anagrafici (1,1) Dati impiegato (1,1) Dati lavorativi Stipendio Ritenute 22 Partizionamento/accorpamento di concetti Partizionamenti di entità Cognome Per esempio: Indirizzo Dopo Cognome Indirizzo Data nascita Prima Codice Livello Impiegato Conviene se le operazioni che nascita coinvolgonoData frequentemente l’entità Impiegato richiedono solo informazioni Codice anagrafici o solo informazione relative alla sua retribuzione Dati Dati anagrafici (1,1) impiegato (1,1) Dati lavorativi Stipendio Ritenute Livello Stipendio Ritenute 23 Scelta degli identificatori principali Identificatori principali: cioè, le chiavi primarie Criteri per la scelta degli identificatori principali: Gli attributi con valori nulli non possono essere usati come identificatori principali È meglio scegliere un identificatore composto di pochi attributi È meglio scegliere un identificatore interno (composto di pochi attributi) È meglio scegliere un identificatore che viene utilizzato da molte operazioni 24 Traduzione verso il modello relazione 1. Schema E-R uno schema logico equivalente Entità e associazioni molti a molti Nome Cognome Stipendio Matricola Impiegato (0,N) Partecipazione (0,N) Progetto Data inizio Budget Codice Lo schema relazione corrispondente: Impiegato(Matricola, Cognome, Stipendio) Progetto(Codice, Nome, Budget) Partecipazione(Matricola, Codice, DataInizio) Due vincoli di integrità: tra Matricola e Codice di Partecipazione e Matricola e Codice di Impiegato e Progetto 25 Traduzione verso il modello relazione 1. Entità e associazioni molti a molti Per rendere più comprensibili il significato dello schema è conveniente effettuare ridenominazioni Per esempio: in Partecipazione, Matricola Impiegato, Codice Progetto Impiegato(Matricola, Cognome, Stipendio) Progetto(Codice, Nome, Budget) Partecipazione(Impiegato, Progetto, DataInizio) 26 Traduzione verso il modello relazione 1. Nome ditta Entità e associazioni molti a molti Fornitore (0,N) Fornitore Quantità (1,N) Prodotto Codice (1,N) Partita IVA Nome Dipartimento Genere Telefono Fornitore(PartitaIVA, NomeDitta) Dipartimento(Nome, Telefono) Prodotto(Codice, Genere) Fornitura(Fornitore, Prodotto, Dipartimento, Quantità) 27 Traduzione verso il modello relazione 1. Nome ditta Entità e associazioni molti a molti Fornitore (0,N) Fornitore Quantità (1,N) Prodotto Codice (1,N) Partita IVA Nome Dipartimento Genere Telefono Fornitore(PartitaIVA, NomeDitta) Dipartimento(Nome, Telefono) Prodotto(Codice, Genere), Fornitura(Fornitore, Prodotto, Dipartimento, Quantità) Tre vincoli di integrità: ognuno da un attributo della relazione Fornitura (mostrato dalle frecce) 28 Traduzione verso il modello relazione 2. Associazioni uno a molti Città Cognome Data nascita Ruolo Giocatore (1,1) Contratto (0,N) Squadra Ingaggio Colori Nome Uno schema relazione corrispondente: Giocatore(Cognome, DataNascita, Ruolo) Squadra(Nome, Città, Colori) Contratto(Giocatore, DataNascitaGiocatore, NomeSquadra, Ingaggio) 29 Traduzione verso il modello relazione 2. Associazioni uno a molti Città Cognome Data nascita Ruolo Giocatore (1,1) Contratto (0,N) Squadra Ingaggio Colori Nome Un altro schema relazione corrispondente: Giocatore(Cognome, DataNascita, Ruolo, NomeSquadra, Ingaggio) Squadra(Nome, Città, Colori) Un vincolo di integrità relazionale: tra NomeSquadra della relazione Giocatore e Nome della relazione Squadra 30 Traduzione verso il modello relazione 3. Associazioni uno a uno Telefono Cognome Stipendio Codice Direttore (1,1) Direzione (1,1) Dipartimento Sede Nome Data inizio Due possibilità simmetriche e ugualmente valide: Direttore(Codice, Cognome, Stipendio, DipartimentoDiretto, InizioDirezione) Dipartimento(Nome, Telefono, Sede) Direttore(Codice, Cognome, Stipendio) Dipartimento(Nome, Telefono, Sede, Direttore, InizioDirezione) 31 Traduzione verso il modello relazione 3. Associazioni uno a uno Telefono Cognome Stipendio Codice Direttore (1,1) Direzione (1,1) Dipartimento Sede Nome Data inizio Due possibilità simmetriche e ugualmente valide: Direttore(Codice, Cognome, Stipendio, DipartimentoDiretto, InizioDirezione) Dipartimento(Nome, Telefono, Sede) di Vincoli integrità Direttore(Codice, Cognome, Stipendio) referenziale Dipartimento(Nome, Telefono, Sede, Direttore, InizioDirezione) 32 Traduzione verso il modello relazione 3. Associazioni uno a uno Una terza possibilità: rappresentare tutti i concetti in una singola relazione Svantaggi: nello schema E-R le due entità sono separate per una ragione (o più ragioni); meglio tenere le entità separate anche nel modello logico 33 Traduzione verso il modello relazione 3. Associazioni uno a uno Telefono Cognome Stipendio Codice Impiegato (0,1) Direzione (1,1) Sede Dipartimento Nome Data inizio Uno schema relazionale: Impiegato(Codice, Cognome, Stipendio) Dipartimento(Nome, Telefono, Sede, Direttore, InizioDirezione) Vincolo di integrità referenziale: tra Direttore della relazione Dipartimento e Codice della relazione Impiegato Preferibile all’alternativa in cui l’associazione Direzione viene rappresentata nella relazione Impiegato: per il nome del dipartimento diretto, potrebbero essere valori nulli 34 Traduzione verso il modello relazione 3. Associazioni uno a uno Telefono Cognome Impiegato Stipendio (0,1) Direzione (0,1) Dipartimento Sede Nome Data inizio Codice Tre opzioni: a) b) Combinare l’entità Impiegato e l’associazione Direzione in una relazione, lasciare l’entità Dipartimento separata Combinare l’entità Dipartimento e l’associazione Direzione in una relazione, lasciare l’entità Impiegato separata … 35 Traduzione verso il modello relazione 3. Associazioni uno a uno Telefono Cognome Impiegato Stipendio (0,1) Direzione (0,1) Dipartimento Sede Nome Data inizio Codice Tre opzioni: … c) Lasciare l’entità Impiegato, l’associazione Direzione, e l’entità Dipartimento separate: Impiegato(Codice, Cognome, Stipendio) Dipartimento(Nome, Telefono, Sede) Direzione(Direttore, Dipartimento, DataInizioDirezione) 36 Traduzione verso il modello relazione 3. Associazioni uno a uno Telefono Cognome Impiegato Stipendio (0,1) Direzione (0,1) Dipartimento Sede Nome Data inizio Codice Tre opzioni: … c) Lasciare l’entità Impiegato, l’associazione Direzione, e l’entità Dipartimento separate: Vincoli di integrità referenziale Impiegato(Codice, Cognome, Stipendio) Dipartimento(Nome, Telefono, Sede) Direzione(Direttore, Dipartimento, DataInizioDirezione) 37 Traduzione verso il modello relazione 3. Associazioni uno a uno Telefono Cognome Impiegato Stipendio (0,1) Direzione (0,1) Dipartimento Sede Nome Data inizio Codice Tre opzioni: … c) Lasciare l’entità Impiegato, l’associazione Direzione, e l’entità Dipartimento separate: Impiegato(Codice, Cognome, Stipendio) Dipartimento(Nome, Telefono, Sede) Direzione(Direttore, Dipartimento, DataInizioDirezione) Vantaggio rispetto le opzioni a) e b): non ci sono i valori nulli 38