Sei sulla pagina 1di 35

Università degli Studi di Milano-Bicocca

Anno Accademico 2019–2020


Master Universitario di primo livello

La Progettazione Logica
Traduzione Relazioni E-R

Mercorio
• A partire da uno schema E-R ristrutturato si
costruisce uno schema logico equivalente, in grado
cioè di rappresentare le medesime informazioni
• La metodologia di traduzione varia a seconda delle
entità e delle relazioni interessate

2
• Ogni entità è tradotta in una relazione con
gli stessi attributi
– La chiave è l’identificatore dell’entità stessa
• Ogni associazione è tradotta con una
relazione con gli stessi attributi cui si
aggiungono gli identificatori di tutte le
entità che essa collega
– La chiave è composta dalle chiavi delle entità
collegate
3
Codice
Descrizione
Offerta di
Professione
lavoro Numero posti
OFFERTA DI LAVORO (Codice, Professione, Descrizione, Numero posti)
(0..N)

Periodo di RIGUARDA (Codice, Denominazione, Periodo di validità)


riguarda
validità

(0..N)
SEDE DI LAVORO (Denominazione, Indirizzo, Telefono)
Denominazione Telefono
Sede di
Indirizzo lavoro

4
• La traduzione standard è sempre possibile
ed è l’unica possibilità per le associazioni
molti a molti
• Altre forme di traduzione (semplificate)
delle associazioni sono possibili per altri
casi di cardinalità o altre forme di
associazione
• Alcune forme di traduzione fondono in
una stessa relazione entità e associazioni
5
• Le altre forme di traduzione:
– Danno origine ad un minor numero di relazioni e
generano quindi uno schema più semplice
– Richiedono un minor numero di join per la
navigazione attraverso un’associazione, ovvero per
accedere alle istanze di entità connesse tramite
l’associazione
– Penalizzano le operazione che consultano soltanto gli
attributi di una entità che è stata fusa

6
• Sono possibili due casi distinti:
– Associazione uno a molti con partecipazione obbligatoria
(1,1)
• Soluzione a 2 relazioni
– Associazione uno a molti con partecipazione opzionale
(0,1)
• Soluzione a 2 o a 3 relazioni

7
• Se l’entità partecipa con cardinalità (1,1) può essere
fusa con l’associazione, ottenendo una soluzione a
due relazioni
• Questa soluzione è favorevole poiché genera un
numero minore di relazioni rispetto al caso standard

8
Denominazione Telefono
Sede
Indirizzo
operativa
(1,1) SEDE OPERATIVA (Denominazione, Indirizzo, Telefono,
ID Impresa, Data di registrazione)
Data di
appartiene
registrazione
IMPRESA (P. IVA, Denominazione, Settore)
(0..N)
P. IVA Settore

Impresa
Denominazione

9
• Se l’entità partecipa con cardinalità (0,1) può
comunque essere fusa con l’associazione, ottenendo
una soluzione a due relazioni, oppure può seguire il
caso standard, ottenendo una soluzione a tre
relazioni
• La prima soluzione presenta un numero minore di
relazione ma può avere al loro interno valori nulli
(segnalati in figura con *)
• La seconda soluzione elimina il problema dei valori
nulli ma genera una relazione in più

10
Codice
Descrizione
OFFERTA DI LAVORO (Codice, Professione, Descrizione, Numero posti)
Offerta di
Professione
lavoro Numero posti PUBBLICA (Codice, P.IVA, Periodo di validità)
(0..1)

IMPRESA (P.IVA, Denominazione, Settore)


Periodo di
pubblica
validità

oppure:
(0..N)
P. IVA Settore
OFFERTA DI LAVORO (Codice, Professione, Descrizione, Numero posti,
Impresa ID Impresa*, Data di validità*)
Denominazione

IMPRESA (P.IVA, Denominazione, Settore)

11
Traduzione standard
id_x id_y
a1
x1 Y1
(1,N) (1,N)
x2
x3
X Y
Y2
Associazione

X(id_x, x1, x2, x3)


Associazione(id_x, id_y, a1)
Y(id_Y, y1, y2)

12
Traduzione 1:N
id_x id_y
a1
x1 Y1
(1,1) (1,N)
x2
x3
X Y
Y2
Associazione

X(id_x, x1, x2, x3, id_y, a1) #id_y funge da chiave esterna
Y(id_Y, y1, y2)

13
Traduzione 1:N con partecipazione non obbligatoria
id_x id_y
a1
x1 Y1
(0,1) (1,N)
x2
x3
X Y
Y2
Associazione

Ci sono due possibilità:


X(id_x, x1, x2, x3) X(id_x, x1, x2, x3, id_y, a1)
Associazione(id_x, id_y, a1) Y(id_Y, y1, y2)
Y(id_Y, y1, y2)

14
• Traduzione con una relazione
– Se le cardinalità minime delle relazioni coinvolte E1 E2
sono entrambe 1 la chiave può essere
indifferentemente K1 o K2
– Se la cardinalità di E2 è (0,1) e quella di E1 è (1,1) la
chiave sarà K2; E2 è l’entità con maggior numero di
istanze alcune delle quali non si associano, ci saranno
quindi valori nulli in corrispondenza di K1; K1 in questi
casi non potrebbe essere scelta

15
• Se la cardinalità è (0,1) da entrambe le parti allora le
relazioni saranno tre per l’impossibilità di assegnare
la chiave all’unica relazione a causa della presenza di
valori nulli sia su K1 sia su K2
• La soluzione con una relazione, sebbene ottimale in
termini di relazioni generate, è sconsigliata poiché
va ricordato che lo schema originale è il frutto di
una fase di ristrutturazione in cui sono state
effettuate scelte precise riguardo l’accorpamento e
il partizionamento di entità

