Progettazione logica. Versione elettronica: proglogica.pdf

Documenti analoghi
Progettazione logica: criteri di ottimizzazione

Progettazione logica: criteri di ottimizzazione

Progettazione logica

Progettazione Logica di Basi di Dati

Basi di dati. Progettazione logica

Progettazione logica. Requisiti della base di dati. Schema concettuale. Schema logico. Schema fisico. Obiettivo della progettazione logica

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw -Hill, Progettazione logica. Dati di ingresso e uscita

E. Giunchiglia Basi di dati 1 (trasparenze basate su Atzeni,, Ceri, Paraboschi, Torlone: : Basi di dati, Capitolo 8) Progettazione logica

Basi di dati McGraw-Hill

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, Obiettivo della progettazione logica. Dati di ingresso e uscita

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, Progettazione logica. Dati di ingresso e uscita

Atzeni, Ceri, Paraboschi, Torlone Basi di dati

Requisiti della base di dati. Schema concettuale

Informatica Industriale

Atzeni, Ceri, Paraboschi, Torlone Basi di dati. Progettazione logica. Attenzione

PROGETTO LOGICO DA SCHEMI E/R. progetto logico da E/R 1

Obiettivi della progettazione logica. Fasi della progettazione logica. Ristrutturazione dello schema ER. Parte VI. Progettazione logica

Traduzione dal modello E/R al modello relazionale

LA PROGETTAZIONE LOGICA. Prima parte

adattato da Atzeni et al., Basi di dati, McGrawHill

Progettazione logica

Partizionamento/accorpamento di concetti

Progettazione logica: regole di traduzione

I prodotti della varie fasi sono schemi di alcuni modelli di dati:

Ristrutturazione di schemi E-R. Ridondanze. Analisi delle ridondanze. Vantaggi semplificazione delle interrogazioni

Progettazione logica relazionale (1/2)

Progettazione di basi di dati D B M G

PROGETTAZIONE LOGICA. Patrizio Dazzi a.a

Progettazione logica. Sistemi Informativi L-B. Home Page del corso: Versione elettronica: proglogica.

Progettazione logica relazionale. Basi di dati. Elena Baralis 2007 Politecnico di Torino D B M G D B M G3 D B M G6 D B M G5

Corso di Basi di Dati

Progettazione logica relazionale (1/2) Progettazione logica. Progettazione logica relazionale (2/2) Introduzione. Progettazione logica

Progettazione logica: regole di traduzione

Progettazione. Realizzazione

Basi di dati e programmazione web Lezione 4

Progettazione di basi di dati. Progettazione di basi di dati: Progettazione Concettuale e Progettazione Logica. Fasi (tecniche) del ciclo di vita

Progettazione di basi di dati. Progettazione di basi di dati: Progettazione Concettuale e Progettazione Logica. Fasi (tecniche) del ciclo di vita

Principi di Progettazione del Software a.a

La progettazione logica Traduzione dal modello Entità-Associazione al modello relazionale Anno accademico 2008/2009

Atzeni, Ceri, Paraboschi, Torlone Basi di dati

Un esempio di progettazione concettuale

LA PROGETTAZIONE LOGICA. Terza parte

Modello Relazionale. Chiavi

Corso di Basi di Dati

Progettazione Logica. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

La Progettazione Logica

Analisi dei requisiti

Generalizzazione. Docente : Alfredo Cuzzocrea Tel. : Informatica

PROGETTO LOGICO RELAZIONALE. progetto logico relazionale 1

Progettazione logica Fase 2: Traduzione nel modello relazionale. adattato da Atzeni et al., Basi di dati, McGrawHill

Traduzione. Associazioni n-arie

La progettazione logica

Traduzione. Scelta degli identificatori principali

IL MODELLO ENTITÀ- RELAZIONE. Gli altri costruttori

SCHEMA E/R DI UNA UNIVERSITA'

Strategie di proge-o. Strategia top down. Strategia bo-om up. Una metodologia. Schema finale. Basi di da' Specifiche Specifiche 1 Specifiche 2

LA PROGETTAZIONE LOGICA

Corso di Laurea in Informatica Basi di Dati a.a

Progettazione logica di basi di dati La progettazione logica

Conversione Modello ER in Modello Relazionale. A.Bardine - Conversione Modello ER in Modello Relazionale

D. Gubiani Progettazione 3

2 - Metodologie e modelli per la progettazione di BD. Informatica II Basi di Dati (08/09) Parte 1. Introduzione alla progettazione

