Informatica
Introduzione alle basi di dati
Lezione 10
Scienze e tecniche psicologiche dello sviluppo e
dell'educazione, laurea magistrale
Anno accademico: 2005-2006
La progettazione logica
Obiettivo:

Costruire uno schema logico in grado di descrivere le
informazioni contenute nello schema Entità-Relazione
prodotto nella fase di progettazione concettuale
Prima di passare allo schema logico, lo schema
Entità-Relazione va ristrutturato:


Per semplificare la traduzione (non tutti i costrutti del
modello E-R hanno una traduzione naturale nei modelli
logici)
Per ottimizzare il progetto (la progettazione logica deve
tener conto delle prestazioni del sistema)
2
Analisi delle prestazioni su
schemi E-R
Indici di prestazioni: le prestazioni di una base di dati
non sono valutabili in maniera precisa dalla
progettazione logica

Dipendenti anche da parametri fisici
Due parametri che regolano le prestazioni dei sistemi
software:


Costo di una operazione: in termini di numero di occorrenze
di entità e associazione che mediamente vanno visitate per
rispondere a una operazione
Occupazione di memoria: lo spazio di memoria necessario
per memorizzare i dati descritti dallo schema
3
Analisi delle prestazioni su
schemi E-R
Per studiare questi parametri, dobbiamo
conoscere:

Volume dei dati:
 Numero di occorrenze di ogni entità e associazione dello
schema
 Dimensioni di ciascun attributo (di entità o associazione)

Caratteristiche delle operazioni: tipo
dell’operazione, frequenza, dati coinvolti
4
Analisi delle prestazioni su
schemi E-R
Numero
abitanti
Per esempio:
Persona
(1,1)
Residenza
(1,N)
Città
Tavola dei volumi:

Entità e associazioni con il volume (numero di
occorrenze) previsto
Concetto Tipo Volume
Città
E
200
Persona
E
1000000
Residenza R
1000000
5
Analisi delle prestazioni su
schemi E-R
Tavola delle operazioni:


Per ogni operazione, la frequenza prevista (e un
simbolo per il tipo, interattiva (I) o batch (B))
Per esempio:
 Op. 1: memorizza una nuova persona con la relativa città
di residenza
 Op. 2: stampa tutti i dati di una città (incl. num. abitanti)
Operazione Tipo Frequenza
Op. 1
I
500 al giorno
Op. 2
I
2 al giorno
6
Analisi delle prestazioni su
schemi E-R
Tavola degli accessi:


Per una operazione, il numero e il tipo accessi (di
lettura (L) o scrittura (S)) necessario per svolgere
l’operazione
Per esempio:
Op. 1
Op. 2
Concetto Costrutto Accessi Tipo
Concetto Costrutto Accessi Tipo
Persona
Città
E
1
S
Residenza R
1
S
Città
E
1
L
Città
E
1
S
E
1
L
7
Ristrutturazione di schemi E-R
Una serie di passi da effettuare in sequenza:
1.
Analisi delle ridondanze (eliminare o mantenere
eventuali ridondanze presente nello schema E-R)
2.
3.
4.
Eliminazione delle generalizzazioni
Partizionamento/accorpamento di entità e
associazioni (partizionare concetti in più concetti,
o accorpare concetti separati in un unico
concetto)
Scelta degli identificatori primari (per quelle
entità che ne hanno più di uno)
8
Analisi delle ridondanze
Ridondanza: presenza di un dato che può essere
derivati da altri dati
Numero
abitanti
Per esempio:
Persona
(1,1)
Residenza
(1,N)
Città
Un tipo di ridondanza: un attributo (Numero abitanti)
è derivabile da una operazione di conteggio di
occorrenze

Numero abitanti per una città = numero di occorrenza della
associazione Residenza a cui tale città partecipa
Ci sono altri tipi di ridondanze in esempi diversi
(pagine 261 e 262 di Atzeni et al.)
9
Analisi delle ridondanze
La presenza di ridondanze (dati derivati) in uno
schema E-R presente un vantaggio e alcuni svantaggi


Vantaggio: riduzione degli accessi necessari
Svantaggi:
 Maggiore occupazione di memoria (un costo spesso
trascurabile)
 La necessità di effettuare operazioni aggiuntive per mantenere
il dato derivato aggiornato
La decisione di mantenere o eliminare una
ridondanza va presa confrontando costo delle
operazioni che coinvolgono il dato ridondante e
relativa occupazione in memoria nei casi di presenza
o assenza della ridondanza
10
Analisi delle ridondanze
Numero
abitanti
Per esempio:
Persona
(1,1)
Residenza
(1,N)
Città
Presenza del dato ridondante (attributo
Numero abitanti):