16
• La traduzione 1 a 1 è un caso particolare della 1
a N, pertanto è possibile tradurre anche con:
• Traduzione con due relazioni
– L’associazione può essere compattata con l’entità
che partecipa obbligatoriamente (una delle due se
la partecipazione è obbligatoria per entrambe)
– La chiave viene scelta con gli stessi criteri utilizzati
per la traduzione con una relazione

17
Denominazione Telefono
Sede
Indirizzo
Legale
(1,1) SEDE LEGALE (Denominazione, Indirizzo, Telefono,
ID Impresa)
appartiene

IMPRESA (P. IVA, Denominazione, Settore)


(1,1)
P. IVA Settore

Impresa
Denominazione

18
– Le entità con identificatori esterni danno
luogo a relazioni con chiavi che includono gli
identificatori delle entità “identificanti”
– Infatti le entità identificate esternamente
partecipano sempre all’associazione con una
cardinalità minima e massima pari a 1
– Questo tipo di traduzione è valido
indipendentemente dalla cardinalità con cui
l’altra entità partecipa all’associazione

19
Descrizione
Professione Offerta di
Codice lavoro Numero posti

(1..1) OFFERTA DI LAVORO (Codice, ID Impresa, Professione, Descrizione,


Numero posti)
pubblica

IMPRESA (P.IVA, Denominazione, Settore)


(1..N)
P. IVA Settore

Impresa
Denominazione

20
• Autoassociazione molti a molti
– Viene tradotta con:
• Una relazione per l’entità
• Una relazione per l’associazione
– Quest’ultima contiene due volte la chiave dell’entità
• E’ necessario però modificare i nomi degli attributi per non
avere omonimia

21
richiede
(0..N) (0..N)

COMPETENZA (Codice, Denominazione, Descrizione)

Competenza RICHIEDE (Competenza, Competenza richiesta)


lavorativa
Codice

Denominazione
Descrizione

22
• Autoassociazione 1 a N
– E’ traducibile con una sola relazione che contiene due volte
l’attributo chiave, una volta come chiave ed una come riferimento
all’istanza connessa, con nome diverso per specificare il ruolo
• Autoassociazione 1 a 1
– Su entrambi i rami è bene specificare il ruolo
– Conviene la soluzione con due relazioni per evitare ridondanze,
vincoli ed eccesso di valori nulli

23
• Segue la traduzione standard
• Talvolta, nella relazione che traduce l’associazione, la
chiave ottenuta componendo le chiavi di tutte le
entità partecipanti è una superchiave, cioè una
chiave composta il cui set di componenti non è
minimale (la chiave vera è un sottoinsieme)

24
Codice
Descrizione
Offerta di
Professione
lavoro Numero posti
(0..N)
Denominazione
pubblica
Periodo di (0..N)
validità
Sede Indirizzo
Telefono
(0..N)
P. IVA Settore

Impresa
Denominazione

OFFERTA DI LAVORO (Codice, Professione, Descrizione, Numero posti)

SEDE (Denominazione, Indirizzo, Telefono)

IMPRESA (P.IVA, Denominazione, Settore)

PUBBLICA (ID Offerta, ID Sede, ID Impresa, Periodo di validità)


25
• Al termine della progettazione logica è necessario
produrre una documentazione che sia in grado di
descrivere i vincoli di integrità referenziale introdotti
nella traduzione
• Si può fare uso di un semplice formalismo grafico che
permetta di rappresentare le relazioni ed i vincoli
introdotti

26
OFFERTA DI LAVORO

Codice Professione Descrizione Numero posti

IMPRESA

P. IVA Denominazione Settore

PUBBLICA

ID Offerta ID Impresa ID Sede Periodo di validità

SEDE

Denominazione Indirizzo Telefono

27
• Il formalismo
– mantiene traccia delle associazioni E-R dello schema
originale
– Individua in maniera immediata i cammini di join, ovvero
le operazioni di join necessarie per ricostruire
l’informazione rappresentata dalle associazioni originarie

28
• La fase di progettazione logica viene supportata da
tutti gli strumenti CASE di ausilio allo sviluppo di basi
di dati
• La fase di traduzione verso il modello relazionale
viene eseguita in modo pressoché automatica
• Alcuni sistemi forniscono strumenti anche per la
procedura inversa

29
30
• La fase finale del processo di progettazione di una base dati, la
progettazione fisica, riceve in ingresso lo schema logico, le
caratteristiche del sistema scelto e le previsioni sul carico
applicativo e produce in uscita lo schema fisico della base di dati,
costituito dalle effettive definizioni delle relazioni e dalle
strutture fisiche di accesso utilizzate.

31
• Vanno considerate:
– Le scelte relative alle strutture fisiche
– Le dimensioni iniziali dei file
– Le possibilità di espansione
– La contiguità delle allocazioni dei dati
– La quantità e la dimensione delle aree di transito per lo
scambio di informazioni

32
• Un aspetto fondamentale è l’individuazione degli
indici
• Gli indici sono speciali strutture di accesso a relazioni
che vengono definiti sugli attributi delle relazioni
stesse e garantiscono l’accesso diretto, e quindi
efficiente, ai dati quando l’interrogazione si basa su
tali attributi

33
• Le operazioni più delicate all’interno di una base di
dati relazionale sono quelle di selezione e di join
• Ciascuna di esse può essere eseguita in modo più
efficiente se sui campi interessati è definito un indice

34
• L’attività di scelta degli indici è svolta spesso in modo
empirico, con un approccio per tentativi
• L’attività di regolazione (tuning) del progetto fisico
consente spesso, attraverso una corretta scelta degli
indici, di migliorare le prestazioni della base di dati

35

Potrebbero piacerti anche