Progettazione concettuale usando il modello Entità-Relazione (ER)

Basi di Dati. Progettazione Logica

Progettazione di basi di dati: Progettazione Concettuale e Progettazione Logica

Analisi di una ridondanze. Numero abitanti. (1,1) (0,N) Residenza

Vincoli. In ogni schema E/R sono presenti dei vincoli Alcuni sono impliciti, in quanto dipendono dalla semantica stessa dei costrutti del modello:

Progettazione logica D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2012/2013

Controllo degli accessi

Controllo degli accessi. Controllo degli accessi. Controllo degli accessi. Controllo degli accessi

Modello Entità-Relazione

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, Capitolo 6: Progettazione di basi di dati: Metodologie e modelli

Progettazione logica e normalizzazione (lucidi del corso)

Ma: progettazione dei dati. progettazione delle applicazioni. Progettazione di basi di dati

Errata Corrige dell edizione 2007

Dr. C. d'amat LA PROGETTAZIONE LOGICA

Basi di Dati. La Progettazione Logica. Sommario. Il Processo di Progetto della BD. Algoritmo di Progettazione Logica

Entità. Relazioni. Cardinalità delle relazioni. Ogni entità ha un nome che la identifica

DOCENTE PROF. ALBERTO BELUSSI. Anno accademico 2010/11

Unità 3. Modello Relazionale

Modello Entità-Relazione

Perché preoccuparci?

Il modello Entità-Relazioni (entity-relationship)

diagrammi entità-relazioni

Basi di Dati 1 Esercitazione 5 08/01/2013. Matteo Picozzi

Informatica Industriale Modello funzionale: Informazione Modello Entità-Relazione

3.1. CorsodiElementidiBasididati Il modello Entita Relazione (72) vendita ordine studente. Impiegato. Dipartimento. città. Città.

Entità. Modello Entità-Relazione (E-R) Relazioni (associazioni) Attributi

Ma: progettazione dei dati progettazione delle applicazioni. Progettazione di basi di dati

Il modello Relazionale.

Basi di Dati. Modello Concettuale

Laboratorio di Basi di Dati

Il modello Entita Relazioni. Costrutti

Corso di Basi di Dati

Progettazione Logica. ISProgLog 1

Strategie top-down. Primitive di trasformazione top-down. Primitive di trasformazione top-down

Transcript:

Progettazione logica Versione elettronica: proglogica.pdf

Il secondo passo requisiti del Sistema informativo progettazione concettuale SCHEMA CONCETTUALE progettazione logica SCHEMA LOGICO progettazione fisica SCHEMA FISICO Progettazione logica 2

Progettazione logica Obiettivo della fase di progettazione logica è pervenire, a partire dallo schema concettuale, a uno schema logico che lo rappresenti in modo fedele e che sia, al tempo stesso, efficiente L efficienza è legata alle prestazioni, ma poiché queste non sono valutabili precisamente a livello concettuale e logico si ricorre a degli indicatori semplificati Progettazione logica 3

Fasi della progettazione logica La progettazione logica può articolarsi in due fasi principali: Ristrutturazione: eliminazione dallo schema E/R di tutti i costrutti che non possono essere direttamente rappresentati nel modello logico target (relazionale nel nostro caso): Eliminazione degli attributi multivalore Eliminazione delle generalizzazioni Partizionamento/accorpamento di entità e associazioni Scelta degli identificatori principali Traduzione: si mappano i costrutti residui in elementi del modello relazionale Partiamo vedendo prima che succede nel caso più semplice, ovvero quando non c è bisogno della fase di ristrutturazione Progettazione logica 4

Traduzione di schemi E/R semplici Consideriamo il caso più semplice in cui: Abbiamo entità e associazioni, ma non gerarchie Ogni entità ha un singolo identificatore, ed è interno Non abbiamo attributi ripetuti cognome nome voto data codice titolo anno matricola email (0,1) Studenti (0,n) Esami (0,n) Corsi (1,1) dipartimento num_ord cognome nome Professori (1,n) Docenze Progettazione logica 5

Traduzione di base: entità Ogni entità è tradotta con una relazione con gli stessi attributi La chiave primaria coincide con l identificatore dell entità Se un attributo è opzionale permettiamo la presenza di valori nulli, e usiamo l asterisco (*) per indicare tale possibilità Studenti Matricola Cognome Nome Email* 29323 Bianchi Giorgio gbianchi@alma.unibo.it 35467 Rossi Anna 39654 Verdi Marco 42132 Neri Lucia lucia78@cs.ucsd.edu Corsi Professori Codice Titolo Anno Dip Num_ord Cognome Nome 483 Analisi 1 DEIS 12 Bolzano Bernhard 729 Analisi 1 DEIS 15 Codd Ted 815 Elettronica 2 DIE 12 Marconi Guglielmo 913 Sistemi Informativi 3 Progettazione logica 6

