Sei sulla pagina 1di 22

TRADUZIONE DI SCHEMI

Progettazione di basi di dati relazionali


attraverso la traduzione da schemi ER
a schemi relazionali

Da un modello ad un altro
•  Parliamo di come progettare uno schema di basi di
dati relazionale a partire dal progetto dello schema
concettuale.
•  Metteremo in relazione i costrutti dei modelli ER (e EER)
con quelli del modello relazionale.
3

Schema concettuale ER

Schema relazionale
5

Algoritmo per la traduzione


•  Passo 1: traduzione di tipi di entità
•  Passo 2: traduzione di tipi di entità deboli
•  Passo 3: traduzione di tipi di associazioni binarie 1:1
•  Passo 4: traduzione di tipi di associazioni binarie 1:N
•  Passo 5: traduzione di tipi di associazioni binarie M:N
•  Passo 6: traduzione di attributi multivalore
•  Passo 7: traduzione di tipi di associazione N-arie

Passo 1: traduzione di tipi di entità


•  Per ogni tipo di entità (forte) E nello schema ER, si
costruisca una relazione R che contenga tutti gli
attributi semplici di E.
•  Di un attributo composto si inseriscano solo gli
attributi componenti semplici.
•  Si scelga come chiave primaria di R uno degli attributi
chiave di E (se la chiave per E è composta, allora
l’insieme degli attributi semplici che la compongono
formeranno la chiave di E)
7

Schema concettuale ER

Passo 1: esempio
•  Si costruiscono le relazioni IMPIEGATO, DIPARTIMENTO
e PROGETTO con relative chiavi
•  Gli attributi di chiave esterna non sono ancora inseriti
9

Passo 2: traduzione di tipi di entità deboli


•  Per ogni tipo di entità debole W dello schema ER con tipo di
entità proprietario E, si costruisca una relazione R e si
inseriscano tutti gli attributi semplici (o componenti semplici
di attributi composti) di W come attributi di R.
•  Si inseriscano come attributi di chiave esterna di R gli
attributi di chiave primaria delle relazioni corrispondenti ai
tipi di entità proprietari.
•  La chiave primaria di R è data dalla combinazione delle
chiavi primarie delle proprietarie e dalla chiave parziale del
tipo di entità W (se esiste).
•  Se c’è un tipo di entità debole E2, il cui proprietario è a sua
volta un tipo di entità debole E1, allora E1 dovrebbe essere
tradotto prima di E2 in modo da determinare prima la sua
chiave primaria.

10

Schema concettuale ER
11

Passo 2: esempio
•  Si costruisce PERSONA_A_CARICO
•  Si inserisce la chiave primaria SSN della relazione
IMPIEGATO (tipo di entità proprietario) come attributo
di chiave esterna, rinominato in SSN_I (anche se non è
strettamente necessario)
•  La chiave primaria è {SSN_I,
NOME_PERSONA_A_CARICO} perché
NOME_PERSONA_A_CARICO è chiave parziale di
PERSONA_A_CARICO

12

Passo 3: traduzione di tipi di associazioni


binarie 1:1
•  Per ogni tipo di associazione R binaria 1:1 nello schema
ER si individuino le relazioni S e T (corrispondenti ai tipi
di entità che partecipano a R).
•  Tre approcci:
1.  Basato su chiavi esterne
2.  Basato sulla fusione delle relazioni
3.  Basato su relazione associazione

L’approccio 1 è il più comodo e, se non esistono motivi


particolari, è quello che si dovrebbe usare sempre.
13

Passo 3: approccio (1) basato su chiavi


esterne
•  Si scelga una delle relazioni (ad esempio S) e si
inserisca in S come chiave esterna la chiave primaria di
T.
•  E’ meglio scegliere nel ruolo di S la relazione
corrispondente a un tipo di entità con partecipazione
totale a R.
•  Si inseriscano come attributi di S tutti gli attributi
semplici del tipo di associazione 1:1 indicata con R.

14

Schema concettuale ER
15

Passo 3: approccio (1): esempio


•  Tipo di associazione 1:1 DIRIGE.
•  Si sceglie DIPARTIMENTO come S perché la sua
partecipazione al tipo di associazione DIRIGE è totale
(ogni dipartimento ha un direttore).
•  Si inserisce la chiave primaria della relazione
IMPIEGATO come chiave esterna della relazione
DIPARTIMENTO e la si rinomina SSN_DIR.
•  Si inserisce anche l’attributo semplice Data_inizio (di
DIRIGE) nella relazione DIPARTIMENTO rinominandolo
in DATA_INIZIO_DIR.

16

Passo 3: approccio (2) basato sull’unica


relazione fusione
•  E’ possibile fondere i due tipi di entità e l’associazione in
una sola relazione.
•  Questa soluzione può essere adeguata quando
entrambe le partecipazioni sono totali, cioè le tabelle
avranno lo stesso numero di righe.
17

Passo 3: approccio (2) basato su relazione


associazione
•  Creare una terza relazione R con lo scopo di definire un
riferimento incrociato tra le chiavi primarie delle due
relazioni S e T.
•  Approccio necessario per le associazioni M:N
•  R è chiamata relazione associazione, ogni riga
rappresenta un’istanza di associazione che collega una
tupla di S a una di T.
•  R includerà gli attributi delle chiavi primarie di S e T
come chiavi esterne verso S e T
•  Lo svantaggio è che si dovrà fare una JOIN aggiuntiva
quando si collegano le due tabelle.

18

Passo 4: traduzione di tipi di associazioni


