2. A) Introduzione
1 2
B) Prog. ConceGuale (ER)
C) Modello Relazionale,
Algebra relazionale, SQL
1 2 3 4 5 6 7 1 2 3 4 5 6 7
D) Prog. Logica e E) Tecnologia di un DBMS
Normalizzazione
1 2 3 4 1 2 3 4 5 6
F) Programmazione DB
1 2
2 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
3. ProgeGo logico
Lo schema E/R descrive un dominio applicaMvo ad
un dato livello di astrazione
Lo schema E/R è molto uMle per:
fornire una descrizione sinteMca e visiva
rappresentare buona parte della semanMca
dell’applicazione
scambiare informazioni sull’aWvità progeGuale tra i
membri del team di progeGo e mantenere una
documentazione
3 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
4. ProgeGo logico
Non esistono DBMS in grado di operare
direGamente sui conceW di schemi E/R
è quindi necessario tradurli in altri schemi di daM
(logico relazionale in queste lezioni)
questa traduzione può essere eseguita in modo semi‐
automaMco
le scelte alternaMve devono tenere conto
dell’efficienza dello schema logico risultante e delle
operazioni da effeGuare (derivanM da flussi e
processi)
4 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
5. Processo di design
raccolta requisiM dominio
applicaMvo
progeGazione schema conceGuale
conceGuale (E/R)
progeGazione schema logico
logica (SQL: DDL)
DBMS
DB
(SQL: DDL, DML)
5 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
6. Scelte alternaMve
– il progeGo logico presenta in generale una
soluzione standard determinabile in modo
semplice e direGo
– a seconda dei casi sono però disponibili anche
soluzioni alternaMve che possono rivelarsi più o
meno convenienM
– per una scelta correGa sono necessarie:
• previsioni sulla natura e la frequenza delle operazioni
• valutazioni quanMtaMve sui volumi di daM (enMtà,
associazioni, percentuali di copertura di gerarchie,
percentuali di valori nulli)
6 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
7. Scelte alternaMve
si possono individuare alcune regole intuiMve:
le proprietà logiche sono comunque primarie
rispeGo ai moMvi di efficienza
tenere sulla stessa enMtà informazioni che
verranno di frequente consultate insieme
tenere su enMtà separate informazioni che
verranno consultate separatamente
limitare l’incidenza di valori nulli per aGribuM
opzionali
7 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
9. Fasi del progeGo
dopo le prime tre fasi, lo schema E/R è
cosMtuito soltanto da enMtà, associazioni e
aGribuM semplici
la quarta fase non è complessa
la quinta richiede molta aGenzione
! si tenga presente che ogni trasformazione
impoverisce lo schema; la semanMca persa
deve restare soGo forma di vincoli di integrità
che governeranno l’uMlizzo delle relazioni
9 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
11. Mantenimento delle enMtà
– tuGe le enMtà vengono E K
mantenute A
(0,1) (0,1)
– le enMtà figlie sono in
associazione con l’enMtà (1,1) (1,1)
padre E1 E2
– le enMtà figlie sono
idenMficate esternamente
tramite l’associazione A1 A2
questa soluzione è sempre possibile,
indipendentemente dalla copertura
11 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
12. Mantenimento enMtà ‐ es.:
cod progeGo
cod progeGo
desc
desc
(0,1) (0,1)
n_schede
prog_sw prog_hw (1,1) (1,1)
prog_sw prog_hw
(1,n)
mesi n_schede
usa (1,n)
uomo mesi
(0,n) uomo
(0,n) usa
comp_hw
comp_hw
12 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
13. Eliminazione delle gerarchie
Il collasso verso l’alto riunisce tuGe le enMtà figlie
nell’enMtà padre
E K (0,1)
A A1
(0,1) E K
A2 A
E1 E2
seleGore
A1 A2
seleGore è un aGributo che specifica se una
istanza di E apparMene a una delle soGoenMtà
13 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
14. ISA: collasso verso l’alto
il collasso verso l’alto favorisce operazioni che
consultano insieme gli aGribuM dell’enMtà
padre e quelli di una enMtà figlia:
in questo caso si accede a una sola enMtà, anziché
a due aGraverso una associazione
gli aGribuM obbligatori per le enMtà figlie
divengono opzionali per il padre
si avrà una certa percentuale di valori nulli
14 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
15. ISA: collasso verso l’alto
(0,1)
A1 K
(0,1) E
Copertura dell’ISA A2
A
totale esclusiva:
seleGore
seleGore ha N valori,
quante sono le soGoenMtà
parziale esclusiva:
seleGore ha N+1 valori; il valore in più serve
per le istanze che non appartengono ad
alcuna soGoenMtà
15 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
16. ISA: collasso verso l’alto
Copertura dell’ISA:
K
non esclusiva: occorrono
tanM seleGori booleani quante sel_i E
sono le soGoenMtà,
sel_i è “vero” per ogni A
istanza di E che apparMene a E_i (0,n)
se la copertura è parziale i seleGori
possono essere tuW
“falsi”
le associazioni connesse alle soGoenMtà si
trasportano su E, le eventuali cardinalità
minime diventano 0
16 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
17. ISA: collasso verso l’alto
tesi (0,1)
studente matr. matr.
cogn. studente
tesi (p,e) cogn.
stage stage (0,1)
seleGore
laureando diplomando
(1,1) (1,1) (0,1) (0,1)
denom.
cod_r
relatore azienda relatore azienda
cod_r denom.
il dominio di sel è (L,D,N)
17 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
19. ISA: collasso verso l’alto
esiste una precisa relazione tra il valore del
seleGore e i campi che possono avere valore
diverso da NULL
campi prima obbligatori ora ammeGono il
valore NULL
per una sMma delle percentuali di NULL occorre
conoscere le percentuali di laureandi e
diplomandi
19 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
20. ISA: collasso verso il basso
Collasso verso il basso:
si elimina l’enMtà padre trasferendone gli
aGribuM su tuGe le enMtà figlie
una associazione del padre è replicata, tante volte
quante sono le enMtà figlie
la soluzione è interessante in presenza di molM
aGribuM di specializzazione (con il collasso verso
l’alto si avrebbe un eccesso di valori nulli)
favorisce le operazioni in cui si accede
separatamente alle enMtà figlie
20 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
21. ISA: collasso verso il basso
limiM di applicabilità: K
E
• se la copertura non è totale A
non si può fare:
dove meGere gli E che non
sono né E1, né E2 ? E1 E2
• se la copertura non è A1 A2
esclusiva introduce
ridondanza: per una istanza
presente sia in E1 che in E2 si E1 E2
rappresentano due volte gli
aGribuM di E
K A A1 A2 A K
21 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
22. Collasso verso il basso: es.
iscri<o (1,n)
cf dipendente sindacato
cognome (0,1) (0,1) dirige
(t,e)
mansione (1,n)
qualifica
classe
impiegato operaio dirigente
(1,n) (1,n)
22 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
23. Collasso verso il basso: es.
(0,n) (0,n) sindacato
(0,n)
mansione (0,1) (0,1) (0,1) classe
qualifica
(1,n) impiegato operaio (1,n) dirigente (0,1)
cf co. cf co. cf co.
(1,1) (0,n)
(1,1) (0,n) dir_d
dir_o
dir_i
(0,n)
23 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
24. Scelta della chiave primaria
È necessario che tra i diversi idenMficatori di
una enMtà venga designata una chiave
primaria: per la chiave primaria occorrerà, infaW,
che il DBMS sia provvisto di strumenM per garanMre
l’unicità dei valori
criteri eurisMci di scelta:
primo: scegliere la chiave che è usata più
frequentemente per accedere all’enMtà
secondo: si preferiscono chiavi semplici a chiavi
composte, interne anziché esterne
24 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
25. IdenMficatori esterni
una componente di
idenMficazione esterna codice (E1)
stabilimento
di una enMtà E2 da
denom
una enMtà E1 (1,n)
aGraverso una lavora (R)
associazione R
comporta il trasporto (1,1)
della chiave primaria matr dipendente (E2)
di E1 su E2
cognome
25 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
26. IdenMficatori esterni
in questo modo
l’associazione è
rappresentata aGraverso la
chiave, e può essere
eliminata codice stabilimento
la chiave trasportata è chiave
esterna
in presenza di più codice
idenMficazioni in cascata, è
necessario iniziare la matr dipendente
propagazione dall’enMtà che
non ha idenMficazioni esterne cognome
26 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
28. AGribuM composM
Due possibili soluzioni
eliminare l’aGributo composto e considerare i suoi
componenM come aGribuM semplici
in questo modo si perde la visione unitaria ma si
manMene l’arMcolazione dei componenM
(0,n)
cf
qualifica
dipendente
cognome
via num ciGà
28 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
29. AGribuM composM
eliminare i componenM e considerare l’aGributo come
semplice
in questo modo lo schema risulta semplificato,
perdendo parte dei deGagli
(0,n)
cf
qualifica
dipendente
cognome
indirizzo
29 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
32. AGribuM ripetuM
....
data
casa parMta
ospiM
data marcatore
casa marcature (1,1)
n_ordine
32 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
33. Traduzione standard
ogni enMtà è tradoGa con una relazione con gli
stessi aGribuM
la chiave è la chiave (o idenMficatore) dell’enMtà stessa
(già visto)
ogni associazione è tradoGa con una relazione
con gli stessi aGribuM, cui si aggiungono gli
idenMficatori di tuGe le enMtà che essa collega
(già visto)
la chiave è composta dalle chiavi delle enMtà collegate
(questa può però essere una superchiave, come si
vedrà in seguito)
33 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
34. Traduzione standard
K1
A1 E1
B1
(1,n) E1 (K1, A1, B1,...)
AR
R E2 (K2, A2, B2,...)
BR
(1,n) R (K1,K2, AR, BR,...)
K2
A2 E2
B2
34 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)
35. Traduzione standard es.
matr
cognome studente
nome
(1,n)
anno
piano_s
(1,n)
codice
denom. corso
35 Basi di DaM ‐ ProgeGo Logico Relazionale (Parte 1)