Traduzione di base: associazioni Ogni associazione è tradotta con una relazione con gli stessi attributi, cui si aggiungono gli identificatori di tutte le entità che essa collega gli identificatori delle entità collegate costituiscono una superchiave la chiave primaria dipende dalle cardinalità massime delle entità nell associazione Esami Matricola 29323 Codice Voto Data 483 28 12/06/2003 39654 729 30 15/07/2003 29323 913 26 12/06/2003 35467 913 30 20/09/2004 Docenze Codice Dip Num_ord 483 729 815 913 DEIS DEIS DIE DEIS 12 12 12 15 Progettazione logica 7

Nomi delle foreign key Non è ovviamente necessario mantenere per le foreign key gli stessi nomi delle primary key referenziate, conviene usare nomi più espressivi Esami(Matricola,CodCorso, Voto, Data) FK: Matricola REFERENCES Studenti FK: CodCorso REFERENCES Corsi Docenze(CodCorso, Dip, Num_ordine) FK: CodCorso REFERENCES Corsi FK: (Dip, Num_ordine) REFERENCES Professori Ovviamente se le entità collegate hanno un identificatore con lo stesso nome la ridenominazione è obbligatoria! Progettazione logica 8

Associazioni molti a molti La chiave primaria coincide con l unione degli identificatori delle entità collegate Esami(Matricola, CodCorso, Voto, Data) FK: Matricola REFERENCES Studenti FK: CodCorso REFERENCES Corsi Per le associazioni molti a molti la traduzione presentata, ovvero con una relazione a sé, è la sola alternativa possibile Progettazione logica 9

Associazioni uno a molti La chiave primaria coincide con l identificatore dell entità che partecipa con cardinalità massima 1 Docenze(CodCorso, Dip, Num_ordine) FK: CodCorso REFERENCES Corsi FK: (Dip, Num_ordine) REFERENCES Professori(Dip, Num_ord) Perché? Poiché ogni corso c ha al massimo 1 docente, allora c può comparire al massimo una volta in Docenze Progettazione logica 10

Associazioni uno a uno La chiave primaria è uno dei due identificatori, l altro diventa una chiave alternativa cognome nome data_inizio nome città cf Rettori R_U (1,1) (1,1) Università R_U(CF, NomeUniversità) FK: CF REFERENCES Rettori FK: NomeUniversità REFERENCES Università Unique(NomeUniversità) La scelta dipende dall importanza relativa delle chiavi Progettazione logica 11

Associazioni n-arie Valgono le considerazioni già fatte, ad esempio: Nome Partita IVA Quantità Genere Codice Fornitori (0,n) Forniture (1,n) Prodotti (1,n) Dipartimenti Progettazione logica 12 Nome Telefono Fornitori(PartitaIVA, Nome) Prodotti(Codice, Genere) Dipartimenti(Nome, Telefono) Forniture(Fornitore, Prodotto, Dipartimento, Quantità) FK:

Associazioni ad anello In questo caso i nomi delle foreign key si possono derivare dai ruoli presenti nei rami dell associazione Qtà Dipendenze Composizione (0,n) (0,1) (0,n) (0,n) Responsabile Impiegati Dipendente Composto Prodotti Componente Qualifica Nome Codice Costo Nome Codice Impiegati(Codice, Nome, Qualifica) Dipendenze(Dipendente, Responsabile) FK: Dipendente REFERENCES Impiegati FK: Responsabile REFERENCES Impiegati Prodotti(Codice, Nome, Costo) Composizione(Composto, Componente, Qtà) FK: Composto REFERENCES Prodotti FK: Componente REFERENCES Prodotti Progettazione logica 13

Associazioni uno a molti: alternative (1) Per le associazioni uno a molti è possibile considerare anche una traduzione più compatta, che ingloba l associazione nella relazione che traduce l entità partecipante con cardinalità massima 1 Corsi Docenze Codice 483 729 815 913 Titolo Analisi Analisi Elettronica Sistemi Informativi Anno 1 1 2 3 Codice Dip Num_ordine 483 729 815 913 DEIS DEIS DIE DEIS 12 12 12 15 Corsi Codice Titolo Anno Dip_docente Num_ordine_docente 483 Analisi 1 DEIS 12 729 Analisi 1 DEIS 12 815 Elettronica 2 DIE 12 913 Sistemi Informativi 3 DEIS 15 Progettazione logica 14

