• Non ci sono risultati.

Progettazione logica

Nel documento Corso di Basi di Dati (pagine 21-59)

PERSONA (0,1) (1,1) ABITAZIONE Codice Nome PROPRIETA’

Cognome Indirizzo Interno

PERSONA

Codice Nome Cognome

Indirizzo Interno Gli accessi all’entità

Persona riguardano sempre i dati

Partizionamento verticale di un’entità sulla base dei suoi attributi …

Progettazione logica

STUDENTE DATI UNIVERSITA

(1,1) (1,1)

CF Nome

DATI

Cognome Matricola Corso di Laurea

STUDENTE CF Nome Cognome Matricola Corso di Laurea Le operazioni che riguardano i dati anagrafici

non riguardano i dati universitari…

Prima di tradurre il modello E-R, e’ necessario ristrutturarlo per motivi di correttezza/efficienza:

! !!

➢ Eliminazione delle generalizzazioni

!

➢ Eliminazione degli attributi multi-valore

!

➢ Partizionamento/accorpamento di concetti

!

➢ Scelta degli identificatori

!

➢ Analisi delle ridondanze

Nei casi di entità con più identificatori, è necessario sceglierne uno:

!!

➢ Evitare attributi con valori nulli.

!

➢ Scegliere l’ identificatore minimale.

!

➢ Preferire identificatori interni ad identificatori esterni che coinvolgono molte entità.

!

➢ Preferire identificatori utilizzati da molte operazioni per l’accesso all’entità.

Prima di tradurre il modello E-R, e’ necessario ristrutturarlo per motivi di correttezza/efficienza:

! ! !

➢ Eliminazione delle generalizzazioni

!

➢ Eliminazione degli attributi multi-valore

!

➢ Partizionamento/accorpamento di concetti

!

➢ Scelta degli identificatori

!

➢ Analisi delle ridonanze

Progettazione logica

Nel modello E-R, potrebbero essere presenti

ridondanze sui dati, ossia informazioni significative ma derivabili da altre già presenti nel modello E-R.

!

➢ Vantaggi delle ridondanze:

◇ Operazioni sui dati (spesso) più efficienti

!

➢ Svantaggi delle ridondanze:

◇ Maggiore occupazione di memoria

Progettazione logica

Le ridondanze in un diagramma E-R possono presentarsi in varie forme:

STIPENDIO

Lordo Netto Tasse ATTRIBUTI DERIVABILI

Lo stipendio netto si può ricavare dal lordo e dalle tasse.

PERSONA RESIDENTI CITTA

Codice Fiscale Codice

(1,1)

Nome

(1,N)

Descrizione Numero Abitanti

Progettazione logica

In questa fase, è necessario valutare cosa fare delle ridondanze …

PERSONA RESIDENTI CITTA

Codice Fiscale Codice

(1,1)

Nome

(1,N)

Descrizione Numero Abitanti

Il Numero Abitanti si puo’ ricavare contando le Persone

SOLUZIONE1: Eliminare l’attributo NumeroAbitanti

!

Progettazione logica

Per scegliere cosa fare di un attributo ridondante, si

puo’ utilizzare l’analisi del modello E-R che abbiamo visto nella progettazione concettuale.

!

1. Sia S lo schema E-R senza ridondanze

!

1. Sia Srid lo schema E-R con ridondanze

!

2. Si calcolano il costo e l’occupazione di memoria di entrambi gli schemi: <c(S),m(S)> e <c(Srid), m(Srid)>

!

Progettazione logica

Per effettuare l’analisi del modello E-R, è necessario disporre delle tavole dei volumi e delle operazioni.

!

◇ Operazione1: Memorizza una nuova persona (200 volte/ giorno).

!

◇ Operazione2: Visualizza tutti i dati di una città, incluso il numero di abitanti (5 volte/giorno)

Operazione Tipo Frequenza

Operazione1 I 200

Operazione2 I 5

Progettazione logica

Per effettuare l’analisi del modello E-R, è necessario disporre delle tavole dei volumi e delle operazioni.

Concetto Tipo Volume

Citta’ E 100

Persona E 500000

Residenti R 500000

TAVOLA dei VOLUMI

Assumiamo che le informazioni sui volumi siano contenute nelle specifiche dei dati …

Progettazione logica

Analisi dello schema Srid (caso con ridondanza):

!

Operazione 1: frequenza 200 volte/giorno

Concetto Costrutto Accessi Tipo

Persona Entita’ 1 W Residenti Relazione 1 W Citta’ Entita’ 1 W

TAVOLA DEGLI ACCESSI

c(Op1)= 200*1*(3*2)=1200

wI=1 α=2

Progettazione logica

Analisi dello schema Srid (caso con ridondanza):

!

Operazione 2: frequenza 5 volte/giorno

Concetto Costrutto Accessi Tipo

Citta’ Entita’ 1 L

TAVOLA DEGLI ACCESSI

c(Op2)= 5*1*(0*2 +1)=5

wI=1 α=2

Progettazione logica

Analisi dello schema S (caso senza ridondanza):

!

