Progettazione Concettuale e Progettazione Logica
Progettazione Concettuale e Progettazione Logica
Progettazione Concettuale e Progettazione Logica
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Progettazione</strong> di basi di dati:<br />
<strong>Progettazione</strong> <strong>Concettuale</strong> e<br />
<strong>Progettazione</strong> <strong>Logica</strong>
<strong>Progettazione</strong> di basi di dati<br />
• È una delle attività del processo di sviluppo<br />
dei sistemi informativi<br />
• va quindi inquadrata in un contesto più<br />
generale:<br />
• il ciclo di vita dei sistemi informativi:<br />
• Insieme e sequenzializzazione delle attività<br />
svolte da analisti, progettisti, utenti, nello<br />
sviluppo e nell’uso dei sistemi informativi<br />
• attività iterativa, quindi ciclo<br />
03/04/2006 2
Studio di fattibilità<br />
Raccolta e analisi<br />
dei requisiti<br />
<strong>Progettazione</strong><br />
Realizzazione<br />
Validazione e<br />
collaudo<br />
Funzionamento<br />
03/04/2006 3
Fasi (tecniche) del ciclo di vita<br />
• Studio di fattibilità: definizione costi e priorità<br />
• Raccolta e analisi dei requisiti: studio delle<br />
proprietà del sistema<br />
• <strong>Progettazione</strong>: di dati e funzioni<br />
• Realizzazione<br />
• Validazione e collaudo: sperimentazione<br />
• Funzionamento: il sistema diventa operativo<br />
03/04/2006 4
La progettazione di un sistema informativo riguarda due<br />
aspetti:<br />
progettazione dei dati<br />
progettazione delle applicazioni<br />
Ma:<br />
i dati hanno un ruolo centrale<br />
• i dati sono più stabili<br />
03/04/2006 5
Studio di fattibilità<br />
Raccolta e analisi<br />
dei requisiti<br />
<strong>Progettazione</strong><br />
dei dati<br />
Realizzazione<br />
Validazione e<br />
collaudo<br />
Funzionamento<br />
03/04/2006 6
• Per garantire prodotti di buona qualità è<br />
opportuno seguire una<br />
• metodologia di progetto, con:<br />
• articolazione delle attività in fasi<br />
• criteri di scelta<br />
• modelli di rappresentazione<br />
• generalità e facilità d'uso<br />
03/04/2006 7
Studio di fattibilità<br />
Raccolta e analisi<br />
dei requisiti<br />
<strong>Progettazione</strong><br />
dei dati<br />
Realizzazione<br />
Validazione e<br />
collaudo<br />
Funzionamento<br />
03/04/2006 8
<strong>Progettazione</strong><br />
concettuale<br />
“COME”:<br />
progettazione<br />
Requisiti della base di dati<br />
Schema concettuale<br />
<strong>Progettazione</strong><br />
logica<br />
Schema logico<br />
<strong>Progettazione</strong><br />
fisica<br />
“CHE COSA”:<br />
analisi<br />
Schema fisico<br />
03/04/2006 9
I prodotti della varie fasi sono<br />
schemi di alcuni modelli di dati:<br />
• Schema concettuale<br />
• Schema logico<br />
• Schema fisico<br />
03/04/2006 10
Modello dei dati<br />
• insieme di costrutti utilizzati per organizzare i<br />
dati di interesse e descriverne la dinamica<br />
• componente fondamentale: meccanismi di<br />
strutturazione (o costruttori di tipo)<br />
• come nei linguaggi di programmazione<br />
esistono meccanismi che permettono di<br />
definire nuovi tipi, così ogni modello dei dati<br />
prevede alcuni costruttori<br />
• ad esempio, il modello relazionale prevede il<br />
costruttore relazione, che permette di definire<br />
insiemi di record omogenei<br />
03/04/2006 11
Schemi e istanze<br />
• In ogni base di dati esistono:<br />
• lo schema, sostanzialmente invariante nel tempo,<br />
che ne descrive la struttura (aspetto intensionale)<br />
• nel modello relazionale, le intestazioni delle<br />
tabelle<br />
• l’istanza, i valori attuali, che possono cambiare<br />
anche molto rapidamente (aspetto estensionale)<br />
• nel modello relazionale, il “corpo” di ciascuna<br />
tabella<br />
03/04/2006 12
Due tipi (principali)) di modelli<br />
• modelli logici: utilizzati nei DBMS esistenti per<br />
l’organizzazione dei dati<br />
• utilizzati dai programmi<br />
• indipendenti dalle strutture fisiche<br />
esempi: relazionale, reticolare, gerarchico, a oggetti<br />
• modelli concettuali: permettono di rappresentare i<br />
dati in modo indipendente da ogni sistema<br />
• cercano di descrivere i concetti del mondo reale<br />
• sono utilizzati nelle fasi preliminari di<br />
progettazione<br />
il più noto è il modello Entity-Relationship<br />
03/04/2006 13
Modelli concettuali, perché<br />
• Proviamo a modellare una applicazione<br />
definendo direttamente lo schema logico della<br />
base di dati:<br />
• da dove cominciamo<br />
• rischiamo di perderci subito nei dettagli<br />
• dobbiamo pensare subito a come<br />
correlare le varie tabelle (chiavi etc.)<br />
• i modelli logici sono rigidi<br />
03/04/2006 14
Modelli concettuali, perché<br />
• servono per ragionare sulla realtà di<br />
interesse, indipendentemente dagli aspetti<br />
realizzativi<br />
• permettono di rappresentare le classi di dati<br />
di interesse e le loro correlazioni<br />
• prevedono efficaci rappresentazioni grafiche<br />
(utili anche per documentazione e<br />
comunicazione)<br />
03/04/2006 15
Architettura (semplificata)) di un DBMS<br />
utente<br />
Schema logico<br />
Schema interno<br />
BD<br />
03/04/2006 16
<strong>Progettazione</strong><br />
concettuale<br />
<strong>Progettazione</strong><br />
logica<br />
<strong>Progettazione</strong><br />
fisica<br />
03/04/2006 17
<strong>Progettazione</strong> <strong>Concettuale</strong><br />
03/04/2006 18
Modello Entity-Relationship<br />
(Entità-Relazione)<br />
• Il più diffuso modello concettuale<br />
• Ne esistono molte versioni,<br />
• (più o meno) diverse l’una dall’altra<br />
03/04/2006 19
I costrutti del modello E-RE<br />
• Entità<br />
• Relationship<br />
• Attributo<br />
• Identificatore<br />
• Generalizzazione<br />
• ….<br />
03/04/2006 20
Entità<br />
• Classe di oggetti (fatti, persone, cose) della<br />
applicazione di interesse con proprietà<br />
comuni e con esistenza “autonoma”<br />
• Esempi:<br />
• impiegato, città, conto corrente, ordine,<br />
fattura<br />
03/04/2006 21
Relationship<br />
• Legame logico fra due o più entità, rilevante<br />
nell’applicazione di interesse<br />
• Esempi:<br />
• Residenza (fra persona e città)<br />
• Esame (fra studente e corso)<br />
03/04/2006 22
Uno schema E-R, E<br />
graficamente<br />
Studente<br />
Esame<br />
Corso<br />
03/04/2006 23
Entità: : schema e istanza<br />
• Entità:<br />
• classe di oggetti, persone, … "omogenei"<br />
• Occorrenza (o istanza) di entità:<br />
• elemento della classe (l'oggetto, la<br />
persona, …, non i dati)<br />
• nello schema concettuale rappresentiamo le<br />
entità, non le singole istanze (“astrazione”)<br />
03/04/2006 24
Rappresentazione grafica di entità<br />
Impiegato<br />
Dipartimento<br />
Città<br />
Vendita<br />
03/04/2006 25
Entità, , commenti<br />
• Ogni entità ha un nome che la identifica<br />
univocamente nello schema:<br />
• nomi espressivi<br />
• opportune convenzioni<br />
• singolare<br />
03/04/2006 26
Relationship<br />
• Legame logico fra due o più entità, rilevante<br />
nell’applicazione di interesse<br />
• Esempi:<br />
• Residenza (fra persona e città)<br />
• Esame (fra studente e corso)<br />
• Chiamata anche:<br />
• relazione, correlazione, associazione<br />
03/04/2006 27
Rappresentazione grafica<br />
di relationship<br />
Studente<br />
Esame<br />
Corso<br />
Impiegato<br />
Residenza<br />
Città<br />
03/04/2006 28
Relationship, , commenti<br />
• Ogni relationship ha un nome che la identifica<br />
univocamente nello schema:<br />
• nomi espressivi<br />
• opportune convenzioni<br />
• singolare<br />
• sostantivi invece che verbi (se<br />
possibile)<br />
03/04/2006 29
Esempi di occorrenze<br />
E1<br />
S3<br />
S1<br />
S2<br />
E2<br />
E3<br />
C1<br />
C2<br />
S4<br />
E4<br />
C3<br />
Studente<br />
Corso<br />
03/04/2006 30
Relationship, , occorrenze<br />
• Una occorrenza di una relationship binaria è<br />
coppia di occorrenze di entità, una per<br />
ciascuna entità coinvolta<br />
• Una occorrenza di una relationship n-aria è<br />
una n-upla di occorrenze di entità, una per<br />
ciascuna entità coinvolta<br />
• Nell'ambito di una relationship non ci<br />
possono essere occorrenze (coppie, ennuple)<br />
ripetute<br />
03/04/2006 31
Relationship corrette<br />
Studente<br />
Esame<br />
Corso<br />
Paziente<br />
Visita<br />
Medico<br />
03/04/2006 32
Due relationship sulle stesse entità<br />
Sede di<br />
lavoro<br />
Impiegato<br />
Residenza<br />
Città<br />
03/04/2006 33
Relationship n-aria<br />
Fornitore<br />
Fornitura<br />
Prodotto<br />
Dipartimento<br />
03/04/2006 34
Relationship ricorsiva:<br />
coinvolge “due volte” la stessa entità<br />
Conoscenza<br />
Persona<br />
03/04/2006 35
Relationship ricorsiva con “ruoli”<br />
Successione<br />
Successore<br />
Sovrano<br />
Predecessore<br />
03/04/2006 36
Relationship ternaria ricorsiva<br />
Superficie<br />
Migliore<br />
Confronto<br />
Peggiore<br />
Tennista<br />
03/04/2006 37
Attributo<br />
• Proprietà elementare di un’entità o di una<br />
relationship, di interesse ai fini<br />
dell’applicazione<br />
• Associa ad ogni occorrenza di entità o<br />
relationship un valore appartenente a un<br />
insieme detto dominio dell’attributo<br />
03/04/2006 38
Attributi, rappresentazione grafica<br />
Cognome<br />
Nome<br />
Data<br />
Voto<br />
Titolo<br />
Studente<br />
Esame<br />
Corso<br />
Matricola<br />
Codice<br />
03/04/2006 39
Attributi composti<br />
• Raggruppano attributi di una medesima entità<br />
o relationship che presentano affinità nel loro<br />
significato o uso<br />
• Esempio:<br />
• Via, Numero civico e CAP formano un<br />
Indirizzo<br />
03/04/2006 40
Rappresentazione grafica<br />
Cognome<br />
Impiegato<br />
Età<br />
Indirizzo<br />
Via<br />
Numero<br />
CAP<br />
03/04/2006 41
Cognome<br />
Impiegato<br />
Codice<br />
Partecipazione<br />
Direzione<br />
Afferenza<br />
Data<br />
Telefono<br />
Dipartimento<br />
Nome<br />
Composizione<br />
Sede<br />
Progetto<br />
Via<br />
Budget Nome<br />
CAP<br />
Indirizzo Città<br />
03/04/2006 42
Altri costrutti del modello E-RE<br />
• Cardinalità<br />
• di relationship<br />
• di attributo<br />
• Identificatore<br />
• interno<br />
• esterno<br />
• Generalizzazione<br />
03/04/2006 43
Cardinalità di relationship<br />
• Coppia di valori associati a ogni entità che<br />
partecipa a una relationship<br />
• specificano il numero minimo e massimo di<br />
occorrenze delle relationship cui ciascuna<br />
occorrenza di una entità può partecipare<br />
03/04/2006 44
Esempio di cardinalità<br />
Impiegato<br />
(1,5) (0,50)<br />
Assegnamento<br />
Incarico<br />
03/04/2006 45
• per semplicità usiamo solo tre simboli:<br />
• 0 e 1 per la cardinalità minima:<br />
• 0 = “partecipazione opzionale”<br />
• 1 = “partecipazione obbligatoria”<br />
• 1 e “N” per la massima:<br />
• “N” non pone alcun limite<br />
03/04/2006 46
Occorrenze di Residenza<br />
S1<br />
R1<br />
C1<br />
S3<br />
S2<br />
R2<br />
C2<br />
S4<br />
Studente<br />
R3<br />
R4<br />
C4<br />
C3<br />
Città<br />
03/04/2006 47
Cardinalità di Residenza<br />
Studente<br />
(1,1) (0,N)<br />
Residenza<br />
Città<br />
03/04/2006 48
Tipi di relationship<br />
• Con riferimento alle cardinalità massime,<br />
abbiamo relationship:<br />
• uno a uno<br />
• uno a molti<br />
• molti a molti<br />
03/04/2006 49
Due avvertenze<br />
• Attenzione al "verso" nelle relationship uno a<br />
molti<br />
• le relationship obbligatorie-obbligatorie sono<br />
molto rare<br />
03/04/2006 50
Relationship “molti a molti”<br />
Studente<br />
(0,N)<br />
Esame<br />
(0,N)<br />
Corso<br />
Montagna<br />
(0,N)<br />
Scalata<br />
(1,N)<br />
Alpinista<br />
Macchinista<br />
(1,N)<br />
Abilitazione<br />
(1,N)<br />
Locomotore<br />
03/04/2006 51
Relationship “uno a molti”<br />
(0,1) (0,N)<br />
Persona<br />
Impiego<br />
Azienda<br />
Cinema<br />
(1,1) (0,N)<br />
Ubicazione<br />
Località<br />
Comune<br />
(1,1) (1,N)<br />
Ubicazione<br />
Provincia<br />
03/04/2006 52
Relationship “uno a uno”<br />
(0,1) (0,1)<br />
Professore<br />
Titolarità<br />
Cattedra<br />
Professore<br />
di ruolo<br />
(1,1) (0,1)<br />
Titolarità<br />
Cattedra<br />
Professore<br />
di ruolo<br />
(1,1) (1,1)<br />
Titolarità<br />
Cattedra<br />
coperta<br />
03/04/2006 53
Cardinalità di attributi<br />
• E’ possibile associare delle cardinalità anche<br />
agli attributi, con due scopi:<br />
• indicare opzionalità ("informazione<br />
incompleta")<br />
• indicare attributi multivalore<br />
03/04/2006 54
Rappresentazione grafica<br />
(0,N)<br />
Telefono<br />
Impiegato<br />
Nome<br />
(0,1)<br />
Numero patente<br />
03/04/2006 55
Identificatore di una entità<br />
• “strumento” per l’identificazione univoca<br />
delle occorrenze di un’entità<br />
• costituito da:<br />
• attributi dell’entità<br />
• identificatore interno<br />
• (attributi +) entità esterne attraverso<br />
relationship<br />
• identificatore esterno<br />
03/04/2006 56
Identificatori interni<br />
Targa<br />
Automobile<br />
Modello<br />
Data Nascita<br />
Persona<br />
Indirizzo<br />
Cognome<br />
Nome<br />
03/04/2006 57
Identificatore esterno<br />
Cognome Matricola<br />
Nome<br />
Studente<br />
(1,1) (0,N)<br />
Iscrizione<br />
Università<br />
Anno di corso<br />
Indirizzo<br />
03/04/2006 58
Alcune osservazioni<br />
• ogni entità deve possedere almeno un<br />
identificatore, ma può averne in generale più<br />
di uno<br />
• una identificazione esterna è possibile solo<br />
attraverso una relationship a cui l’entità da<br />
identificare partecipa con cardinalità (1,1)<br />
• perché non parliamo degli identificatori delle<br />
relationship<br />
03/04/2006 59
Cognome<br />
(0,1)<br />
Direzione<br />
(1,1)<br />
Telefono<br />
(1,N)<br />
Codice<br />
Impiegato<br />
(0,N)<br />
Partecipazione<br />
(1,N)<br />
(0,1) (0,N)<br />
Afferenza<br />
(0,1)<br />
Data<br />
Dipartimento<br />
(1,1)<br />
Composizione<br />
(1,N)<br />
Nome<br />
Progetto<br />
Via<br />
Budget Nome<br />
CAP<br />
Sede<br />
Indirizzo Città<br />
03/04/2006 60
Generalizzazione<br />
• mette in relazione una o più entità E1, E2, ...,<br />
En con una entità E, che le comprende come<br />
caso particolare<br />
• E è generalizzazione di E1, E2, ..., En<br />
• E1, E2, ..., En sono specializzazioni (o<br />
sottotipi) di E<br />
03/04/2006 61
Rappresentazione grafica<br />
Dipendente<br />
Impiegato Funzionario Dirigente<br />
03/04/2006 62
Proprietà delle generalizzazioni<br />
Se E (genitore) è generalizzazione di E1, E2,<br />
..., En (figlie):<br />
• ogni proprietà di E è significativa per E1,<br />
E2, ..., En<br />
• ogni occorrenza di E1, E2, ..., En è<br />
occorrenza anche di E<br />
03/04/2006 63
Città<br />
(0,N)<br />
Nascita<br />
(1,1)<br />
Persona<br />
Codice<br />
fiscale<br />
Nome<br />
Stipendio<br />
Età<br />
Lavoratore<br />
Studente<br />
03/04/2006 64
Ereditarietà<br />
• tutte le proprietà (attributi, relationship, altre<br />
generalizzazioni) dell’entità genitore vengono<br />
ereditate dalle entità figlie e non<br />
rappresentate esplicitamente<br />
03/04/2006 65
Esercizio<br />
• Le persone hanno CF, cognome ed età;<br />
• gli uomini anche la posizione militare;<br />
• gli impiegati hanno lo stipendio e possono essere<br />
segretari, direttori o progettisti (un progettista può<br />
essere anche responsabile di progetto);<br />
• gli studenti (che non possono essere impiegati) un<br />
numero di matricola;<br />
• esistono persone che non sono né impiegati né<br />
studenti (ma i dettagli non ci interessano)<br />
03/04/2006 66
CF<br />
Cognome<br />
Persona<br />
Stipendio<br />
Età<br />
Matr.<br />
Uomo<br />
Donna<br />
Impiegato<br />
Studente<br />
Militare<br />
Segretario Direttore Progettista<br />
Responsabile<br />
03/04/2006 67
Documentazione associata agli schemi<br />
concettuali<br />
• dizionario dei dati<br />
• entità<br />
• relationship<br />
• vincoli non esprimibili<br />
03/04/2006 68
Cognome<br />
(0,1)<br />
Direzione<br />
(1,1)<br />
Telefono<br />
(1,N)<br />
Codice<br />
Impiegato<br />
(0,N)<br />
Partecipazione<br />
(1,N)<br />
(0,1) (0,N)<br />
Afferenza<br />
(0,1)<br />
Data<br />
Dipartimento<br />
(1,1)<br />
Composizione<br />
(1,N)<br />
Nome<br />
Progetto<br />
Via<br />
Budget Nome<br />
CAP<br />
Sede<br />
Indirizzo Città<br />
03/04/2006 69
Dizionario dei dati (entità)<br />
Entità Descrizione Attributi Identificatore<br />
Impiegato Dipendente Codice, Codice<br />
dell'azienda Cognome,<br />
Stipendio<br />
Progetto Progetti Nome, Nome<br />
aziendali Budget<br />
Dipartimento Struttura Nome, Nome,<br />
Sede<br />
aziendale<br />
Sede<br />
dell'azienda<br />
Telefono<br />
Città,<br />
Indirizzo<br />
Sede<br />
Città<br />
03/04/2006 70
Dizionario dei dati (relationship(<br />
relationship)<br />
Relazioni Descrizione Componenti Attributi<br />
Direzione Direzione di un<br />
dipartimento<br />
Impiegato,<br />
Dipartimento<br />
Afferenza Afferenza a un Impiegato, Data<br />
dipartimento Dipartimento<br />
Partecipazione Partecipazione<br />
a un progetto<br />
Impiegato,<br />
Progetto<br />
Composizione Composizione<br />
dell'azienda<br />
Dipartimento,<br />
Sede<br />
03/04/2006 71
Vincoli non esprimibili<br />
Vincoli di integrità sui dati<br />
(1) Il direttore di un dipartimento deve a afferire a tale<br />
dipartimento<br />
(2) Un impiegato non deve avere uno stipendio<br />
maggiore del direttore del dipartimento al quale<br />
afferisce<br />
(3) Un dipartimento con sede a Roma deve essere<br />
diretto da un impiegato con più di dieci anni di<br />
anzianità<br />
(4) Un impiegato che non afferisce a nessun<br />
dipartimento non deve partecipare a nessun un<br />
progetto<br />
03/04/2006 72
<strong>Progettazione</strong> <strong>Logica</strong><br />
03/04/2006 73
<strong>Progettazione</strong><br />
concettuale<br />
Requisiti della base di dati<br />
Schema concettuale<br />
<strong>Progettazione</strong><br />
logica<br />
Schema logico<br />
<strong>Progettazione</strong><br />
fisica<br />
Schema fisico<br />
03/04/2006 74
Obiettivo della<br />
progettazione logica<br />
"tradurre" lo schema concettuale in uno<br />
schema logico che rappresenti gli stessi dati<br />
in maniera corretta ed efficiente<br />
D’ora in poi. Per semplificare non ci occuperemo dell’efficienza<br />
03/04/2006 75
Dati di ingresso e uscita<br />
• Ingresso:<br />
• schema concettuale<br />
• Uscita:<br />
• schema logico<br />
• documentazione associata<br />
03/04/2006 76
Non si tratta di una pura e semplice<br />
traduzione<br />
• alcuni aspetti non sono direttamente<br />
rappresentabili<br />
03/04/2006 77
Schema E-R<br />
Traduzione nel<br />
modello logico<br />
Schema<br />
logico<br />
03/04/2006 78
Cognome<br />
(0,1)<br />
Direzione<br />
(1,1)<br />
Telefono<br />
(1,N)<br />
Codice<br />
Impiegato<br />
(0,N)<br />
Partecipazione<br />
(1,N)<br />
(0,1) (1,N)<br />
Afferenza<br />
(0,1)<br />
Data<br />
Dipartimento<br />
(1,1)<br />
Composizione<br />
(1,N)<br />
Nome<br />
Progetto<br />
Via<br />
Budget Nome<br />
CAP<br />
Sede<br />
Indirizzo Città<br />
03/04/2006 79
Attività di Traduzione<br />
• Analisi delle ridondanze<br />
• Eliminazione delle generalizzazioni<br />
• Partizionamento/accorpamento di<br />
entità e relationship<br />
• Scelta degli identificatori primari<br />
03/04/2006 80
Eliminazione delle gerarchie<br />
• il modello relazionale non può rappresentare<br />
direttamente le generalizzazioni<br />
• entità e relazioni sono invece direttamente<br />
rappresentabili<br />
• si eliminano perciò le gerarchie, sostituendole<br />
con entità e relazioni<br />
03/04/2006 81
Tre possibilità<br />
1. accorpamento delle figlie della<br />
generalizzazione nel genitore<br />
2. accorpamento del genitore della<br />
generalizzazione nelle figlie<br />
3. sostituzione della generalizzazione con<br />
relazioni<br />
03/04/2006 82
A01<br />
A02<br />
E0<br />
R1<br />
E3<br />
E1<br />
E2<br />
R2<br />
A11<br />
A21<br />
E4<br />
03/04/2006 83
A11<br />
A21<br />
(0,1)<br />
(0,1)<br />
A01<br />
E0<br />
A02<br />
R1<br />
E3<br />
TIPO<br />
(0,..)<br />
R2<br />
E4<br />
03/04/2006 84
A01<br />
A02<br />
E0<br />
R1<br />
E3<br />
E1<br />
E2<br />
R2<br />
A11<br />
A21<br />
E4<br />
03/04/2006 85
R11<br />
R12<br />
E3<br />
E1<br />
E2<br />
R2<br />
A01 A11 A02 A01 A21 A02<br />
E4<br />
03/04/2006 86
A01<br />
A02<br />
E0<br />
R1<br />
E3<br />
E1<br />
E2<br />
R2<br />
A11<br />
A21<br />
E4<br />
03/04/2006 87
A01<br />
A02<br />
E0<br />
R1<br />
E3<br />
RG1<br />
(0,1)<br />
(1,1)<br />
(0,1)<br />
(1,1)<br />
RG2<br />
E1<br />
E2<br />
R2<br />
A11<br />
A21<br />
E4<br />
03/04/2006 88
Attività di Traduzione<br />
• Analisi delle ridondanze<br />
• Eliminazione delle generalizzazioni<br />
• Partizionamento/accorpamento di<br />
entità e relazioni<br />
• Scelta degli identificatori primari<br />
03/04/2006 89
Ristrutturazioni, casi principali<br />
• partizionamento verticale di entità<br />
• partizionamento orizzontale di<br />
relationship<br />
• eliminazione di attributi multivalore<br />
• accorpamento di entità/ relationship<br />
03/04/2006 90
Cognome<br />
Indirizzo<br />
Data<br />
nascita<br />
Codice<br />
Impiegato<br />
Livello<br />
Stipendio<br />
Ritenute<br />
03/04/2006 91
Cognome<br />
Codice<br />
Stipendio<br />
Livello<br />
Dati<br />
anagrafici<br />
(1,1) (1,1)<br />
R<br />
Dati<br />
lavorativi<br />
Indirizzo<br />
Data<br />
nascita<br />
Ritenute<br />
03/04/2006 92
Nome<br />
Indirizzo<br />
Agenzia<br />
(1,N)<br />
Città<br />
Telefono<br />
03/04/2006 93
Città<br />
Nome<br />
Numero<br />
Agenzia<br />
(1,N) (1,1)<br />
Utenza<br />
Telefono<br />
Indirizzo<br />
03/04/2006 94
Cognome<br />
Codice<br />
fiscale<br />
Interno<br />
Indirizzo<br />
Persona<br />
(0,1) (1,1)<br />
Intestazione<br />
Appartamento<br />
Indirizzo<br />
Data<br />
nascita<br />
03/04/2006 95
Cognome<br />
Indirizzo<br />
Data<br />
nascita<br />
Codice<br />
fiscale<br />
Persona<br />
Interno<br />
(0,1)<br />
Indirizzo<br />
(0,1)<br />
03/04/2006 96
Ruolo<br />
Cognome<br />
Città<br />
Nome<br />
Giocatore<br />
(1,N)<br />
(1,N)<br />
Composizione<br />
Squadra<br />
Data<br />
acquisto<br />
(0,1)<br />
Data<br />
cessione<br />
03/04/2006 97
Ruolo<br />
Data<br />
acquisto<br />
(1,1) Comp. (1,N)<br />
attuale<br />
Nome<br />
Giocatore<br />
Squadra<br />
Cognome<br />
(1,N)<br />
Comp.<br />
passata<br />
(1,N)<br />
Città<br />
Data<br />
acquisto<br />
Data<br />
cessione<br />
03/04/2006 98
Attività della ristrutturazione<br />
• Analisi delle ridondanze<br />
• Eliminazione delle generalizzazioni<br />
• Partizionamento/accorpamento di entità<br />
e relazioni<br />
• Scelta degli identificatori primari<br />
03/04/2006 99
Scelta degli identificatori principali<br />
• operazione indispensabile per la traduzione<br />
nel modello relazionale<br />
• Criteri<br />
• assenza di opzionalità<br />
• semplicità<br />
03/04/2006 100
Se nessuno degli identificatori soddisfa i<br />
requisiti visti<br />
Si introducono nuovi attributi (codici) contenenti<br />
valori speciali generati appositamente per<br />
questo scopo<br />
03/04/2006 101
Traduzione verso il<br />
modello relazionale<br />
• idea di base:<br />
• le entità diventano relazioni sugli stessi<br />
attributi<br />
• le associazioni (ovvero le relazioni E-R)<br />
diventano relazioni sugli identificatori<br />
delle entità coinvolte (più gli attributi<br />
propri)<br />
03/04/2006 102
Entità e relationship molti a molti<br />
Cognome<br />
Matricola<br />
Data inizio<br />
Codice<br />
Nome<br />
(0,N)<br />
(1,N)<br />
Impiegato<br />
Partecipazione<br />
Progetto<br />
Stipendio<br />
Budget<br />
Impiegato(Matricola, Cognome, Stipendio)<br />
Progetto(Codice, Nome, Budget)<br />
Partecipazione(Matricola, Codice, DataInizio)<br />
03/04/2006 103
Entità e relationship molti a molti<br />
Impiegato(Matricola, Cognome, Stipendio)<br />
Progetto(Codice, Nome, Budget)<br />
Partecipazione(Matricola, Codice, DataInizio)<br />
• con vincoli di integrità referenziale fra<br />
• Matricola in Partecipazione e (la chiave di)<br />
Impiegato<br />
• Codice in Partecipazione e (la chiave di) Progetto<br />
03/04/2006 104
Nomi più espressivi per gli attributi<br />
della chiave della relazione che<br />
rappresenta la relationship<br />
Impiegato(Matricola, Cognome, Stipendio)<br />
Progetto(Codice, Nome, Budget)<br />
Partecipazione(Matricola, Codice, DataInizio)<br />
Partecipazione(Impiegato, Progetto, DataInizio)<br />
03/04/2006 105
Relationship ricorsive<br />
(0,N)<br />
Composizione<br />
Quantità<br />
(0,N)<br />
Composto<br />
Prodotto<br />
Componente<br />
Costo Nome Codice<br />
Prodotto(Codice, Nome, Costo)<br />
Composizione(Composto, Componente, Quantità)<br />
03/04/2006 106
Nome<br />
Relationship n-arie<br />
Partita IVA Quantità Genere Codice<br />
Fornitore<br />
(0,N)<br />
Fornitura<br />
(1,N)<br />
Prodotto<br />
(1,N)<br />
Dipartimento<br />
Nome<br />
Telefono<br />
Fornitore(PartitaIVA, Nome)<br />
Prodotto(Codice, Genere)<br />
Dipartimento(Nome, Telefono)<br />
Fornitura(Fornitore, Prodotto, Dipartimento, Quantità)<br />
03/04/2006 107
Relationship uno a molti<br />
Cognome Data<br />
Ingaggio<br />
nascita Città Nome<br />
(1,1) (0,N)<br />
Giocatore Contratto<br />
Squadra<br />
Ruolo<br />
Colori sociali<br />
Giocatore(Cognome, DataNascita, Ruolo)<br />
Contratto(CognGiocatore, DataNascG, Squadra, Ingaggio)<br />
Squadra(Nome, Città, ColoriSociali)<br />
• corretto<br />
03/04/2006 108
Soluzione più compatta<br />
Giocatore(Cognome, DataNascita, Ruolo)<br />
Contratto(CognGiocatore, DataNascG, Squadra, Ingaggio)<br />
Squadra(Nome, Città, ColoriSociali)<br />
Giocatore(Cognome, DataNasc, Ruolo, Squadra, Ingaggio)<br />
Squadra(Nome, Città, ColoriSociali)<br />
• con vincolo di integrità referenziale fra Squadra in<br />
Giocatore e la chiave di Squadra<br />
• se la cardinalità minima della relationship è 0, allora<br />
Squadra in Giocatore deve ammettere valore nullo<br />
03/04/2006 109
Entità con identificazione esterna<br />
Cognome<br />
Matricola<br />
Nome<br />
Città<br />
Studente<br />
(1,1) (1,N)<br />
Iscrizione<br />
Università<br />
AnnoDiCorso<br />
Indirizzo<br />
Studente(Matricola, Università, Cognome, AnnoDiCorso)<br />
Università(Nome, Città, Indirizzo)<br />
• con vincolo …<br />
03/04/2006 110
Relationship uno a uno<br />
Data inizio<br />
Cognome Codice Sede Nome<br />
(1,1) (1,1)<br />
Direttore<br />
Direzione<br />
Dipartimento<br />
Stipendio<br />
Telefono<br />
• varie possibilità:<br />
• fondere da una parte o dall'altra<br />
• fondere tutto<br />
03/04/2006 111
Una possibilità privilegiata<br />
Data inizio<br />
Cognome Codice Sede Nome<br />
(0,1) (1,1)<br />
Direttore<br />
Direzione<br />
Dipartimento<br />
Stipendio<br />
Telefono<br />
Impiegato (Codice, Cognome, Stipendio)<br />
Dipartimento (Nome, Sede, Telefono, Direttore, InizioD)<br />
• con vincolo di integrità referenziale, senza valori nulli<br />
03/04/2006 112
Un altro caso<br />
Data inizio<br />
Cognome Codice Sede Nome<br />
(0,1) (0,1)<br />
Direttore<br />
Direzione<br />
Dipartimento<br />
Stipendio<br />
Telefono<br />
03/04/2006 113
Cognome<br />
(0,1)<br />
Direzione<br />
(1,1)<br />
Telefono<br />
Codice<br />
Impiegato<br />
(0,N)<br />
Partecipazione<br />
(1,N)<br />
(0,1) (1,N)<br />
Afferenza<br />
(0,1)<br />
Data<br />
Dipartimento<br />
(1,1)<br />
Composizione<br />
(1,N)<br />
Nome<br />
Progetto<br />
Via<br />
Budget Nome<br />
CAP<br />
Sede<br />
Indirizzo Città<br />
03/04/2006 114
Schema finale<br />
Impiegato(Codice, Cognome, Dipartimento*, Data*)<br />
Dipartimento(Nome, Città, Telefono, Direttore)<br />
Sede(Città, Via, CAP)<br />
Progetto(Nome, Budget)<br />
Partecipazione(Impiegato, Progetto)<br />
03/04/2006 115