Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in...

55
Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB

Transcript of Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in...

Page 1: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Progettazione di basi di dati distribuite

Marco MangiacavalliMatricola: 779291

I miei commenti in rosso CB

Page 2: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Schema della metodologia MSproposta nel corso

Operazione

Nodo

FrammentoFrammentoelementare

0. presso il

1. Visitato presso il

1. Contri-buisce a

2. alloc. non rid.

3. alloc. rid.

4. Schemi locali

Schema locale

Page 3: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

3

Caso di studio: sistema di prenotazione aerea

• Una compagnia aerea deve gestire le prenotazioni dei suoi aerei. La base dati è distribuita su tre siti degli Stati Uniti, ad es.– Denver con codice 1, localizzato nell’area ovest– New York, codice 2, localizzato nell’area nord– Atlanta, codice 3, localizzato nell’ area sud

• La base dati rappresenta gli aeroporti dove opera, gli orari dei voli, le disponibilità, e le prenotazioni.

• Ogni volo, per semplicità, è tra un aeroporto di partenza e un aeroporto di arrivo.

Page 4: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Struttura generale

Rete

3. Sud = Atlanta

1. Ovest = Denver

2. Nord = New York

Page 5: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Passi da eseguire1) Tradurre lo schema globale di pag. 19 della dispensa ME in uno

schema globale relazionale, producendo anche per ogni relazione nel modello relazionale il numero di istanze.

2) Esprimere il carico applicativo nella modalità semplificata della metodologia MS.

3) Condurre la progettazione adottando la metodologia MS.3.1) Progetto della frammentazione3.2) Allocazione non ridondante3.3) Allocazione ridondante3.4) Ricostruzione degli schemi locali

4) Tradurre gli schemi locali Entità Relazione esito del passo 3 nel modello relazionale.

5) Nella ipotesi che le due metodologie arrivino a schemi relazionali diversi, cercare di ragionare sul perchè

Page 6: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

1) Traduzione schema globale ER in Relazionale

Page 7: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

7

Schema globale ERVolo

NumeroDataGateRitardoMappa postiPosti disponibili

AeroportoIdentificatore (Acronimo)Citta’Area

Da

A

PasseggeroNome Telefono

Prenotaz.

Check in

Numero postoCod. Bagaglio

Classe

Ora partenza

Ora arrivo

Pas

Aer

Volo

Page 8: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Schema globale relazionale

• Aer(idA, città, area) -> 40 istanze

• Volo(numV, dataV, gate, rit, mP, pDisp, idAP, oraP, idAA, oraA) -> 20.000 istanze

• Pas(noP, tel, numV, dataV, classe, numPo, codB) -> 1.000.000 istanze

Nomi poco espressivi…..

Si assume che un passeggero possa prenotare e fare check in per un solo volo

Page 9: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Schema globale relazionale: note

• Nello schema ho evidenziato in grassetto gli attributi che sono chiave primaria della relazione e in corsivo le chiavi esterne

• Nella traduzione ME->MS ho cercato di mantenere lo stesso numero di entità presenti nelle specifiche del caso ME, quindi ho ottenuto 3 relazioni; un’altra alternativa poteva essere quella di creare altre 2 relazioni “Prenotazione” e “Check-in”

• Ho assunto che ogni passeggero può fare il check-in solo se ha prenotato quel determinato volo

I congiuntivi!Bello!!!

Page 10: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

2) Carico applicativo semplificato

Page 11: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

11

Qui avrei inserito la tavola delle frequenze per operazioni presso i siti

Siti /Operazioni 1 2 3

a 10.000 20.000 10.000

b 8.000 12.000 8.000

c 100 120 100

Page 12: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

12

Operazionivisione per «operazioni»

• a. Prenota passeggero, effettua una prenotazione, transazione

• b. Check in passeggero, effettua il check in di un passeggero quando arriva all’aeroporto, transazione

• c. Partenze dei prossimi trenta voli, fornisce una report dei prossimi 30 voli che partono da un aeroporto, interrogazione

Page 13: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Operazione a: attributi utilizzati• Input: Pas = noP, tel; Volo = dataV, idAP, oraP, idAA,