Assumiamo che Numero abitanti richiede 4 byte
Numero di città = 200, quindi il dato ridondante
richiede 800 byte
11
Analisi delle ridondanze
Presenza del dato ridondante (attributo Numero
abitanti):

Op. 1 (memorizza una nuova persona con la relativa città di
residenza): dalla sua tavola degli accessi, op. 1 richiede:
 Un accesso in scritta a Persona
(memorizzare la nuova persona)
 Un accesso in scrittura a
Residenza (per memorizzare una
nuova coppia persona-città)
 Un accesso in lettura a Città (per
cercare la città di interesse)
Concetto
Costr. Acc. Tipo
Persona
E
1
S
Residenza
R
1
S
Città
E
1
L
Città
E
1
S
 Un accesso in scrittura a Città
(per incrementare di uno il
numero di abitanti di quella città)
12
Analisi delle ridondanze
Assenza del dato ridondante (attributo Numero
abitanti viene tolto):

Op. 1: una nuova tavola degli accessi:
Concetto
Costr. Acc. Tipo
Persona
E
1
S
Residenza
R
1
S
 Un accesso in scritta a Persona (memorizzare la nuova
persona)
 Un accesso in scrittura a Residenza (per memorizzare una
nuova coppia persona-città)
Conclusione: per op. 1, è meglio l’assenza del dato
ridondante (meno accessi, 800 byte risparmiato)
13
Analisi delle ridondanze
La situazione per op. 2 (stampa tutti i dati di una
città, incluso numero abitanti) è diversa


In presenza di ridondanza:
Concetto
Costr. Acc. Tipo
Città
E
1
L
In assenza di ridondanza:
 In media, 5000 accessi in lettura a Residenza (5000 è ottenuto
dividendo il numero di persone (1000000) per il numero di città
(200))
Concetto
Costr. Acc.
Tipo
Città
E
1
L
Residenza
R
5000 L
14
Analisi delle ridondanze
Riassunto:


Op. 1: meglio senza ridondanza
Op. 2: meglio con ridondanza
Un analisi più precisa può tenere conto:



Il costo di ogni operazione di lettura e scrittura (scrittura è
più costoso)
La frequenza delle operazioni (nella tabella delle operazioni)
Se l’obiettivo della eliminazione delle ridondanze è di
risparmiare memoria o di ridurre il numero di accessi ai dati
15
Eliminazione delle
generalizzazioni
I modelli logici tradizionali (per esempio, il modello
relazionale) non consentono di rappresentare
direttamente una generalizzazione
È necessario trasformare le generalizzazioni in entità
e/o associazioni
Tre metodi:
1.
2.
3.
Accorpamento delle figlie della generalizzazione nel padre
Accorpamento del padre della generalizzazione nelle figlie
Sostituzione della generalizzazione con associazioni
16
Eliminazione delle
generalizzazioni
Per esempio:
A02
A01
E0
E3
R1
A21
A11
E1
E2
(X,Y)
R2
E4
17
Eliminazione delle
generalizzazioni
1. Accorpamento delle figlie della
generalizzazione nel padre:
A01
A11
(0,1)
A02
A21
(0,1)
E0
R1
E3
ATIPO
(0,Y)
R2
E4
18
Eliminazione delle
generalizzazioni
2. Accorpamento del padre della
generalizzazione nelle figlie:
R1
E3
R1
A02
A11
A01
E1
A01
E2
A21
A02
(X,Y)
R2
E4
19
Eliminazione delle
generalizzazioni
3. Sostituzione della generalizzazione con
associazioni:
A02
A01
E0
(0,1)
(0,1)
RG1
A11
E3
R1
(1,1)
E1
RG2
(1,1)
E2
A21
R2
E4
20
Partizionamento/accorpamento di
concetti
Partizionare o accorpare entità e/o
associazioni per ottenere una maggior
efficienza delle operazioni (idea: ridurre gli
accessi)