Associazioni uno a molti: alternative (2) Il vantaggio che se ne trae si apprezza in fase di interrogazione: Si semplifica la scrittura di query SQL e, soprattutto, Si riduce il numero di join da eseguire (migliori prestazioni!) Nome e cognome degli insegnanti di Analisi SELECT P.Nome, P.Cognome FROM WHERE AND AND Corsi C, Docenze D, Professori P C.Codice = D.CodCorso D.Dip = P.Dip AND D.Num_ordine = P.Num_ord C.Titolo = Analisi SELECT P.Nome, P.Cognome FROM WHERE AND AND Corsi C, Professori P C.Dip_docente = P.Dip C.Num_ordine_docente = P.Num_ord C.Titolo = Analisi Progettazione logica 15

Associazioni uno a molti: alternative (3) Per contro, bisogna stare attenti se l entità che ingloba l associazione partecipa con cardinalità minima 0 Supponiamo che un corso possa anche non avere un docente codice titolo anno Corsi (0,1) Docenze Corsi Codice Titolo Anno Dip_docente Num_ordine_docente 483 Analisi 1 DEIS 12 729 Analisi 1 DEIS 12 815 Elettronica 2 913 Sistemi Informativi 3 DEIS 15 Progettazione logica 16

Associazioni uno a molti: alternative (4) La presenza dei valori nulli può essere tollerata se questi sono relativamente pochi (dipende dai volumi dei dati in gioco), altrimenti si ha uno spreco inutile di spazio! Bisogna ovviamente garantire che i valori della foreign key siano o tutti definiti o tutti nulli Corsi(Codice, Titolo, Anno, Dip_docente*, Num_ordine_docente*) FK: (Dip_docente, Num_ordine_docente) REFERENCES Professori(Dip, Num_ord) CHECK ( ( (Dip_docente IS NOT NULL) AND (Num_ordine_docente IS NOT NULL) ) OR ( (Dip_docente IS NULL) AND (Num_ordine_docente IS NULL) ) ) Progettazione logica 17

Associazioni uno a molti ad anello Quanto visto si applica anche alle associazioni ad anello, ad esempio: Dipendenze (0,n) (0,1) Responsabile Impiegati Dipendente Qualifica Nome Codice Impiegati(Codice, Nome, Qualifica, CodiceResponsabile*) FK: CodiceResponsabile REFERENCES Impiegati Progettazione logica 18

Associazioni uno a uno: alternative (1) Si hanno a disposizione varie possibilità: cognome nome data_inizio nome città cf Rettori R_U (1,1) (1,1) Università Rettori(CF, Cognome, Stipendio, NomeUniversità, DataInizio) FK: NomeUniversità REFERENCES Università Unique(NomeUniversità) oppure Università(Nome, Città, CFRettore, DataInizio) FK: CFRettore REFERENCES Rettori Unique(CFRettori) Progettazione logica 19

Associazioni uno a uno: alternative (2) Se min-card(e,r) = 0, tradurre l associazione R inglobandola in E non è in generale una buona scelta (ancora, dipende dai volumi dei dati in gioco) Cognome Codice Data inizio Sede Nome Tel Stipendio Impiegati (0,1) (1,1) Direzione Reparti Impiegati(Codice, Cognome, Stipendio, Reparto*, DataInizio*) FK: Reparto REFERENCES Reparti Unique(Reparto) CHECK (((Reparto IS NOT NULL) AND (DataInizio IS NOT NULL)) OR ((Reparto IS NULL) AND (DataInizio IS NULL))) Reparto(Nome, Sede, Telefono) Progettazione logica 20 TROPPI VALORI NULLI!!

Associazioni uno a uno: alternative (3) E possibile anche operare una traduzione in cui le entità vengono accorpate (questo andrebbe meglio considerato in fase di ristrutturazione). In ogni caso: Se min-card(e1,r) = min-card(e2,r) = 1 si avranno due chiavi, entrambe senza valori nulli (la chiave primaria è la più importante ) Se min-card(e1,r) = 0 e min-card(e2,r) =1 la chiave derivante da E1 ammetterà valori nulli, e la chiave primaria si ottiene da E2 Se min-card(e1,r) = min-card(e2,r) = 0 entrambe le chiavi hanno valori nulli, quindi si rende necessario introdurre un codice Cognome Codice Data inizio Sede Nome Tel Stipendio Impiegati (0,1) (0,1) Direzione Reparti ImpRep(CodiceImpDip, CodiceImp*,, Reparto*,, DataInizio*) Progettazione logica 21

