04.02.2015 Views

Progettazione Concettuale e Progettazione Logica

Progettazione Concettuale e Progettazione Logica

Progettazione Concettuale e Progettazione Logica

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!