Partizionamento di entità
Eliminazione di attributi multivalore
Accorpamento di entità
Altri tipi di partizionamento/accorpamento
21
Partizionamento/accorpamento di
concetti
Partizionamenti di entità
Cognome
Per esempio:
Indirizzo
Prima
Codice
Livello
Impiegato
Stipendio
Ritenute
Data nascita
Dopo
Codice
Cognome
Indirizzo
Data nascita
Livello
Dati
anagrafici
(1,1)
Dati
impiegato
(1,1)
Dati
lavorativi
Stipendio
Ritenute
22
Partizionamento/accorpamento di
concetti
Partizionamenti di entità
Cognome
Per esempio:
Indirizzo
Dopo
Cognome
Indirizzo
Data nascita
Prima
Codice
Livello
Impiegato
Conviene se le operazioni che
nascita
coinvolgonoData
frequentemente
l’entità
Impiegato richiedono solo informazioni
Codice
anagrafici o solo informazione
relative alla sua retribuzione
Dati
Dati
anagrafici
(1,1)
impiegato
(1,1)
Dati
lavorativi
Stipendio
Ritenute
Livello
Stipendio
Ritenute
23
Scelta degli identificatori
principali
Identificatori principali: cioè, le chiavi primarie
Criteri per la scelta degli identificatori principali:


Gli attributi con valori nulli non possono essere usati come
identificatori principali
È meglio scegliere un identificatore composto di pochi
attributi


È meglio scegliere un identificatore interno (composto di
pochi attributi)
È meglio scegliere un identificatore che viene utilizzato da
molte operazioni
24
Traduzione verso il modello
relazione
1.
Schema E-R  uno schema logico equivalente
Entità e associazioni molti a molti
Nome
Cognome
Stipendio
Matricola
Impiegato
(0,N)
Partecipazione
(0,N)
Progetto
Data inizio
Budget
Codice
Lo schema relazione corrispondente:
Impiegato(Matricola, Cognome, Stipendio)
Progetto(Codice, Nome, Budget)
Partecipazione(Matricola, Codice, DataInizio)
Due vincoli di integrità: tra Matricola e Codice di
Partecipazione e Matricola e Codice di Impiegato e Progetto
25
Traduzione verso il modello
relazione
1. Entità e associazioni molti a molti
Per rendere più comprensibili il significato dello
schema è conveniente effettuare ridenominazioni
Per esempio: in Partecipazione, Matricola 
Impiegato, Codice  Progetto
Impiegato(Matricola, Cognome, Stipendio)
Progetto(Codice, Nome, Budget)
Partecipazione(Impiegato, Progetto, DataInizio)
26
Traduzione verso il modello
relazione
1.
Nome ditta
Entità e associazioni molti a molti
Fornitore
(0,N)
Fornitore
Quantità
(1,N)
Prodotto
Codice
(1,N)
Partita IVA
Nome
Dipartimento
Genere
Telefono
Fornitore(PartitaIVA, NomeDitta)
Dipartimento(Nome, Telefono)
Prodotto(Codice, Genere)
Fornitura(Fornitore, Prodotto, Dipartimento, Quantità)
27
Traduzione verso il modello
relazione
1.
Nome ditta
Entità e associazioni molti a molti
Fornitore
(0,N)
Fornitore
Quantità
(1,N)
Prodotto
Codice
(1,N)
Partita IVA
Nome
Dipartimento
Genere
Telefono
Fornitore(PartitaIVA, NomeDitta)
Dipartimento(Nome, Telefono)
Prodotto(Codice, Genere),
Fornitura(Fornitore, Prodotto, Dipartimento, Quantità)
Tre vincoli di integrità: ognuno da un attributo della relazione
Fornitura (mostrato dalle frecce)
28
Traduzione verso il modello
relazione
2. Associazioni uno a molti
Città
Cognome
Data nascita
Ruolo
Giocatore
(1,1)
Contratto
(0,N)
Squadra
Ingaggio
Colori
Nome
Uno schema relazione corrispondente:
Giocatore(Cognome, DataNascita, Ruolo)
Squadra(Nome, Città, Colori)
Contratto(Giocatore, DataNascitaGiocatore, NomeSquadra, Ingaggio)
29
Traduzione verso il modello
relazione
2.
Associazioni uno a molti
Città
Cognome
Data nascita
Ruolo
Giocatore
(1,1)
Contratto
(0,N)
Squadra
Ingaggio
Colori
Nome
Un altro schema relazione corrispondente:
Giocatore(Cognome, DataNascita, Ruolo, NomeSquadra, Ingaggio)
Squadra(Nome, Città, Colori)
Un vincolo di integrità relazionale: tra NomeSquadra della
relazione Giocatore e Nome della relazione Squadra
30
Traduzione verso il modello
relazione
3.
Associazioni uno a uno
Telefono
Cognome
Stipendio
Codice
Direttore
(1,1)
Direzione
(1,1)
Dipartimento
Sede
Nome
Data inizio
Due possibilità simmetriche e ugualmente valide:
Direttore(Codice, Cognome, Stipendio, DipartimentoDiretto,
InizioDirezione)
Dipartimento(Nome, Telefono, Sede)
Direttore(Codice, Cognome, Stipendio)
Dipartimento(Nome, Telefono, Sede, Direttore, InizioDirezione)
31
Traduzione verso il modello
relazione
3.
Associazioni uno a uno
Telefono
Cognome
Stipendio
Codice
Direttore
(1,1)
Direzione
(1,1)
Dipartimento
Sede
Nome
Data inizio
Due possibilità simmetriche e ugualmente valide:
Direttore(Codice, Cognome, Stipendio, DipartimentoDiretto,
InizioDirezione)
Dipartimento(Nome, Telefono, Sede)
di
Vincoli
integrità
Direttore(Codice, Cognome, Stipendio)
referenziale
Dipartimento(Nome, Telefono, Sede, Direttore, InizioDirezione)
32
Traduzione verso il modello
relazione
3. Associazioni uno a uno
Una terza possibilità: rappresentare tutti i concetti
in una singola relazione