Associazioni uno a uno ad anello In questo caso è possibile ancora inglobare l associazione nell entità La traduzione è ancora problematica se entrambe le partecipazioni sono opzionali Marito (0,1) (0,1) Matrimonio Persone Moglie 1 relazione: Persone(Codice, CFUomo*, NomeUomo*, CFDonna*, NomeDonna*) 2 relazioni: Persone(CF, Nome) Matrimoni(Marito, Moglie) FK: Marito REFERENCES Persone FK: Moglie REFERENCES Persone Unique (Moglie) Nome CF Progettazione logica 22

Attributi composti Gli attributi composti vengono tradotti suddividendoli ricorsivamente nelle loro componenti In alternativa si possono mappare in un singolo attributo della relazione, il cui dominio va opportunamente definito, ma questa scelta ovviamente porta a un impoverimento della rappresentazione E consigliabile usare un prefisso comune per gli attributi che si ottengono nome cognome cod_fiscale Persone indirizzo via n.civico (0,1) città CAP Persone(CF, Cognome, Nome, Ind_Via, Ind_NCivico*, Ind_Città, Ind_CAP) Progettazione logica 23

Fase di ristrutturazione Serve a semplificare la traduzione e a ottimizzare le prestazioni Per confrontare tra loro diverse alternative bisogna conoscere, almeno in maniera approssimativa, il carico di lavoro, ovvero: Le principali operazioni che la BD dovrà supportare I volumi dei dati in gioco Gli indicatori che deriviamo considerano due aspetti spazio: numero di istanze previste tempo: numero di istanze (di entità e associazioni) visitate durante un operazione Progettazione logica 24

Schema di riferimento Cognome (0,1) Direzione (1,1) Telefono (1,n) Codice Impiegato Dipartimento Nome (0,n) (0,1) Afferenza (1,n) (1,1) Partecipazione Data (0,1) Composizione (1,n) (1,n) Progetto Via Sede Budget Nome CAP Indirizzo Città Progettazione logica 25

Tavola dei volumi Specifica il numero stimato di istanze per ogni entità (E) e associazione (R) dello schema I valori sono necessariamente approssimati, ma indicativi Concetto Tipo Volume Sede E 10 Dipartimento E 80 Impiegato E 2000 Progetto E 500 Composizione R 80 Afferenza R 1900 Direzione R 80 Partecipazione R 6000 Progettazione logica 26

Esempio di valutazione di costo trova tutti i dati di un impiegato, del dipartimento nel quale lavora e dei progetti ai quali partecipa Si costruisce una tavola degli accessi basata su uno schema di navigazione Lo schema di navigazione èla parte dello schema E/R interessata dall operazione, estesa con delle frecce che indicano in che modo l operazione naviga i dati Progettazione logica 27

Esempio di schema di navigazione Cognome Telefono (1,n) Codice Impiegato Dipartimento Nome (0,n) (0,1) Afferenza (1,n) (1,1) Partecipazione Data (0,1) (1,n) Progetto Aiuta anche a capire come dovranno essere formulate le query in SQL! Budget Nome Progettazione logica 28

Esempio di tavola degli accessi Per ogni entità e associazione interessata dall operazione, riporta il numero di istanze interessate, e il tipo di accesso (L: lettura; S: scrittura) Il numero delle istanze si ricava dalla tavola dei volumi mediante semplici operazioni (ad es: in media ogni impiegato partecipa a 6000/2000 = 3 progetti) Concetto Costrutto Accessi Tipo Impiegato Entità 1 L Afferenza Associazione 1 L Dipartimento Entità 1 L Partecipazione Associazione 3 L Progetto Entità 3 L Progettazione logica 29

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 (è quindi comunque importante averle individuate in fase di progettazione concettuale!) Se si mantiene una ridondanza si semplificano alcune interrogazioni, ma si appesantiscono gli aggiornamenti si occupa maggior spazio Le possibili ridondanze riguardano Attributi derivabili da altri attributi Associazioni derivabili dalla composizione di altre associazioni (presenza di cicli) Progettazione logica 30

Attributi derivabili Importo netto Prodotto IVA Importo lordo Importo totale Acquisto (1,N) (1,N) Composizione Prezzo Prodotto Progettazione logica 31

