Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999 Progettazione logica Dati di ingresso e uscita Obiettivo della progettazione logica • "tradurre" lo schema concettuale in uno schema logico che rappresenti gli stessi dati in maniera corretta ed efficiente Non si tratta di una pura e semplice traduzione • Ingresso: • • • schema concettuale informazioni sul carico applicativo modello logico • Uscita: • • • alcuni aspetti non sono direttamente rappresentabili • è necessario considerare le prestazioni schema logico documentazione associata Carico applicativo Schema E-R Ristrutturazione dello schema E-R Modello logico Schema E-R ristrutturato Traduzione nel modello logico Schema logico Ristrutturazione schema E-R • Motivazioni: • semplificare la traduzione • "ottimizzare" le prestazioni • Osservazione: • uno schema E-R ristrutturato non è (più) uno schema concettuale nel senso stretto del termine 1 Attività della ristrutturazione • • • • Analisi delle ridondanze Eliminazione delle generalizzazioni Partizionamento/accorpamento di entità e relationship Scelta degli identificatori primari Analisi delle ridondanze • Una ridondanza in uno schema E-R è una informazione significativa ma derivabile da altre • in questa fase si decide se eliminare le ridondanze eventualmente presenti o mantenerle Forme di ridondanza in uno schema E-R Ridondanze • Vantaggi • semplificazione delle interrogazioni • Svantaggi • appesantimento degli aggiornamenti • maggiore occupazione di spazio • attributi derivabili: • da altri attributi della stessa entità (o relazione) • da attributi di altre entità (o relazioni) • relazioni derivabili dalla composizione di altre relazioni in presenza di cicli Attributo derivabile da altra entità Attributo derivabile Importo netto Importo totale Prezzo (1,N) Impiegato IVA Acquisto (1,N) Composizione Prodotto Importo lordo 2 Analisi di una ridondanza Studente (0,N) Ridondanza dovuta a ciclo Frequenza (1,N) Corso (1,1) Numero abitanti (0,N) Docenza (1,N) Persona Residenza Città Insegnamento (1,1) Professore Attività della ristrutturazione • • • • Analisi delle ridondanze Eliminazione delle generalizzazioni Partizionamento/accorpamento di entità e relazioni Scelta degli identificatori primari Eliminazione delle gerarchie • il modello relazionale non può rappresentare direttamente le generalizzazioni • entità e relazioni sono invece direttamente rappresentabili • si eliminano perciò le gerarchie, sostituendole con entità e relazioni A01 A02 Tre possibilità E0 1. accorpamento delle figlie della generalizzazione nel genitore 2. accorpamento del genitore della generalizzazione nelle figlie 3. sostituzione della generalizzazione con relazioni R1 E1 E2 A11 A21 E3 R2 E4 3 A01 A02 A01 A02 (0,1) A11 E0 A21 E3 R1 E0 R1 E3 (0,1) TIPO (0,..) R2 E4 E1 E2 A11 A21 A01 R2 E4 A02 R11 R12 E3 E1 E2 R2 A01 A11 A02 A01 A21 A02 A01 E4 E0 R1 E1 E2 A11 A21 E3 R2 E4 A02 E0 R1 (0,1) (0,1) (1,1) (1,1) RG1 E3 RG2 E1 E2 A11 A21 R2 • la scelta fra le alternative si può fare con metodo simile a quello visto per l'analisi delle ridondanze (però non basato solo sul numero degli accessi) • è possibile seguire alcune semplici regole generali E4 4 A01 1. conviene se gli accessi al padre e alle figlie sono contestuali 2. conviene se gli accessi alle figlie sono distinti 3. conviene se gli accessi alle entità figlie sono separati dagli accessi al padre • A02 (0,1) A11 E0 TIPO R1 (0,1) RG2 (1,1) sono anche possibili soluzioni “ibride”, soprattutto in gerarchie a più livelli E2 A21 Attività della ristrutturazione • • • • Analisi delle ridondanze Eliminazione delle generalizzazioni Partizionamento/accorpamento di entità e relazioni Scelta degli identificatori primari E3 R2 E4 • Ristrutturazioni effettuate per rendere più efficienti le operazioni in base a un semplice principio • Gli accessi si riducono: • separando attributi di un concetto che vengono acceduti separatamente • raggruppando attributi di concetti diversi acceduti insieme Ristrutturazioni, casi principali Cognome Codice Livello • partizionamento verticale di entità • partizionamento orizzontale di relationship • eliminazione di attributi multivalore • accorpamento di entità/ relationship Indirizzo Impiegato Data nascita Stipendio Ritenute 5 Stipendio Cognome Codice Indirizzo (1,1) (1,1) Dati anagrafici Nome Livello Dati lavorativi R Città Agenzia Telefono (1,N) Indirizzo Data nascita Città Ritenute Nome Numero (1,N) Agenzia Utenza Interno Indirizzo (0,1) Telefono Persona Indirizzo Codice fiscale (1,1) Intestazione Ruolo Cognome (1,N) Giocatore Persona Indirizzo (0,1) Appartamento Data nascita Interno (0,1) Indirizzo Data nascita Codice fiscale (1,1) Indirizzo Cognome Cognome Città (1,N) Composizione Data acquisto Nome Squadra (0,1) Data cessione 6 Data acquisto Ruolo (1,1) Attività della ristrutturazione Comp. attuale (1,N) Giocatore Cognome Nome Squadra (1,N) Comp. passata Data acquisto (1,N) Città • Analisi delle ridondanze • Eliminazione delle generalizzazioni • Partizionamento/accorpamento di entità e relazioni • Scelta degli identificatori primari Data cessione Scelta degli identificatori principali • operazione indispensabile per la traduzione nel modello relazionale • Criteri • assenza di opzionalità • semplicità • utilizzo nelle operazioni più frequenti o importanti Traduzione verso il modello relazionale Se nessuno degli identificatori soddisfa i requisiti visti? Si introducono nuovi attributi (codici) contenenti valori speciali generati appositamente per questo scopo Entità e relationship molti a molti Cognome Matricola • idea di base: • le entità diventano relazioni sugli stessi attributi • le associazioni (ovvero le relazioni E-R) diventano relazioni sugli identificatori delle entità coinvolte (più gli attributi propri) Data inizio (0,N) Impiegato Codice Nome (1,N) Partecipazione Progetto Stipendio Budget Impiegato(Matricola, Cognome, Stipendio) Progetto(Codice, Nome, Budget) Partecipazione(Matricola, Codice, DataInizio) 7 Entità e relationship molti a molti Impiegato(Matricola, Cognome, Stipendio) Progetto(Codice, Nome, Budget) Partecipazione(Matricola, Codice, DataInizio) • con vincoli di integrità referenziale fra • Matricola in Partecipazione e (la chiave di) Impiegato • Codice in Partecipazione e (la chiave di) Progetto Nomi più espressivi per gli attributi della chiave della relazione che rappresenta la relationship Impiegato(Matricola, Cognome, Stipendio) Progetto(Codice, Nome, Budget) Partecipazione(Matricola, Codice, DataInizio) Partecipazione(Impiegato, Progetto, DataInizio) Relationship n-arie Relationship ricorsive Quantità (0,N) Composizione Nome (0,N) Fornitore Composto Componente Prodotto Quantità Partita IVA (0,N) Nome (1,N) Codice Composizione(Composto, Componente, Quantità) Relationship uno a molti Data nascita (1,1) Giocatore Ruolo Ingaggio Telefono Fornitore(PartitaIVA, Nome) Prodotto(Codice, Genere) Dipartimento(Nome, Telefono) Fornitura(Fornitore, Prodotto, Dipartimento, Quantità) Soluzione più compatta Città Nome (0,N) Contratto Prodotto Nome Prodotto(Codice, Nome, Costo) Cognome Codice (1,N) Fornitura Dipartimento Costo Genere Squadra Colori sociali Giocatore(Cognome, DataNascita, Ruolo) Contratto(CognGiocatore, DataNascG, Squadra, Ingaggio) Squadra(Nome, Città, ColoriSociali) • corretto? Giocatore(Cognome, DataNascita, Ruolo) Contratto(CognGiocatore, DataNascG, Squadra, Ingaggio) Squadra(Nome, Città, ColoriSociali) Giocatore(Cognome, DataNasc, Ruolo, Squadra, Ingaggio) Squadra(Nome, Città, ColoriSociali) • con vincolo di integrità referenziale fra Squadra in Giocatore e la chiave di Squadra • se la cardinalità minima della relationship è 0, allora Squadra in Giocatore deve ammettere valore nullo 8 Relationship uno a uno Entità con identificazione esterna Data inizio Cognome Matricola Nome (1,1) Studente Cognome Città (1,1) (1,N) Direttore Università Iscrizione Indirizzo AnnoDiCorso Sede Codice (1,1) Dipartimento Direzione Stipendio Studente(Matricola, Università, Cognome, AnnoDiCorso) Università(Nome, Città, Indirizzo) Nome Telefono • varie possibilità: • fondere da una parte o dall'altra • fondere tutto? • con vincolo … Un altro caso Una possibilità privilegiata Data inizio Cognome Sede Codice (0,1) Direttore Nome Data inizio Cognome (1,1) Dipartimento Direzione Stipendio Telefono Sede Codice (0,1) Direttore Nome (0,1) Direzione Dipartimento Stipendio Telefono Direttore (Codice, Cognome, Stipendio) Dipartimento (Nome, Sede, Telefono, Direttore, InizioD) • con vincolo di integrità referenziale, senza valori nulli (0,1) Cognome (1,1) Telefono Direzione Impiegato Codice (0,N) Partecipazione (1,N) Progetto Budget (1,N) (0,1) Nome Afferenza (0,1) Data Dipartimento Nome (1,1) Composizione Schema finale Impiegato(Codice, Cognome, Dipartimento*, Data*) Dipartimento(Nome, Città, Telefono, Direttore) Sede(Città, Via, CAP) Progetto(Nome, Budget) (1,N) Sede Partecipazione(Impiegato, Progetto) Via Indirizzo CAP Città 9 Strumenti di supporto • Esistono sul mercato prodotti CASE che forniscono un supporto a tutte le fasi della progettazione di basi di dati 10