oraA• Letti: Volo = numV, dataV, pDisp• Scritti: Volo = pDisp; Pas = classe, numV, dataV

• Dico nome e tel del passeggero che vuole prenotare il volo + data, ora di part/ar e aeroporto part/ar; verranno letti num e data del volo e, se ci sono abbastanza posti disponibili, allora aggiornerà il campo e assegnerà il volo al passeggero scrivendone anche la classe

Nella visione “pre web” e’ l’operatore che invoca la transazione E quindi sa gia’ il codice dell’aeroporto, e non coinvolge la tabella aeroportoRisparmiando un join.

Page 14: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Operazione b : attributi utilizzati

• Input: Pas = noP, tel; Volo = numV, data• Letti: Volo = mP; Pas = classe• Scritti: Volo = mP; Pas = numPo, codB

• Dico nome e tel del passeggero che deve fare il check-in + num e data del volo da lui prenotato; verranno letti la classe del passeggero e la mappa dei posti e, in base a questi, gli verrà assegnato un posto e un codice del bagaglio

Page 15: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Operazione c: attributi utilizzati

• Input: Volo = dataV, idAP, oraP• Letti: Volo = numV, dataV, gate, rit, oraP; Pas =

noP, tel, numV, dataV, classe

• Dico data, ora e aeroporto di cui voglio il report; in output avrò numero, data, gate, ritardo e ora di partenza dei prossimi 30 voli + nome, tel e classe dei passeggieri che hanno prenotato quel volo + città e area dell’aeroporto di partenza

Page 16: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Carico applicativoNodo Operazione Fraquenza

1 T1a. Pas prenota volo che parte da aer area 1 10000

1 T1b. Check-in pas in aer area 1 8000

1 Q1c. Report prossimi 30 voli che partono da aer area 1 100

2 T2a. Pas prenota volo che parte da aer area 2 20000

2 T2b. Check-in pas in aer area 2 12000

2 Q2c. Report prossimi 30 voli che partono da aer area 2 120

3 T3a. Pas prenota volo che parte da aer area 3 10000

3 T3b. Check-in pass in aer area 3 8000

3 Q3c. Report prossimi 30 voli che partono da aer area 3 100

I punti . Per separare le migliaia…….

Page 17: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

3) Progettazione

Page 18: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

3.1) Progetto della frammentazione

Page 19: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Progetto della frammentazione

• Scopo del passo è quello di individuare i frammenti elemnetari da allocare in seguito nei diversi nodi della base di dati distribuita

Page 20: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Individuazione frammenti visitati da Q e T: T1a

• AerArea1 = aeroporti area 1• VoliDaAerArea1 = voli che partono da aeroporto area

1• Pas = tutti passeggeri possono prenotare un volo

PasVoliDaAerArea1AerArea1 ??

Page 21: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Individuazione frammenti visitati da Q e T: T1a

• AerArea1 = POP + PV(idA, area)

• VoliDaAerArea1 = POS + PV(numV, dataV, pDisp, idAP, oraP, idAA, oraA)

• Pas = PV(noP, tel, numV, dataV, classe)

Page 22: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Individuazione frammenti visitati da Q e T: T1b

• AerArea1 = aeroporti area 1• VoliDaAerArea1 = voli che partono da aeroporto area

1• PasDaAerArea1 = passeggeri che partono da

aeroporto area 1

PasDaAerArea1VoliDaAerArea1AerArea1

Page 23: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Individuazione frammenti visitati da Q e T: T1b

• AerArea1 = POP + PV(idA, area)

• VoliDaAerArea1 = POS + PV(numV, dataV, mP, idAP, oraP)

• PasDaAerArea1 = POS

Page 24: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Individuazione frammenti visitati da Q e T: Q1c

• AerArea1 = aeroporti area 1• VoliDaAerArea1 = voli che partono da aeroporto area

1• PasDaAerArea1 = passeggeri che partono da

aeroporto area 1

PasDaAerArea1VoliDaAerArea1AerArea1

Nei requisiti si parlava solo dei voli, non dei passeggeri …

Page 25: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Individuazione frammenti visitati da Q e T: Q1c

• AerArea1 = POP

• VoliDaAerArea1 = POS + PV(numV, dataV, gate, rit, idAP, oraP)