Associazioni ridondanti Studente (0,N) (1,N) Frequenza Corso Docenza (0,N) (1,1) (1,1) Insegnamento (1,N) Professore Progettazione logica 32

Esempio di analisi di una ridondanza Si considerano innanzitutto le operazioni influenzate dalla ridondanza, considerando anche le loro frequenze di esecuzione Concetto Tipo Volume Città E 200 Persona E 1000000 Residenza R 1000000 Numero abitanti Persona Residenza Città Operazione 1: memorizza una nuova persona con la relativa città di residenza (500 volte al giorno) Operazione 2: stampa tutti i dati di una città (incluso il numero di abitanti) (2 volte al giorno) Progettazione logica 33

In presenza di ridondanza Operazione 1 Concetto Costrutto Accessi Tipo Persona Entità 1 S Residenza Associazione 1 S Città Entità 1 L Città Entità 1 S Operazione 2 Concetto Costrutto Accessi Tipo Città Entità 1 L Progettazione logica Sistemi Informativi L-B 34

In assenza di ridondanza Operazione 1 Concetto Costrutto Accessi Tipo Persona Entità 1 S Residenza Associazione 1 S Operazione 2 Concetto Costrutto Accessi Tipo Città Entità 1 L Residenza Associazione 5000 L Progettazione logica Sistemi Informativi L-B 35

Mantenere o no la ridondanza? È importante considerare la frequenza delle operazioni: Con ridondanza: Operazione 1: 1500 accessi in scrittura e 500 accessi in lettura al giorno Operazione 2: 2 accessi in lettura al giorno Totale: 2002 accessi al giorno Senza ridondanza: Operazione 1: 1000 accessi in scrittura al giorno Operazione 2: 10002 accessi in lettura al giorno Totale: 11002 accessi al giorno Si decide pertanto di mantenere la ridondanza In generale si possono anche fare considerazioni sullo spazio in più richiesto Progettazione logica Sistemi Informativi L-B 36

Eliminazione delle gerarchie Il modello relazionale non può rappresentare direttamente le generalizzazioni Si eliminano perciò le gerarchie, sostituendole con entità e relazioni Vi sono 3 possibilità (più altre soluzioni intermedie): Accorpare le entità figlie nel genitore (collasso verso l alto) Accorpare il genitore nelle entità figlie (collasso verso il basso) Sostituire la generalizzazione con associazioni Progettazione logica Sistemi Informativi L-B 37

Schema di riferimento A01 A02 E0 R1 E3 E1 E2 R2 A11 A21 E4 Progettazione logica Sistemi Informativi L-B 38

A11 A21 1. Accorpare nel genitore (0,1) (0,1) A01 A02 E0 TIPO R1 (0,..) E3 R2 E4 Progettazione logica Sistemi Informativi L-B 39

1. Esempio Tit.Tesi Laureando Studente (p,e) Matr. Nome Tit.Stage Diplomando (1,1) (1,1) Tipo Tit.Tesi (0,1) Studente Tit.Stage (0,1) Matr. Nome Matr (1,n) Relatore (1,n) Azienda (0,1) (0,1) Denom. (1,n) (1,n) Matr Relatore Azienda Denom. Dom(Tipo)= {L,D,N} Progettazione logica Sistemi Informativi L-B 40

Collasso verso l alto: osservazioni Tipo è un attributo selettore che specifica se una singola istanza di E appartiene a una delle N sottoentità Copertura (0,1) A1 (0,1) A2 Tipo totale esclusiva: Tipo ha N valori, quante sono le sottoentità parziale esclusiva: Tipo ha N+1 valori; il valore in più serve per le istanze che non appartengono a nessuna sottoentità sovrapposta: occorrono tanti selettori quante sono le sottoentità, ciascuno a valore booleano Tipo_i, che è vero per ogni istanza di E che appartiene a E_i; se la copertura è parziale i selettori possono essere tutti falsi, oppure si può aggiungere un selettore Le eventuali associazioni connesse alle sottoentità si trasportano su E, le eventuali cardinalità minime diventano 0 E K A Progettazione logica Sistemi Informativi L-B 41

2. Accorpare nelle figlie R11 R12 E3 E1 E2 R2 A01 A11 A02 A01 A21 A02 E4 Progettazione logica Sistemi Informativi L-B 42

