0.1. PROVA SCRITTA SI20020711
0.1
1
Prova Scritta SI20020711
Esercizio 2
Tradurre il seguente schema in schema relazionale in terza forma normale.
Nota : Per lo svolgimento di questo punto, la traduzione si può effettuare applicando per le associazioni le regole di traduzione date:
1. traduzione standard, sempre applicabile
2. Altre traduzioni non standard, applicabili quando in un’associazione R vi sono entità Ei che
partecipano con molteplicità unitaria: max-card(Ei, R) = 1.
Applicando le regole date (traduzione standard, altre traduzioni non standard) lo schema relazionale
ottenuto è sempre in terza forma normale!
Dato uno schema E/R, nella sua traduzione si possono tradurre alcune associazioni con la traduzione
standard ed altre con traduzioni non standard.
Alcune volte nel compito è richiesto esplicitamente di tradurre un’associazione con un certo tipo di
traduzione. Ad esempio: Inglobare R3 ed R4 in E4.
Utilizzando la traduzione standard: . . . nella traduzione delle associazioni ricordarsi di mettere le
foreign key not null e le eventuali AK . . .
Nota : Nella traduzione standard devo introdurre una relazione per ciascuna associazione, ad eccezione delle associazioni relative a componenti di identificatori esterni: infatti (vedi pagina 3 delle
dispense sul sito “Eliminazione Identificatori Esterni”) tale associazione è automaticamente semplificata e tradotta grazie alla introduzione della foreign key.
Si noti inoltre che normalmente nelle associazioni relative a componenti di identificatori esterni non
vengono riportati attributi: infatti un attributo su tale associazione può essere rappresentato (e viene
normalmente rappresentato) in forma equivalente come attributo sull’entità identificata esternamente:
A1
B
A2
E1
A
(1,N)
(1,1)
E2
B1
B2
C2(1,N)
C1
è equivalente a
A1
B
A2
E1
(1,N)
A
(1,1)
E2
C1
B1
B2
C2(1,N)
2
Altre traduzioni non standard
Nota : Applicando le regole date per queste altre traduzioni, lo schema relazionale ottenuto è sempre
in terza forma normale!
1) Inglobare R3 ed R4 in E4 ; in questo modo non devo più introdurre le relazioni R3 ed R4.
E3(K3,A3) (invariata rispetto alla traduzione standard)
E4(K4,A4, K3, AR2, K4-RUOLO2)
AK: K3
AK: K4-RUOLO2
FK: K3 REFERENCES E3 NOT NULL
FK: K4-RUOLO2 REFERENCES E4
Si noti che nella traduzione di R3 si poteva usare anche, indifferentemente, K4-RUOLO1:
E4(K4,A4, K3, AR2, K4-RUOLO1)
AK: K3
AK: K4-RUOLO1
FK: K3 REFERENCES E3 NOT NULL
FK: K4-RUOLO1 REFERENCES E4
L’unico punto particolare di tale trasformazione è la traduzione dell’attributo multiplo ARM: come già
fatto per la traduzione standard, prima di tradurre l’attributo multiplo devo reificare R3 e quindi introdurre una relazione AMR in cui metto come chiave l’insieme AMR + ChiaveDiR3. Però adesso
non c’è una relazione R3 perchè è in E4: cosa mettere in AMR come ChiaveDiR3? La risposta è la
chiave di E4 in quanto R3 è adesso inglobata in E4. Avremo quindi:
AMR(AMR,K4)
FK: K4 REFERENCES E4
0.1. PROVA SCRITTA SI20020711
3
Per meglio evidenziare questa soluzione facciamo riferimento ad un caso reale invece che simbolico,
considerando le seguenti corrispondenze:
E3 = STUDENTE
K3 = MATR
A3 = NOME
R2 = RILASCIO
AR2 = DATA
E4 = LIBRETTO
K4 = CODLIB
A4 = TIPO
R3 = SOSTITUZIONE
RUOLO1 = SOSTITUTO
RUOLO2 = SOSTIUITO
AMR = MOTIVI
Si ottiene
STUDENTE(MATR,NOME) (invariata)
LIBRETTO(CODLIB,TIPO, MATR, DATA, CODLIB-SOSTIUITO)
AK: MATR
AK: CODLIB-SOSTIUITO
FK: MATR REFERENCES STUDENTE NOT NULL
FK: CODLIB-SOSTIUITO REFERENCES LIBRETTO
MOTIVI(MOTIVI,K4)
FK: CODLIB REFERENCES LIBRETTO
Si noti che nella traduzione di R3 = SOSTITUZIONE si poteva usare anche, indifferentemente,
K4-RUOLO1 = SOSTITUTO:
LIBRETTO(CODLIB,TIPO, MATR, DATA, CODLIB-SOSTITUTO)
AK: MATR
AK: CODLIB-SOSTITUTO
FK: MATR REFERENCES STUDENTE NOT NULL
FK: CODLIB-SOSTITUTO REFERENCES LIBRETTO
4
2) Considerare R1 ternaria con anche E2 e con card(E2, R1) = (0, 1) ed inglobare R1 in E12
Per le associazioni ternarie (ed n-arie in generale) è stato detto che si applica la traduzione standard e
quindi si introduce una relazione R1 . . .
In questo caso si chiede di inglobare/compattare R1 in E12: è possibile? La risposta è positiva in
quanto si può estendere la regola “Traduzione con due relazioni” data per le associazioni binarie unoa-uno e uno-a-molti ed ottenere :
un’associazione n-aria R tra E1, E2, . . . , En può essere compattata in una delle entità Ei
che partecipa con molteplicità unitaria
(cioè max-card(Ei, R) = 1) includendo in Ei gli attributi di R e le chiavi primarie di tutte
le altre entità come foreign key; tali foreign key saranno vincolate ad essere NOT NULL
se e sole se min-card(Ei, R) = 1.
Inoltre ogni chiave primaria di Ej 6= Ei tale che Ej che partecipa con molteplicità unitaria
(cioè max-card(Ej, R) = 1) sarà chiave alternativa.
Tale regola può essere derivata anche sulla base della reificazione dell’associazione R.
Si noti che nel caso di n = 2 si riottengono le regole viste per le associazioni binarie uno-a-uno e
uno-a-molti.
Applichiamola al caso di R1 : inglobare R1 in E12.
E2(K1-E11,A2) (invariata rispetto alla traduzione standard)
FK: K1-E11 REFERENCES E11
E3(K3,A3) (invariata rispetto alla traduzione standard)
E12(K1-E12, AE1, K3, K1-E11,A2, AR2)
FK: K1-E12 REFERENCES E1
AK: K1-E11,A2
FK: K3 REFERENCES E3 NOT NULL
FK: K1-E11,A2 REFERENCES E2 NOT NULL
Si noti che min-card(E12, R1) = 1 per le foreign key relative alle altre entità (E3 e E2) devo mettere
NOT NULL
3) Considerare R1 ternaria ed inglobare R1 in E2. Rispetto a prima, si noti che adesso abbiamo
min-card(E2, R1) = 0 quindi per le foreign key relative alle altre entità (E3 e E12) non devo mettere
NOT NULL
E12(K1-E12,AE1) (invariata rispetto alla traduzione standard)
FK: K1-E12 REFERENCES E1
E3(K3,A3) (invariata rispetto alla traduzione standard)
E2(K1-E11,A2, K3, K1-E12, AR2)
FK: K1-E11 REFERENCES E11
AK: K1-E12
FK: K3 REFERENCES E3
FK: K1-E12 REFERENCES E12
0.1. PROVA SCRITTA SI20020711
E1(K1-E1,A1)
E11(K1-E11)
FK: K1-E11 REFERENCES E1
E12(K1-E12,AE1,K7)
AK: K7 NOT NULL
FK: K1-E12 REFERENCES E1
E2(K1-E2,A21,A22)
FK: K1-E2 REFERENCES E11
R1(K1-E2,A21,A22,K1-E12)
FK: K1-E2,A21,A22 REFERENCES E2
FK: K1-E12 REFERENCES E12 NOT NULL
AMR1(K1-E2,A21,A22,AMR1)
FK: K1-E2,A21,A22 REFERENCES R1
E3(K3,A3)
R4(K1-E2,A21,A22,K3,AR2)
FK: K1-E2,A21,A22 REFERENCES E2
FK: K3 REFERENCES E3 NOT NULL
R2(K4,K3,AR2)
AK: K3 NOT NULL
FK: K4 REFERENCES E4
FK: K3 REFERENCES E3
R3(K4-RUOLO2,K4-RUOLO1, K1,AR3)
AK: K4-RUOLO1 NOT NULL
FK: K4-RUOLO1 REFERENCES E4
FK: K4-RUOLO2 REFERENCES E4
FK: K1 REFERENCES E1 NOT NULL
5
6
Esercizio 1
Prima di discutere la soluzione osserviamo il Viaggio Aereo può essere considerato
come una occorrenza, come un’istanza di un Volo in un determinato tempo, cioè in
una determinata data. Lo schema di Volo e Viagio Areo sarà quindi comune a tutti
quei casi dove appunto vogliamo rappresentare un certo tipo di evento ed il verificarsi
di tale evento in un certo tempo ,,,
A1
TEMPO
A2
E1
(1,N)
HA
(1,1)
E2
B1
B2
Insegnamenti Universitari :
E1 = Insegnamento,
con A1=Nome e A2=Crediti
E2 = InsegnamentoAttivo,
con TEMPO= AnnoAccademico, B1=NomeDocente e B2=Trimestre
Voli e Viaggi aerei :
E1 = Volo,
con A1=CittaPartenza e A2=CittaArrivo
E2 = Viaggi,
con TEMPO= Data, B1=NumeroPasseggeri e B2=CodiceVelivolo
Manifestazioni Canore :
E1 = Manifestazione,
con A1=Nome e A2=Tipo
E2 = Edizione,
con TEMPO= Anno, B1=Presentatore e B2=DataInizio
Gare Ciclistiche :
E1 = GaraCiclistica,
con A1=Nome e A2=AnnoPrimaEdizione
E2 = Edizione,
con TEMPO= Anno, B1=NumeroPartecipanti e B2=DataInizio
da fare
Scarica

0.1 Prova Scritta SI20020711