binarie 1:N
•  Per ogni tipo di associazione R binaria 1:N nello
schema ER si individuino le relazioni S e T
(corrispondenti ai tipi di entità che partecipano a R).
•  Si individui la relazione S che rappresenta il tipo di
entità partecipante lato-N del tipo di associazione.
•  Si inserisca in S come chiave esterna la chiave primaria
della relazione T che rappresenta l’altro tipo di entità
partecipante a R (ciò perché ogni istanza di entità lato-
N è collegata al più a un’istanza di entità lato-1)
•  Si inseriscano tra gli attributi di S tutti gli attributi
semplici del tipo di associazione 1:N
19

Schema concettuale ER

20

Passo 4: esempio
•  Associazione LAVORA_PER: si inserisce la chiave
primaria NUMERO_D della relazione DIPARTIMENTO
come chiave esterna nella relazione IMPIEGATO e la si
chiama N_D

•  Associazione SUPERVISIONE: si inserisce la chiave


primaria della relazione IMPIEGATO come chiave
esterna nella relazione IMPIEGATO stessa e la si
chiama SUPER_SSN

•  Associazione CONTROLLA: la chiave esterna NUM_D di


PROGETTO riferisce la chiave primaria NUMERO_D di
DIPARTIMENTO
21

Passo 4: altra soluzione


•  Usare una relazione associazione (cross-reference)
come spiegato nell’approccio 2 del passo 3.
•  Si crea un relazione separata R i cui attributi sono le
chiavi primarie di S e T.
•  Questa soluzione può essere usata se un numero
limitato di tuple in S partecipa all’associazione, per
evitare un numero elevato di valori nulli nella chiave
esterna.

22

Passo 5: traduzione di tipi di associazioni


binarie M:N
•  Per ogni tipo di associazione R binaria M:N si costruisca
una nuova relazione S che rappresenti R.
•  Si inseriscano come attributi di chiave esterna di S, le
chiavi primarie delle relazioni che rappresentato i tipi
di entità partecipanti, le loro combinazioni formeranno
la chiave primaria di S
•  Si inseriscano anche tutti gli attributi semplici del tipo
di associazione M:N
•  In questo caso è necessario creare una relazione
distinta
23

Schema concettuale ER

24

Passo 5: esempio
•  Associazione LAVORA_SU
•  Costruire la relazione LAVORA_SU e inserire le chiavi
primarie di PROGETTO e IMPIEGATO come chiavi
esterne (rinominate in N_P e SSN_I)
•  Si inserisce anche l’attributo ORE
•  La chiave primaria di LAVORA_SU è {SSN_I, N_P}
25

Passo 5: note
•  Dal momento che ogni istanza di associazione presenta
una dipendenza di esistenza da ognuna delle entità che
le collega
•  Allora sulle chiavi esterne della relazione
corrispondente all’associazione R deve essere
specificata l’opzione di propagazione per l’azione
referenziale innescata.

26

Passo 6: traduzione di attributi


multivalore
•  Per ogni attributo multivalore A si crei una nuova
relazione R
•  R comprenderà un attributo corrispondente ad A più
l’attributo di chiave primaria K (come chiave esterna di
R) ella relazione che rappresenta il tipo di entità o di
associazione che ha A come attributo
•  La chiave primaria di R è data dalla combinazione di A
e di K
•  Se A è composto si considerano i suoi componenti
semplici
27

Schema concettuale ER

28

Passo 6: esempio
•  Costruire una relazione SEDI_DIP
•  SEDE_D rappresenta l’attributo multivalore
•  NUMERO_D (chiave esterna) è la chiave primaria della
relazione DIPARTIMENTO
•  La chiave primaria di SEDI_DIP è {NUMERO_D, SEDI_D}
•  IN SEDI_DIP esisterà una riga separata per ongi sede di
un dipartimento
29

Passo 6: note
•  Come azione referenziale innescata dovrebbe essere
specificata l’opzione di propagazione
•  Determinare la chiave primaria di R nel caso di
attributo multivalore composto richiede l’analisi del
significato degli attributi componenti

30

Schema relazionale
31

Passo 7: traduzione di tipi di associazioni


N-arie
•  Si costruisca una relazione R per ogni associazione S n-
aria (con n>2)
•  Si inseriscano in S come attributi di chiave esterna le
chiavi primarie delle relazioni che rappresentano i tipi
di entità partecipanti l’associazione
•  Si inseriscano anche tutti gli attributi dell’associazione
•  Di solito la chiave primaria è una combinazione di tutte
le chiavi esterne che riferiscono le relazioni
rappresentanti i tipi di entità partecipanti

32

Passo 7: esempio
33

In sintesi (1)
•  In uno schema relazionale i tipi di associazione non
sono rappresentati esplicitamente.
•  Sono rappresentati con l’uso di due attributi A e B uno
chiave primaria e l’altro chiave esterna (sullo stesso
dominio) inseriti in due relazioni S e T.
•  Due righe sono collegate quando hanno lo stesso
valore per A e B

•  Quando c’è un’associazione 1:1 o 1:N è di solito


necessaria una sola operazione di JOIN
•  Per un tipo di associazione M:N sono necessarie due
operazioni di JOIN per dare completamente corpo alle
istanze dell’associazione

34

In sintesi (2)
•  In uno schema relazionale viene costruita una
relazione separata per ogni attributo multivalore
•  Perché il modello relazionale non consente valori
multipli per un attributo di una singola tupla
35

Tabella riassuntiva

36

Passo 8: traduzione della specializzazione


Esistono diverse opzioni. Vediamo un esempio.
37

Passo 8: traduzione della specializzazione

38

Esercizio 1
Tradurre in schema relazionale
39

Esercizio 2
Tradurre in
schema
relazionale

40

Esercizio 3
Tradurre in schema relazionale
41

Esercizio 4
Tradurre in schema relazionale

42

Esercizio 5
Tradurre in schema ER
43

Esercizio 5 - soluzione