• PasDaAerArea1 = POS + PV(noP, tel, numV, dataV, classe)

Page 26: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Individuazione frammenti visitati da Q e T: T2a

• AerArea2 = aeroporti area 2• VoliDaAerArea2 = voli che partono da aeroporto area

2• Pas = tutti passeggeri possono prenotare un volo

PasVoliDaAerArea2AerArea2

Page 27: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Individuazione frammenti visitati da Q e T: T2a

• AerArea2 = POP + PV(idA, area)

• VoliDaAerArea2 = POS + PV(numV, dataV, pDisp, idAP, oraP, idAA, oraA)

• Pas = PV(noP, tel, numV, dataV, classe)

Page 28: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Individuazione frammenti visitati da Q e T: T2b

• AerArea2 = aeroporti area 2• VoliDaAerArea1 = voli che partono da aeroporto area

2• PasDaAerArea2 = passeggeri che partono da

aeroporto area 2

PasDaAerArea2VoliDaAerArea2AerArea2

Page 29: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Individuazione frammenti visitati da Q e T: T2b

• AerArea2 = POP + PV(idA, area)

• VoliDaAerArea2 = POS + PV(numV, dataV, mP, idAP, oraP)

• PasDaAerArea2 = POS

Page 30: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Individuazione frammenti visitati da Q e T: Q2c

• AerArea2 = aeroporti area 2• VoliDaAerArea2 = voli che partono da aeroporto area

2• PasDaAerArea2 = passeggeri che partono da

aeroporto area 2

PasDaAerArea2VoliDaAerArea2AerArea2

Perche’ anche passeggeri? Si chiedeva solo dei voli…

Page 31: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Individuazione frammenti visitati da Q e T: Q2c

• AerArea2 = POP

• VoliDaAerArea2 = POS + PV(numV, dataV, gate, rit, idAP, oraP)

• PasDaAerArea2 = POS + PV(noP, tel, numV, dataV, classe)

Page 32: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Individuazione frammenti visitati da Q e T: T3a

• AerArea3 = aeroporti area 3• VoliDaAerArea3 = voli che partono da aeroporto area

3• Pas = tutti passeggeri possono prenotare un volo

PasVoliDaAerArea3AerArea3 ??

Page 33: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Individuazione frammenti visitati da Q e T: T3a

• AerArea3 = POP + PV(idA, area)

• VoliDaAerArea3 = POS + PV(numV, dataV, pDisp, idAP, oraP, idAA, oraA)

• Pas = PV(noP, tel, numV, dataV, classe)

Page 34: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Individuazione frammenti visitati da Q e T: T3b

• AerArea3 = aeroporti area 3• VoliDaAerArea3 = voli che partono da aeroporto area

3• PasDaAerArea3 = passeggeri che partono da

aeroporto area 3

PasDaAerArea3VoliDaAerArea3AerArea3

Page 35: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Individuazione frammenti visitati da Q e T: T3b

• AerArea3 = POP + PV(idA, area)

• VoliDaAerArea3 = POS + PV(numV, dataV, mP, idAP, oraP)

• PasDaAerArea3 = POS

Page 36: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Individuazione frammenti visitati da Q e T: Q3c

• AerArea3 = aeroporti area 3• VoliDaAerArea3 = voli che partono da aeroporto area

3• PasDaAerArea3 = passeggeri che partono da

aeroporto area 3

PasDaAerArea1VoliDaAerArea1AerArea1

Page 37: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Individuazione frammenti visitati da Q e T: Q3c

• AerArea3 = POP

• VoliDaAerArea3 = POS + PV(numV, dataV, gate, rit, idAP, oraP)

• PasDaAerArea3 = POS + PV(noP, tel, numV, dataV, classe)

Page 38: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Tabella frammenti elementarivisione per operazioni & frammenti

Nodo Op./Freq Tipo fram Rel coinvolte Fram coinvolti

1 T1a/10000 OP + OS + V Aer, Volo, Pas AerArea1, VoliDaAerArea1, Pas

1 T1b/8000 OP + OS + V Aer, Volo, Pas AerArea1, VoliDaAerArea1, PasDaAerArea1