Operazione 1: frequenza 200 volte/giorno

Concetto Costrutto Accessi Tipo

Persona Entita’ 1 W Residenti Relazione 1 W

TAVOLA DEGLI ACCESSI

c(Op1)= 200*1*(2*2 +0)=800

wI=1 α=2

Progettazione logica

Analisi dello schema S (caso senza ridondanza):

!

Operazione 2: frequenza 5 volte/giorno

Concetto Costrutto Accessi Tipo

Citta’ Entita’ 1 L Residenza Relazione 5000 L

TAVOLA DEGLI ACCESSI

c(Op2)= 5*1*(0*2 +5001)=25005

wI=1 α=2

Progettazione logica

Riassumendo:

!

➢ c(Srid) = c(Op1) + c(Op2) = 1200 + 5 ~ 1200

!

➢ c(S) = c(Op1) + c(Op2) = 800 + 25005 ~ 26000

!

Vediamo ora l’occupazione di memoria:

!

➢ m(S) = X (byte)

!

➢ m(Srid) = X + 100 *4 = X+ 400 (byte)

Il campo aggiuntivo richiede 4 byte Volume dell’entita’ Citta

Progettazione logica

Riassumendo, la presenza della ridondanza:

!

➢ Introduce un overhead di memoria di 400 byte

!

➢ Migliora lo speedup delle operazioni di un fattore 26000/1200 ~ 20!

!

Risultato dell’analisi delle ridondanze à In questo caso, è conveniente conservare (o nel caso introdurre) l’attributo Numero Abitanti!

! !

Per garantire la qualita’ dello schema prodotto, la progettazione logica tipicamente include due step:

!

➢ Ristrutturazione del modello concettuale à modificare lo schema E-R per semplificare la traduzione ed ottimizzare il progetto.

!

➢ Traduzione nel modello logico à traduzione dei costrutti del modello E-R nei costrutti del modello relazionale …

La progettazione logica deve tradurre i costrutti del

modello E-R nei costrutti del modello relazionale,

garantendo l’equivalenza dei modelli …

!

In pratica:

!

➢ Le entità diventano tabelle sugli stessi attributi.

!

➢ Le relazioni del modello E-R diventano tabelle sugli identificatori delle entità coinvolte (più gli attributi propri),.. ma sono possibili traduzioni differenti sulla base delle cardinalità in gioco!

Progettazione logica

IMPIEGATO

Matricola Nome

Traduzione di entità con identificatore interno

Cognome

Data Nascita

IMPIEGATO(Matricola, Nome, Cognome, DataNascita)

Le entità del modello E-R si traducono in tabelle del modello relazionale. L’identificatore del modello E-R diventa la chiave primaria della tabella.

Progettazione logica

Traduzione di entità con identificatore esterno

Le entità con identificatore esterno si traducono in una tabella che include tra le chiavi gli identificatori dell’entita’ esterna. STUDENTE UNIVERSITA Nome Nome (1,1) Cognome (1,N) Citta Indirizzo Matricola

Progettazione logica

Traduzione di entità con identificatore esterno

STUDENTE UNIVERSITA Nome Nome (1,1) Cognome (1,N) Citta Indirizzo Matricola

STUDENTE(Matricola, NomeUniversita, Nome, Cognome)

!

Progettazione logica

IMPIEGATO LAVORO PROGETTO

Matricola Codice (0,N) Data Cognome (0,N) Descrizione Budget

Traduzione di relazioni molti-a-molti

Ogni entita’ diventa una tabella con lo stesso nome, stessi attributi e per chiave il suo identificatore.

!

Ogni relazione diventa una tabella, con gli stessi attributi e come chiave gli identificatori delle entita’ coinvolte.

Progettazione logica

IMPIEGATO LAVORO PROGETTO

Matricola Codice (0,N) Data Cognome (0,N) Descrizione Budget

Traduzione di relazioni molti-a-molti

IMPIEGATO(Matricola, Cognome)

!

PROGETTO(Codice, Descrizione, Budget)

!

LAVORO(Matricola,Codice, Data)

Vincoli di integrita’ tra gli attributi

Progettazione logica

IMPIEGATO LAVORO PROGETTO

Matricola Codice (0,N) Data Cognome (0,N) Descrizione Budget

Traduzione di relazioni molti-a-molti

IMPIEGATO(Matricola, Cognome)

!

PROGETTO(Codice, Descrizione, Budget)

!

LAVORO(MatImpiegato,CodProgetto, Data)

E’ possibile

ridenonimare gli attributi della relazione

Progettazione logica

GIOCATORE CONTRATTO SQUADRA

Nome Nome (1,1) Ingaggio Cognome (0,N) Citta’ Sede

Traduzione di relazioni uno-a-molti

Sono possibili due traduzioni:

!

1. Traducendo la relazione come una tabella separata (come nel caso delle relazioni molti-a-molti).

!

2. Inglobando la relazione nell’entita’ con card. massima 1.

Progettazione logica

GIOCATORE CONTRATTO SQUADRA

Nome Nome (1,1) Ingaggio Cognome (0,N) Citta’ Sede