2. Esempio CF Nome Dipendente (t,e) 0,1 Contribuisce 1,n 0,1 Dirige Sindacato 1,n capacità Impiegato Operaio macchine 1,n Dirigente 1,n n_sottoposti capacità 1,n 0,n 0,1 Dir_I 0,1 Impiegato Contr_O Dir_O 0,1 0,1 Operaio 0,n 0,n Contr_I 0,n Contr_D 0,n Dir_D macchine 1,n 0,1 0,n Dirigente Sindacato n_sottoposti CF Nome CF Nome CF Nome Progettazione logica Sistemi Informativi L-B 43

Collasso verso il basso: osservazioni Se la copertura non è completa non si può fare non si saprebbe dove mettere le istanze di E che non sono né in E1, né in E2 Se la copertura non è esclusiva introduce ridondanza una certa istanza può essere sia in E1 che in E2, e quindi si rappresentano due volte gli attributi che provengono da E E1 E2 K A A1 A2 A K Progettazione logica Sistemi Informativi L-B 44

3. Sostituire con associazioni A01 A02 E0 R1 E3 RG1 (0,1) (1,1) (0,1) (1,1) RG2 E1 E2 R2 A11 A21 E4 Progettazione logica Sistemi Informativi L-B 45

3. Esempio Cod Desc Prog_sw Mesi uomo Progetto Prog_hw 1,n 0,n Comp_hw N_schede usa Cod Desc Prog_sw Mesi uomo 1,1 Progetto 0,1 0,1 1,1 Prog_hw 1,n 0,n Comp_hw N_schede usa Progettazione logica Sistemi Informativi L-B 46

Cosa conviene fare? La scelta fra le alternative si può fare con metodo simile a quello visto per l'analisi delle ridondanze, considerando oltre al numero degli accessi anche l occupazione di spazio È possibile seguire alcune semplici regole generali (ovvero: mantieni insieme ciò che viene usato insieme) 1. conviene se gli accessi al genitore e alle figlie sono contestuali 2. conviene se gli accessi alle figlie sono distinti (ma è possibile solo con generalizzazioni totali) 3. conviene se gli accessi alle entità figlie sono separati dagli accessi al padre Sono anche possibili soluzioni ibride, soprattutto in gerarchie a più livelli Progettazione logica Sistemi Informativi L-B 47

Una soluzione ibrida A01 A02 A11 (0,1) E0 R1 E3 TIPO (0,1) (1,1) RG2 E2 R2 A21 E4 Progettazione logica Sistemi Informativi L-B 48

Partizionamenti e accorpamenti È possibile ristrutturare lo schema accorpando o partizionando entità e associazioni Tali ristrutturazioni vengono effettuate per rendere più efficienti le operazioni in base al principio già visto, ovvero: Gli accessi si riducono: separando attributi di un concetto che vengono acceduti separatamente raggruppando attributi di concetti diversi acceduti insieme I casi principali sono: partizionamento verticale di entità partizionamento orizzontale di associazioni eliminazione di attributi multivalore Accorpamenti di entità e associazioni Progettazione logica Sistemi Informativi L-B 49

Partizionamento verticale di entità Si separano gli attributi in gruppi omogenei Cognome Indirizzo Codice Impiegato Livello Stipendio Cognome Dati anagrafici Data nascita Codice (1,1) (1,1) R Ritenute Stipendio Livello Dati lavorativi Indirizzo Data nascita Ritenute Progettazione logica Sistemi Informativi L-B 50

Eliminazione di attributi multivalore Si introduce una nuova entità le cui istanze sono identificate dai valori dell attributo L associazione può essere uno a molti o molti a molti Nome Agenzia Indirizzo Città Città Nome (1,N) Telefono Numero (1,N) (1,1) Agenzia Utenza Telefono Indirizzo Progettazione logica Sistemi Informativi L-B 51

Accorpamento di entità Cognome Codice fiscale Interno Indirizzo Persona (0,1) (1,1) Intestazione Appartamento Indirizzo Data nascita Cognome Codice fiscale Indirizzo Persona Interno (0,1) Data nascita Indirizzo (0,1) Progettazione logica Sistemi Informativi L-B 52

Partizionamento orizzontale di associazioni Ruolo Cognome Città Nome (1,N) (1,N) Giocatore Composizione Squadra Ruolo Data acquisto (0,1) Data acquisto Data cessione (1,1) Comp. (1,N) attuale Nome Giocatore Squadra Cognome (1,N) Data acquisto Comp. passata (1,N) Data cessione Città Progettazione logica Sistemi Informativi L-B 53