Svantaggi: nello schema E-R le due entità sono separate
per una ragione (o più ragioni); meglio tenere le entità
separate anche nel modello logico
33
Traduzione verso il modello
relazione
3.
Associazioni uno a uno
Telefono
Cognome
Stipendio
Codice
Impiegato
(0,1)
Direzione
(1,1)
Sede
Dipartimento
Nome
Data inizio
Uno schema relazionale:
Impiegato(Codice, Cognome, Stipendio)
Dipartimento(Nome, Telefono, Sede, Direttore, InizioDirezione)
Vincolo di integrità referenziale: tra Direttore della relazione
Dipartimento e Codice della relazione Impiegato
Preferibile all’alternativa in cui l’associazione Direzione viene
rappresentata nella relazione Impiegato: per il nome del
dipartimento diretto, potrebbero essere valori nulli
34
Traduzione verso il modello
relazione
3.
Associazioni uno a uno
Telefono
Cognome
Impiegato
Stipendio
(0,1)
Direzione
(0,1)
Dipartimento
Sede
Nome
Data inizio
Codice
Tre opzioni:
a)
b)
Combinare l’entità Impiegato e l’associazione Direzione in una
relazione, lasciare l’entità Dipartimento separata
Combinare l’entità Dipartimento e l’associazione Direzione in una
relazione, lasciare l’entità Impiegato separata
…
35
Traduzione verso il modello
relazione
3.
Associazioni uno a uno
Telefono
Cognome
Impiegato
Stipendio
(0,1)
Direzione
(0,1)
Dipartimento
Sede
Nome
Data inizio
Codice
Tre opzioni:
…
c)
Lasciare l’entità Impiegato, l’associazione Direzione, e l’entità
Dipartimento separate:
Impiegato(Codice, Cognome, Stipendio)
Dipartimento(Nome, Telefono, Sede)
Direzione(Direttore, Dipartimento, DataInizioDirezione)
36
Traduzione verso il modello
relazione
3.
Associazioni uno a uno
Telefono
Cognome
Impiegato
Stipendio
(0,1)
Direzione
(0,1)
Dipartimento
Sede
Nome
Data inizio
Codice
Tre opzioni:
…
c)
Lasciare l’entità Impiegato, l’associazione Direzione, e l’entità
Dipartimento separate:
Vincoli di
integrità
referenziale
Impiegato(Codice, Cognome, Stipendio)
Dipartimento(Nome, Telefono, Sede)
Direzione(Direttore, Dipartimento, DataInizioDirezione)
37
Traduzione verso il modello
relazione
3.
Associazioni uno a uno
Telefono
Cognome
Impiegato
Stipendio
(0,1)
Direzione
(0,1)
Dipartimento
Sede
Nome
Data inizio
Codice
Tre opzioni:
…
c)
Lasciare l’entità Impiegato, l’associazione Direzione, e l’entità
Dipartimento separate:
Impiegato(Codice, Cognome, Stipendio)
Dipartimento(Nome, Telefono, Sede)
Direzione(Direttore, Dipartimento, DataInizioDirezione)
Vantaggio rispetto le opzioni a) e b): non ci sono i valori nulli
38
Scarica

Basi di Dati e Laboratorio 02/03