1 Q1c/100 OP + OS + V Aer, Volo, Pas AerArea1, VoliDaAerArea1, PasDaAerArea1

2 T2a/20000 OP + OS + V Aer, Volo, Pas AerArea2, VoliDaAerArea2, Pas

2 T2b/12000 OP + OS + V Aer, Volo, Pas AerArea2, VoliDaAerArea2, PasDaAerArea2

2 Q2c/120 OP + OS + V Aer, Volo, Pas AerArea2, VoliDaAerArea2, PasDaAerArea2

3 T3a/10000 OP + OS + V Aer, Volo, Pas AerArea3, VoliDaAerArea3, Pas

3 T3b/8000 OP + OS + V Aer, Volo, Pas AerArea3, VoliDaAerArea3, PasDaAerArea3

3 Q3c/100 OP + OS + V Aer, Volo, Pas AerArea3, VoliDaAerArea3, PasDaAerArea3

Frammentazioni un po’ ridondanti!

Page 39: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Frammenti individuati

1. AerArea12. VoliDaAerArea13. PasDaAerArea14. AerArea15. VoliDaAerArea16. PasDaAerArea17. AerArea18. VoliDaAerArea19. PasDaAerArea1

Non c’e’ P “intera” corretto!

Page 40: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

3.2) Allocazione non ridondante

Page 41: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Allocazione non ridondante

• Lo scopo di questa fase è associare ad ogni nodo i frammenti in modo non ridondante, basandomi sul carico applicativo

• I frammenti elementari individuati dovranno essere assegnati al nodo che lo utilizza più spesso

• In questo mono verranno minimizzati i trasferimenti tra nodi dovuti a interrogazioni o transazioni

Page 42: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Assegnazione frammenti ai nodiqui la «visione» e’ per frammenti

Fr Op Nodi FN1 FN2 FN3 As

AerArea1 T1a, T1b, Q1c 1 18100 - - 1

VoliDaAerArea1 T1a, T1b, Q1c 1 18100 - - 1

PasDaAerArea1 T1a, T1b, Q1c, T2a, T3a 1, 2, 3 18100 20000 10000 2

AerArea2 T2a, T2b, Q2c 2 - 32120 - 2

VoliDaAerArea2 T2a, T2b, Q2c 2 - 32120 - 2

PasDaAerArea2 T2a, T2b, Q2c, T1a, T3a 1, 2, 3 10000 32120 10000 2

AerArea3 T3a, T3b, Q3c 3 - - 18100 3

VoliDaAerArea3 T3a, T3b, Q3c 3 - - 18100 3

PasDaAerArea3 T3a, T3b, Q3c, T1a, T2a 1, 2, 3 10000 20000 18100 2

Frequenze su passeggero dovute alla scelta precedente di permettere a tutti I passeggeri di fare prenotazioni da tutti e tre I nodi

NB scelta molto web oriented

Page 43: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Assegnazione frammenti ai nodi

Rete

3. Sud = Atlanta

1. Ovest = Denver

2. Nord = New York

AerArea1

VoliDaAerArea1

AerArea2

AerArea3

VoliDaAerArea2

VoliDaAerArea3

PasDaAerArea1

PasDaAerArea2

PasDaAerArea3

PasDaAerArea3

PasDaAerArea3

PasDaAerArea2

PasDaAerArea2

PasDaAerArea1

PasDaAerArea1

Riportati anche I potenziali daRidondare: bene!

Page 44: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

3.3) Allocazione ridondante

Page 45: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Allocazione ridondante

• Lo scopo di questo passo è di duplicare i frammenti, attualmente presenti in un solo nodo, anche in altri nodi

• La duplicazione va eseguita solo quando i risparmi superano i maggiori costi

• Seleziono il nodo i per cui è massima la differenza: risparmi(i) - costi(i)

Page 46: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Costi - benefici

• Frammenti che potrebbero essere allocati in modo ridondante: PasDaAerArea1, PasDaAerArea2, PasDaAerArea3 sui nodi 1 e 3

• Noto che le transazioni sono molte di più rispetto alle interrogazioni quindi si può dedurre che i costi di aggiornamento delle varie tabelle distribuite, se si decidesse di duplicare, sarebbero troppo elevati se si decidesse di duplicare i dati. Di conseguenza non conviene replicare i frammenti