Traduzione di relazioni uno-a-molti

GIOCATORE(Nome, Cognome, Ruolo)

!

SQUADRA(Nome, Citta’, Sede)

!

CONTRATTO(Nome, Cognome, NomeSquadra,Ingaggio)

TRADUZIONE 1

Progettazione logica

GIOCATORE CONTRATTO SQUADRA

Nome Nome (1,1) Ingaggio Cognome (0,N) Citta’ Sede

Traduzione di relazioni uno-a-molti

GIOCATORE(Nome, Cognome, Ruolo, NomeSquadra, Ingaggio)

!

SQUADRA(Nome, Citta’, Sede)

TRADUZIONE 2

Progettazione logica

GIOCATORE CONTRATTO SQUADRA

Nome Nome (_,1) Ingaggio Cognome (0,N) Citta’ Sede

Traduzione di relazioni uno-a-molti

Cosa accade se vario la cardinalità min. di GIOCATORE?

!

cardMin=0 à Soluzione 1 preferibile

!

cardMin=1 à Soluzione 2 preferibile

Progettazione logica

IMPIEGATO DIREZIONE UFFICIO

Nome Nome (_,1) Data Cognome (_,1) Citta’ Sede

Traduzione di relazioni uno-a-uno

Sono possibili 3 diverse alternative, in base alla cardinalità minima delle due entità in gioco …

Progettazione logica

IMPIEGATO DIREZIONE UFFICIO

Nome Nome (1,1) Data Cognome (1,1) Citta’ Sede

Traduzione di relazioni uno-a-uno

➢ Caso 1: Cardinalità obbligatorie per entrambe le entità (cardMin pari ad 1 per entrambe).

!

Si traduce il modello inglobando la relazione in una delle due entità (traduzioni simmetriche).

Progettazione logica

IMPIEGATO DIREZIONE UFFICIO

Nome Nome (1,1) Data Cognome (1,1) Citta’ Sede

Traduzione di relazioni uno-a-uno

IMPIEGATO(Nome, Cognome, Stipendio, Data, NomeUfficio)

!

UFFICIO(Nome, Citta’, Sede)

Stipendio

In alternativa, è possibile inglobare la relazione DIREZIONE nell’entita’ UFFICIO …

Progettazione logica

IMPIEGATO DIREZIONE UFFICIO

Nome Nome (0,1) Data Cognome (1,1) Citta’ Sede

Traduzione di relazioni uno-a-uno

➢ Caso 2: Partecipazione obbligatoria per una delle entità (cardMax=1 per una delle due).

!

Si traduce il modello inglobando la relazione

nell’entità che ha partecipazione obbligatoria …

Progettazione logica

IMPIEGATO DIREZIONE UFFICIO

Nome Nome (0,1) Data Cognome (1,1) Citta’ Sede

Traduzione di relazioni uno-a-uno

IMPIEGATO(Nome, Cognome, Stipendio)

!

UFFICIO(Nome, Citta’, Sede, Data, NomeDirettore, CognomeDirettore,)

Progettazione logica

IMPIEGATO DIREZIONE UFFICIO

Nome Nome (0,1) Data Cognome (0,1) Citta’ Sede

Traduzione di relazioni uno-a-uno

➢ Caso 3: Partecipazione facoltativa per entrambe le entità (cardMin pari a 0 per entrambe).

Si traduce il modello traducendo la relazione come una tabella a sè stante (analogo del caso uno-a-molti).

Progettazione logica

IMPIEGATO DIREZIONE UFFICIO

Nome Nome (0,1) Data Cognome (0,1) Citta’ Sede

Traduzione di relazioni uno-a-uno

IMPIEGATO(Nome, Cognome, Stipendio)

!

UFFICIO(Nome, Citta’, Sede)

!

DIREZIONE(NomeUfficio, NomeDirettore, CognomeDirettore, Data)

Progettazione logica

Come per la fase di progettazione concettuale, è necessario corredare lo schema logico di

opportuna documentazione perchè non tutti i vincoli sono esprimibili nello schema logico:

!

➢ Tabella delle business rules (vista in precedenza)

!

➢ Insieme dei vincoli di integrità referenziali ◇ Rappresentati attraverso tabella

◇ Rappresentati in maniera grafica (diagramma logico).

Progettazione logica

!

IMPIEGATO( Nome, Cognome, Stipendio)

!

DIREZIONE( NumUfficio, NomeDir, CognomeDir, Data)

!

UFFICIO( Nome, Citta, Sede)

Esempio di diagramma logico, con vincoli di integrità … cammino di join

Ricapitolando:

!

➢ STEP2: Progettazione Logica

!

◇ STEP 2.1: Analisi delle ridondanze

◇ STEP 2.2: Eliminazione delle generalizzazioni e di attributi multi-valore

◇ STEP 2.3: Accorpamenti/partizionamenti di concetti

◇ STEP 2.4: Scelta degli identificatori

◇ STEP 2.5: Traduzione nel modello logico

Nel documento Corso di Basi di Dati (pagine 21-59)

Documenti correlati