Scelta degli identificatori principali È un operazione indispensabile per la traduzione nel modello relazionale, che corrisponde alla scelta della chiave primaria I criteri da adottare sono: assenza di opzionalità (valori NULL) semplicità utilizzo nelle operazioni più frequenti o importanti Se nessuno degli identificatori soddisfa i requisiti si introducono dei nuovi attributi (dei codici ) allo scopo Progettazione logica Sistemi Informativi L-B 54

Identificatori principali: esempio L identificatore {Interno, Indirizzo} è opzionale, quindi non può essere scelto Tra Codice fiscale e Codice SSN la scelta dipende da quale è più frequentemente usato per accedere a una persona Codice fiscale Cognome Indirizzo Persona Interno (0,1) Data nascita Codice SSN Indirizzo (0,1) Progettazione logica Sistemi Informativi L-B 55

Entità con identificazione esterna Nel caso di entità identificata esternamente, si importa l identificatore della/e entità identificante/i. L associazione relativa risulta automaticamente tradotta Cognome Matricola Nome Città (1,1) (1,N) Studente Iscrizione Università AnnoDiCorso Indirizzo Studente(Matricola, Università, Cognome, AnnoDiCorso) FK: Università REFERENCES Università Università(Nome, Città, Indirizzo) Progettazione logica Sistemi Informativi L-B 56

Identificazioni esterne: una precisazione Nel caso generale, si possono avere identificazioni esterne in cascata Per operare correttamente occorre partire dalle entità non identificate esternamente e propagare gli identificatori che così si ottengono matricola codice nome Studente (1,1) (0,n) Iscritto Corso DiLaurea (1,1) (1,n) Di Università nome cognome denominazione indirizzo Università(Nome, Indirizzo) CorsoDiLaurea(Università, Codice, Denominazione) Studente(Università, CodiceCdL, Matricola, Cognome, Nome) Progettazione logica Sistemi Informativi L-B 57

Esempio di riferimento Cognome (0,1) Direzione (1,1) Telefono (1,n) Codice Impiegato Dipartimento Nome (0,n) (0,1) Afferenza (1,n) (1,1) Partecipazione Data (0,1) Composizione (1,n) (1,n) Progetto Via Sede Budget Nome CAP Indirizzo Città Progettazione logica Sistemi Informativi L-B 58

Schema logico relazionale Per le entità E che partecipano ad associazioni sempre con max-card(e,r) = n la traduzione è immediata: Sede(Città, Via, CAP) Progetto(Nome, Budget) Anche l associazione Partecipazione si traduce immediatamente: Partecipazione(Impiegato, Progetto) L entità Dipartimento si può tradurre importando l identificatore di Sede e inglobando l associazione Direzione Dipartimento(Nome, Città, Telefono, Direttore) Per tradurre l associazione Afferenza, assumendo che siano pochi gli impiegati che non afferiscono a nessun dipartimento, si opta per una rappresentazione compatta Impiegato(Codice, Cognome, Dipartimento*, Data*) Progettazione logica Sistemi Informativi L-B 59

Osservazioni finali La progettazione logica, pur potendosi avvalere di strumenti CASE, non va svolta alla cieca ; in presenza di diverse alternative occorre valutare: La presenza o meno di valori nulli, e la loro incidenza, che dipende dal volume dei dati Il modo con cui le operazioni navigano lo schema E/R, che poi si traduce in operazioni di join tra le relazioni che vengono create I casi visti non esauriscono l argomento e lasciano sempre lo spazio per soluzioni specifiche ad hoc Ad esempio, associazioni uno a molti con max-card(e2,r) = K, con K piccolo, possono al limite essere tradotte con 1 sola relazione, prevedendo K repliche degli attributi di E2 (es. tipico: numeri di telefono) Progettazione logica Sistemi Informativi L-B 60

Riassumiamo: La fase di progettazione logica ha lo scopo di derivare uno schema logico che sia il più fedele possibile rispetto allo schema E/R di partenza, e che sia al tempo spesso efficiente I confronti tra le diverse alternative vengono eseguiti considerando le principali operazioni interessate e i volumi dei dati in gioco La fase di ristrutturazione elimina dallo schema E/R tutti i costrutti che non possono essere direttamente rappresentati nel modello logico, e apporta modifiche strutturali sulla base di considerazioni di efficienza La fase di traduzione opera traducendo entità e associazioni. Le diverse alternative che si hanno a disposizione per tradurre le associazioni dipendono dalle cardinalità massime in gioco, le quali determinano anche le chiavi delle relazioni che si ottengono. Le cardinalità minime possono portare, in funzione della traduzione scelta, ad avere valori nulli Progettazione logica Sistemi Informativi L-B 61