Preferirei non dedurre ma calcolare……anche perche’ trasferire (Interrogazioni) costa di piu’ che aggiornare

Page 47: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Schema finale

Rete

3. Sud = Atlanta

1. Ovest = Denver

2. Nord = New York

AerArea1

VoliDaAerArea1

AerArea2

AerArea3

VoliDaAerArea2

VoliDaAerArea3

PasDaAerArea1

PasDaAerArea2

PasDaAerArea3

Page 48: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

3.4) Ricostruzione degli schemi locali

Page 49: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Ricostruzione degli schemi locali

• Come ultimo passo bisogna ricostruire gli schemi locali come unione di tutti i frammenti associati al corrispondente sito ottenuti nei passi precedenti

Page 50: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

50

VoliDaAerArea1

AerArea1

Prenotaz.

Check in

VoliDaAerArea1

AerArea2

Prenotaz.Check in

VoliDaAerArea3

AerArea3

Prenotaz.

Check in

Nodo1

Nodo 2

Nodo 3

PasDaAerArea1PasDaAerArea2PasDaAerArea3

Da A

Da A

Da A

A

A

A3

A3

Page 51: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Schema relazionale

• AerArea1(idA, città, area)• AerArea2(idA, città, area)• AerArea3(idA, città, area)• VoliDaAerArea1(numV, dataV, gate, rit, mP, pDisp,

idAP, oraP, idAA, oraA)• VoliDaAerArea2(numV, dataV, gate, rit, mP, pDisp,

idAP, oraP, idAA, oraA)• VoliDaAerArea3(numV, dataV, gate, rit, mP, pDisp,

idAP, oraP, idAA, oraA)• Pas(noP, tel, numV, dataV, classe, numPo, codB)

Page 52: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Risultato

• Nello schema ottenuto abbiamo che:1) Gli aeroporti sono allocati nei 3 nodi in base all’area in cui si

trovano2) I voli sono distribuiti in base all’area in cui si trova

l’aeroporto di partenza3) I passeggeri sono tutti allocati nel nodo di New York• I primi 2 punti rispettano il principio di località, mentre il terzo

no.• Con questa soluzione le operazioni dei nodi 1 e 3 sui

passeggeri risulteranno meno efficienti, ma se avessi scelto di duplicare la tabella Passeggeri anche negli altri 2 nodi avrei avuto notevoli problemi di allineamento dei dati

Page 53: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

4) Traduzione schemi locali ER nel modello relazionale

Page 54: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

54

Volo1

Aeroporto1

Prenotaz.Check in

Volo2

Aeroporto2

Prenotaz.Check in

Volo3

Aeroporto3

Prenotaz.Check in

Sito 1

Sito 2

Sito 3

Passeggero 1uPasseggero 4uPasseggero 5uPasseggero 7

Passeggero 2uPasseggero 4uPasseggero 6uPasseggero 7

Da A

Da A

Da A

Passeggero 3uPasseggero 5uPasseggero 6uPasseggero 7

A

A

A3

A3

Page 55: Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Schema relazionale• Aeroporto1(idA, città, area)• Aeroporto2(idA, città, area)• Aeroporto3(idA, città, area)• Volo1(numV, dataV, gate, rit, mP, pDisp, idAP, oraP, idAA, oraA)• Volo2(numV, dataV, gate, rit, mP, pDisp, idAP, oraP, idAA, oraA)• Volo3(numV, dataV, gate, rit, mP, pDisp, idAP, oraP, idAA, oraA)• Passeggero1(noP, tel, numV, dataV, classe, numPo, codB)• Passeggero2(noP, tel, numV, dataV, classe, numPo, codB)• Passeggero3(noP, tel, numV, dataV, classe, numPo, codB)• Passeggero4(noP, tel, numV, dataV, classe, numPo, codB)• Passeggero5(noP, tel, numV, dataV, classe, numPo, codB)• Passeggero6(noP, tel, numV, dataV, classe, numPo, codB)• Passeggero7(noP, tel, numV, dataV, classe, numPo, codB)