48
Tesina SIS Tesina SIS Antonello Scarano Antonello Scarano Luigi Tullio Luigi Tullio

Tesina SIS

  • Upload
    darby

  • View
    72

  • Download
    0

Embed Size (px)

DESCRIPTION

Tesina SIS. Antonello Scarano Luigi Tullio. Compito Assegnato. Svolgere sei compiti d’esame di basi di dati in modo autonomo. Progettare lo schema globale insieme. Svolgere il lavoro di integrazione dei dati. Presentare il lavoro svolto ed eventuali osservazioni. Prime Osservazioni. - PowerPoint PPT Presentation

Citation preview

Page 1: Tesina SIS

Tesina SISTesina SIS

Antonello ScaranoAntonello Scarano

Luigi TullioLuigi Tullio

Page 2: Tesina SIS

Compito AssegnatoCompito Assegnato

Svolgere sei compiti d’esame di basi Svolgere sei compiti d’esame di basi di dati in modo autonomo.di dati in modo autonomo.

Progettare lo schema globale Progettare lo schema globale insieme.insieme.

Svolgere il lavoro di integrazione dei Svolgere il lavoro di integrazione dei dati.dati.

Presentare il lavoro svolto ed Presentare il lavoro svolto ed eventuali osservazioni.eventuali osservazioni.

Page 3: Tesina SIS

Prime OsservazioniPrime Osservazioni

Specifiche troppo dettagliate.Specifiche troppo dettagliate. Schemi da integrare troppo simili.Schemi da integrare troppo simili. Modifiche alla traccia iniziale.Modifiche alla traccia iniziale.

Page 4: Tesina SIS

Mapping GAVMapping GAV

Global as ViewGlobal as View: lo schema globale è : lo schema globale è definito in termini di viste sugli definito in termini di viste sugli schemi sorgente (locali).schemi sorgente (locali).

Pregi e difettiPregi e difetti Quando una sorgente cambia è Quando una sorgente cambia è

necessario modificare il mapping o necessario modificare il mapping o ripensare lo schema globale ripensare lo schema globale

L’elaborazione delle query in genere L’elaborazione delle query in genere è molto semplice (unfolding)è molto semplice (unfolding)

Page 5: Tesina SIS

Mapping LAVMapping LAV

Local as ViewLocal as View: gli schemi locali sono definiti : gli schemi locali sono definiti in termini di viste sullo schema globale.in termini di viste sullo schema globale.

Pregi e difettiPregi e difetti Consentono un’alta modularità e riusabilità: Consentono un’alta modularità e riusabilità:

se cambia una sorgente è necessario se cambia una sorgente è necessario modificare solo la sua definizionemodificare solo la sua definizione

Facile estensibilità: aggiungere una Facile estensibilità: aggiungere una sorgente al sistema di integrazione consiste sorgente al sistema di integrazione consiste solo nel definire una nuova vistasolo nel definire una nuova vista

La valutazione delle query è difficile (è La valutazione delle query è difficile (è necessaria una riformulazione delle query a necessaria una riformulazione delle query a run-time)run-time)

Page 6: Tesina SIS

Separazione CompitiSeparazione Compiti

Diversificazione punti di vistaDiversificazione punti di vista Analisi e commenti indipendentiAnalisi e commenti indipendenti Redazione tesina come punto Redazione tesina come punto

d’incontro d’incontro

Page 7: Tesina SIS

Il mio compitoIl mio compito

Focalizzare l’attenzione su GAVFocalizzare l’attenzione su GAV Aspetto critico sul lavoro compiutoAspetto critico sul lavoro compiuto Carpire concetti e trarre conclusioniCarpire concetti e trarre conclusioni

Page 8: Tesina SIS

Esercizio 1Esercizio 1(schema globale)(schema globale)

Page 9: Tesina SIS

Esercizio 1Esercizio 1(Sorgente A)(Sorgente A)

Page 10: Tesina SIS

Esercizio 1Esercizio 1(sorgente B)(sorgente B)

Page 11: Tesina SIS

Problema!Problema!

Specifiche stringentiSpecifiche stringenti Schemi speculariSchemi speculari Nessuna rilevanza mappingNessuna rilevanza mapping GAV e LAV immediatiGAV e LAV immediati La realtà è diversa!!La realtà è diversa!!

Page 12: Tesina SIS

Mapping Mapping (banale!)(banale!)

[ Prototipo, [ Prototipo, Prototipo(X,Y,Z) :- PrototipoA(X,Y,Z)Prototipo(X,Y,Z) :- PrototipoA(X,Y,Z) Prototipo(X,Y,Z) :- PrototipoB(X,Y,Z) ]Prototipo(X,Y,Z) :- PrototipoB(X,Y,Z) ]

[Collaudo, [Collaudo, Collaudo(X,Y,Z,K) :- CollaudoA(X,Y,Z,K)Collaudo(X,Y,Z,K) :- CollaudoA(X,Y,Z,K) Collaudo(X,Y,Z,K) :- CollaudoB(X,Y,Z,K) ]Collaudo(X,Y,Z,K) :- CollaudoB(X,Y,Z,K) ] [Pista, [Pista, Pista (X,Y,Z,K,Q,W,H,J) :- Pista(X,Y,Z,K,Q,W,H,J)Pista (X,Y,Z,K,Q,W,H,J) :- Pista(X,Y,Z,K,Q,W,H,J) Pista (X,Y,Z,K,Q,W,H,J) :- Pista (X,Y,Z,K,Q,W,H,J) :-

Pista(X,Y,Z,K,Q,W,H,J) ]Pista(X,Y,Z,K,Q,W,H,J) ] [Banco, [Banco, Banco(X,Y,Z,K,Q) :- BancoA(X,Y,Z,K,Q)Banco(X,Y,Z,K,Q) :- BancoA(X,Y,Z,K,Q) Banco(X,Y,Z,K,Q) :- BancoB(X,Y,Z,K,Q) ]Banco(X,Y,Z,K,Q) :- BancoB(X,Y,Z,K,Q) ]………………

Page 13: Tesina SIS

Uno spuntoUno spunto

A partire dalla definizione dei A partire dalla definizione dei mapping sia GAV che LAV forse mapping sia GAV che LAV forse abbiamo l’opportunita di abbiamo l’opportunita di comprendere meglio quello che comprendere meglio quello che si nasconde dietro la struttura si nasconde dietro la struttura dei dati stessi.dei dati stessi.

Esempio troppo chiaro in questo Esempio troppo chiaro in questo caso con l’entità “Autorizzazione” caso con l’entità “Autorizzazione” della sorgente A.della sorgente A.

Page 14: Tesina SIS

Esercizio 2Esercizio 2(schema globale)(schema globale)

Page 15: Tesina SIS

Esercizio 2Esercizio 2(sorgente A)(sorgente A)

Page 16: Tesina SIS

Esercizio 2Esercizio 2(sorgente B)(sorgente B)

Page 17: Tesina SIS

Mapping GAVMapping GAV

Progettazione mirata (schema globale Progettazione mirata (schema globale dettagliato)dettagliato)

Come si comporta il mapping?Come si comporta il mapping? GAV immediatoGAV immediato Granularità non un problemaGranularità non un problema Difficoltà: dispersione Difficoltà: dispersione

dell’informazione o mancanzadell’informazione o mancanza

Page 18: Tesina SIS

Mapping GAV/2Mapping GAV/2 [Prenotazione, Prenotazione(X,Y) :- [Prenotazione, Prenotazione(X,Y) :-

PrenotazioneA(X,Y,Z,K)PrenotazioneA(X,Y,Z,K) Prenotazione(X,Y) :- PrenotazioneB(X,Y,Z,K) ]Prenotazione(X,Y) :- PrenotazioneB(X,Y,Z,K) ]

[Effettua, [Effettua, Effettua(X,Z,Y) :- PrenotazioneA(X,A,Y,Z)Effettua(X,Z,Y) :- PrenotazioneA(X,A,Y,Z) Effettua(X,Z,Y) :- PrenotazioneB(X,A,Y,Z)]Effettua(X,Z,Y) :- PrenotazioneB(X,A,Y,Z)] [Collettiva, [Collettiva, Collettiva(X,Z,Y,K) :- CollettivaA(X,Y,Z,K,A)Collettiva(X,Z,Y,K) :- CollettivaA(X,Y,Z,K,A) Collettiva(X,Z,Y,K) :- CollettivaB(X,Y,Z,K,A)]Collettiva(X,Z,Y,K) :- CollettivaB(X,Y,Z,K,A)] [Singola, [Singola, Singola(X) :- SingolaA(X,Y,Z,K,A,B)Singola(X) :- SingolaA(X,Y,Z,K,A,B) Singola(X) :- SingolaB(X,Y,Z,K,A,B)]Singola(X) :- SingolaB(X,Y,Z,K,A,B)]

………………

Page 19: Tesina SIS

Mapping LAVMapping LAV

[PrenotazioneA, [PrenotazioneA, PrenotazioneA(X,Y,Z,K) :- PrenotazioneA(X,Y,Z,K) :- Prenotazione(X,Y),Effettua(X,Z,K) ]Prenotazione(X,Y),Effettua(X,Z,K) ]

[CollettivaA, [CollettivaA, CollettivaA(X,Y,Z,K,A) :- CollettivaA(X,Y,Z,K,A) :- Collettiva(X,Z,Y,K),Quale(X,A) ]Collettiva(X,Z,Y,K),Quale(X,A) ]

[SingolaA, SingolaA(X,Y,Z,K,A,B) :- [SingolaA, SingolaA(X,Y,Z,K,A,B) :- PSP(K,Z,A,Y,X), PSP(K,Z,A,Y,X),

Per(X,B)] Per(X,B)]

………………

Page 20: Tesina SIS

Ossevazioni sul LAVOssevazioni sul LAV

Opposto al GAVOpposto al GAV Semplici join sui datiSemplici join sui dati Ancora: il problema è la dispersione Ancora: il problema è la dispersione

dei datidei dati

Page 21: Tesina SIS

GAV e LAV assiemeGAV e LAV assieme

Si intuisce che analizzando i mapping Si intuisce che analizzando i mapping possiamo ricavare informazioni su possiamo ricavare informazioni su quello che si sta cercando di quello che si sta cercando di mappare.mappare.

EsempioEsempio

““PostoAssegnato” non mappato in PostoAssegnato” non mappato in nessuno dei due schemi.nessuno dei due schemi.

Informazione spalmata su troppe Informazione spalmata su troppe tabelletabelle

Page 22: Tesina SIS

Illustrazione esercizio 3Illustrazione esercizio 3

Specifiche molto vaghe (solo alcune linee Specifiche molto vaghe (solo alcune linee guida)guida)

Risultato: basi dati differentiRisultato: basi dati differenti Attenzione sul GAVAttenzione sul GAV Schema globale molto dettagliato (contiene Schema globale molto dettagliato (contiene

tutte le informazione di entrambe le sorgenti)tutte le informazione di entrambe le sorgenti) Politica del reperimento “per forza” di tutti i Politica del reperimento “per forza” di tutti i

datidati Assunzione iniziale: inserimenti leciti delle Assunzione iniziale: inserimenti leciti delle

basibasi

Page 23: Tesina SIS

Esercizio 3Esercizio 3(schema globale)(schema globale)

Page 24: Tesina SIS

Esercizio 3Esercizio 3(sorgente A)(sorgente A)

Page 25: Tesina SIS

Esercizio 3Esercizio 3(sorgente B)(sorgente B)

Page 26: Tesina SIS

Il mapping GAVIl mapping GAV1. Mapping diretto. Oss: chiavi differenti!1. Mapping diretto. Oss: chiavi differenti! Partita(DataOra, Stadio, Città,SquadraA, SquadraB, CFArbitro)

GLOB Partita(DataOra, SquadraA, SquadraB, CFArbitro, Luogo, Citta)

SORG A

Partita(DataOra, Stadio, Città,SquadraA, SquadraB, NomeArbitro,

CognomeArbitro) SORG B

Possiamo reperire il CFArbitro anche per la Possiamo reperire il CFArbitro anche per la sorgente Bsorgente B

con meccanismo chiarito in seguitocon meccanismo chiarito in seguito

2. Entità coinvolte identiche2. Entità coinvolte identiche Squadra(X, Y, Z, A, B) :- SquadraA(X, Y, Z, A, B) Squadra(X, Y, Z, A, B) :- SquadraB(X, Y, Z, A, B)]

Page 27: Tesina SIS

Il mapping GAV/2Il mapping GAV/2

3. Ricerca attraverso query specifiche 3. Ricerca attraverso query specifiche dell’informazione sui gol marcati:dell’informazione sui gol marcati:

Risultato(DataOraPartita, StadioPartita, CittàPartita, NGolA, NGolB)GLOB

Partita(DataOra, SquadraA, SquadraB, Arbitro, Luogo, Citta) SORG A

Marcatura(DataOra, SquadraA, SquadraB, Minuto, CFGiocatore) SORG A

[NumeroGolA: F = Count(Marcatura(X, Y, Z, M, A), Partita(X, Y, Z, N, O, [NumeroGolA: F = Count(Marcatura(X, Y, Z, M, A), Partita(X, Y, Z, N, O, P),Giocatore(A, Y) )]P),Giocatore(A, Y) )]

[NumeroGolB: G = Count(Marcatura(X, Y, Z, M, A), [NumeroGolB: G = Count(Marcatura(X, Y, Z, M, A), Partita(X, Y, Z, N, O, Partita(X, Y, Z, N, O, P),Giocatore(A, Z))] P),Giocatore(A, Z))]

Il mapping con la sorgente B è immadiatoIl mapping con la sorgente B è immadiatoOss: le chiavi differenti non sono un problema; assunzione Oss: le chiavi differenti non sono un problema; assunzione

inserimenti leciti!!inserimenti leciti!!

Page 28: Tesina SIS

Il mapping GAV/3Il mapping GAV/3

4. Mapping immediato con la sorgente A4. Mapping immediato con la sorgente A Problema sorgente B:differenza Problema sorgente B:differenza

chiavi.Generazione di un valore fittizio univoco per chiavi.Generazione di un valore fittizio univoco per non perdere informazione.non perdere informazione.

Conseguenza: non stiamo inserendo l’informazione Conseguenza: non stiamo inserendo l’informazione reale desiderata, ma meglio che perdere dati.reale desiderata, ma meglio che perdere dati.

Persona(CF, Nome, Cognome, Età) GLOBGiocatore(NMaglia, NomeSquadra, Nome, Cognome, Ruolo, Eta)

SORG BArbitro(Nome, Cognome, Partite, Città) SORG B

Oss: i dati per popolare l’entità Persona del globale, le andiamo a Oss: i dati per popolare l’entità Persona del globale, le andiamo a reperire dalle tabelle Arbitro e Giocatore della sorgente B: è reperire dalle tabelle Arbitro e Giocatore della sorgente B: è chiaro che noi siamo a conoscenza del significato logico del chiaro che noi siamo a conoscenza del significato logico del contenuto delle tabelle. contenuto delle tabelle.

Page 29: Tesina SIS

Il mapping GAV/4Il mapping GAV/4

5. Vale anche qui il ragionamento fatto al punto 4. 5. Vale anche qui il ragionamento fatto al punto 4.

Chiaramente si riusano gli identificativi generati al Chiaramente si riusano gli identificativi generati al passaggio precedente.passaggio precedente.

Nel mapping con la sorgente A mancanza Nel mapping con la sorgente A mancanza informazione: ignorare inserimenti su quei campi, informazione: ignorare inserimenti su quei campi, oppure “sporcare” il GAV con un GLAV (forzando a oppure “sporcare” il GAV con un GLAV (forzando a NULL gli inserimenti sui dati mancanti)NULL gli inserimenti sui dati mancanti)

Giocatore(CF, NMaglia, Ruolo, NomeSquadra) GLOBGiocatore(CF, NomeSquadra) SORG AGiocatore(NMaglia, NomeSquadra, Nome, Cognome, Ruolo, Eta)

SORG B

Page 30: Tesina SIS

Il mapping GAV/5Il mapping GAV/56. 6. Stesso ragionamento utilizzato per i Stesso ragionamento utilizzato per i

punti 4e5.punti 4e5. Mapping diretto con la fonte AMapping diretto con la fonte A

Arbitro(X, Y) :- ArbitroB(A, C, Y, D)

7. 7. Mapping possibile solo sulla fonte A: Mapping possibile solo sulla fonte A: (differenza sostanziale dai punti (differenza sostanziale dai punti precedenti)precedenti)

Allenatore (X) :- AllenatoreA(X)

8. 8. Mapping direttoMapping diretto Stadio(X, Y) :- LuogoA(X, Y) Stadio(X, Y) :- CentroSportivoB(X, Y)]

Page 31: Tesina SIS

Il mapping GAV/6Il mapping GAV/69. Mapping diretto9. Mapping diretto Città(X) :- Città A(X)

Città(X) :- Città B(X)

10. Mapping su A con semplice join.10. Mapping su A con semplice join.

Mapping su B a patto di rispettare vincolo di chiave Mapping su B a patto di rispettare vincolo di chiave esterna suiesterna sui

codici auto-generati dal sistema.codici auto-generati dal sistema.

Marcatura(DataOraPartita, StadioPartita, CittàPartita, CFMarcatore,Minuto)GLOB

Partita(DataOra, SquadraA, SquadraB, Arbitro, Luogo, Città) SORG AMarcatura(DataOra, SquadraA, SquadraB, Minuto, CFGiocatore) SORG

AMarcatura(DataOraPartita, StadioPartita, CittàPartita,

NMagliaMarcatore, NomeSquadraMarcatore, Minuto) SORG B

Page 32: Tesina SIS

Il mapping LAVIl mapping LAV

1.1. Controllare se “Partita” ha un Controllare se “Partita” ha un “Risultato”“Risultato”

2.2. Partite “nonGiocate” come differenza tra Partite “nonGiocate” come differenza tra “Partite” e “Giocate”“Partite” e “Giocate”

3.3. Il campo “Allenatore” inteso come nome Il campo “Allenatore” inteso come nome e cognome dell’allentare. Sufficiente un e cognome dell’allentare. Sufficiente un join per reperire l’informazionejoin per reperire l’informazione

4.4. Perdita informazione (irreperibile Perdita informazione (irreperibile all’interno del globale)all’interno del globale)

Page 33: Tesina SIS

ConclusioniConclusioni GAV e LAV non sempre bastanoGAV e LAV non sempre bastano GAV “sfacciato”: globale come vista sulle sorgenti GAV “sfacciato”: globale come vista sulle sorgenti

(difficile)(difficile) LAV più “modesto”: sorgenti viste sul globaleLAV più “modesto”: sorgenti viste sul globale Buono strumento di analisiBuono strumento di analisi E’ necessario derivare le relazioni interschema tra E’ necessario derivare le relazioni interschema tra

le varie sorgenti (GAV).le varie sorgenti (GAV). Le relazioni interschema tra le sorgenti possono Le relazioni interschema tra le sorgenti possono

essere dedotte dai mapping (LAV).essere dedotte dai mapping (LAV). Impossibilità a volte di soluzione per alcuni Impossibilità a volte di soluzione per alcuni

problemiproblemi Analizzare bene la tecnica da usareAnalizzare bene la tecnica da usare Difficoltà di automatizzare: bisogna conoscere il Difficoltà di automatizzare: bisogna conoscere il

rapporto con la realtà di quanto si vuole manipolarerapporto con la realtà di quanto si vuole manipolare

Page 34: Tesina SIS

Presentazione Luigi Presentazione Luigi TullioTullio

DB 3 “Invenzioni”:DB 3 “Invenzioni”: Specifica dettagliata Specifica dettagliata Schemi Simili Schemi Simili Caso in cui si usa una chiave differenteCaso in cui si usa una chiave differente

DB 4 “Ordini”:DB 4 “Ordini”: Specifica dettagliata Specifica dettagliata Schemi Simili Schemi Simili Caso in cui una relazione viene ricostruita da Caso in cui una relazione viene ricostruita da

altrealtre DB 5 “Prenotazioni”:DB 5 “Prenotazioni”:

Specifiche generiche Specifiche generiche Schemi differenti Schemi differenti Schema globale con alcune informazioni più Schema globale con alcune informazioni più

dettagliate dettagliate Gav più complesso. Gav più complesso. Schema gobale con alcune informazioni Schema gobale con alcune informazioni

mancanti mancanti Lav più complesso Lav più complesso 4 casi di Gav e 4 casi di Lav4 casi di Gav e 4 casi di Lav

Page 35: Tesina SIS

DB 3 – “Invenzioni”DB 3 – “Invenzioni”Invenzione

Nazione

BrevettataIn

Ideata

Codice

PIL

Nome

(1,1)

(0,n)

Persona

(0,n)

Proponente

Ist.Scolastica

InvenzioneUtile

StudiatoIn

Sita

Vaglia

N.Brevetto

Cognome

CF

Nome

Finanziamento

(1,1)

(0,n)

(0,n)

Campo

Età

Sesso

Nome

Unicod(1,1)

(0,n)

(1,1)

(0,n)

(1,n)

Selezionata

(1,1)

(0,1)

(1,1)

Data

Invenzione

Nazione

DovePresenta

ChiPresenta

DataPres

Codice

PIL

Nome

(1,1)

(0,n)

Persona

(0,n)

Proponente

Ist.Scolastica

InvenzioneUtile

Diploma Riferita

ChiVaglia

N.Brevetto

Cognome

CF

Nome

Finanziamento

(1,1)

(0,n)

(0,n)

Campo

Età

Sesso

Nome

Cod.Univoco.IU(1,1)

(0,n)

(1,1)

(0,n)

(1,n)

Associata

(1,1)

(0,1)

(1,1)

Globale

Sorgente A

InvenzioneUtile(Unicod, NBrevetto, NomeNazione,

Finanziamento, CFVaglia, IstScolastico)

InvenzioneUtile(Cod.Univoco.IU, NBrevetto, NomeNazione, Finanziamento, CF, CodiceIstScolastico)

[InvenzioneUtile, InvenzioneUtile(X, Y, Z, K, A, B) :-

InvenzioneUtileA(X, Y, Z, K, A, B)

InvenzioneUtile(X, Y, Z, K, A, B) :- InvenzioneUtileB(X, Y, Z, K, A,

B) ]

GAVGAV

[InvenzioneUtile, InvenzioneUtile(X, Y, Z, K, A, B) :-

InvenzioneUtile(X, Y, Z, K, A, B) ]

LAVLAV

Page 36: Tesina SIS

DB 4 – “Ordini”DB 4 – “Ordini”Ordine

Prodotto

Ordinato

Effettuato

N.Tel

Data

Prezzo

CodiceIdentif.

(1,n)

(0,n)

Cliente

(1,n)

Associato

Consegna

NonProcess.

Usa

RedditoAnnuo

AnniDaCliente

DataNascita

IndirizzoConsegna

(1,1)

(0,n)

Data

Nome

Ora

(1,1)

(1,1)

(1,n)

Perc.Iva

(1,1)

Ora

Processato

Quantità

(0,1)

(1,1)

Durata

ServizioCorriere

NomeN.Tel

ISA-PO ISA-NO

(0,1) (0,1)

ConsegnaPer

(0,n)

(1,n)

Ordine

Prodotto

Ordinato

Effettuato

N.Tel

Data

Prezzo

CodiceIdentif.

(1,n)

(0,n)

Cliente

(1,n)

Associato

Consegna

NonProcess.

Usa

RedditoAnnuo

AnniDaCliente

DataNascita

IndirizzoConsegna

(1,1)

(0,n)

Data

Nome

Ora

(1,1)

(1,1)

(1,n)Perc.Iva

(1,1)

Ora

Processato

Quantità

(0,1)

(1,1)

Durata

ServizioCorriere

NomeN.Tel

ISA-POISA-NO

(0,1) (0,1)

Globale

Sorgente A

GAVGAV

ConsegnaPer(NomeC, DataNC, Data, Ora, NomeCorriere)

Cliente(Nome, DataNascita, Reddito, AnniDaCliente)Processato(DataOrd, OraOrd, NomeCli, DataNasCli, DataCon, OraCon, NomeCorr)

[ConsegnaPer, ConsegnaPer(Z, K, A, B, C) :-

ProcessatoA(X, Y, Z, K, A, B, C),OrdineA(X, Y, Z, K, D)

ConsegnaPer(X, Y, Z, K, A) :- PerB(X, Y, Z, K, A)]

Page 37: Tesina SIS

DB 5 – Differenze ADB 5 – Differenze A

Cliente NazionePerChi

DataNascita

(0,n)

Pacchetto

Navale

Luogo

Nome

Data

Cognome

Compagnia

Aerea

Con

Albergo

Città

Presente

Prenotazione

Contiene

Ferroviaria

Effettua

Sito

StazioneAereoportoPorto

Partenza

NavaleOpera

Sta

AereaOpera

Arrivo

Categoria Nome

(0,n)

(1,1)

(0,n)

Nome

(0,n)

(0,n)

Durata

(1,1)

Costo

DataOra

Codice

DataOraP DataOraA

(1,1)(1,n)

(1,1)

(1,1)(1,1)

Nome(1,1)

(0,n)(0,n)

Nome

(1,1)(0,n)

(0,n)

Tel

Nome

(0,n)

(1,n)

(1,n)

(1,n)

(1,n)(1,1)

ISA-P

(1,1)

(0,1)

ISA-A ISA-A ISA-A

(1,1) (1,1) (1,1)

(0,1)

(0,1)(0,1)

ISA-Po

(1,1)

ISA-Ae

(1,1)

ISA-St

(1,1)

(0,1) (0,1)(0,1)

Della

ClienteNazione

PerChi

DataNascita

(0,n)

Navale

Luogo

Nome Cognome

Compagnia

Aerea

Città

Presente

Biglietto

Ferroviaria

Effettua

Sito

Partenza

NavaleOpera

AereaOpera

Arrivo

(0,n)

Nome

(0,n)

(0,n)

Prezzo

Codice (1,1)(1,n)

(1,1)

(1,1)

Nome

(1,1)

(0,n)

Nome

(1,1)(0,n)

(0,n)

TelNome

(0,n)

(1,n)

(1,n)(1,1)

CF

Sconto

Viaggio

Con

(1,1)

Relativo

IdViaggio

DataOraPartenza

(0,N)

(1,1)

ISA- A ISA-F ISA-N

(1,1) (1,1) (1,1)

(0,1)(0,1)

(0,1)

Della

(0,n) (0,n)

Globale Sorgente A

Page 38: Tesina SIS

ClientePerChi

DataNascita

(0,n)

Pacchetto

PreAerea

Nome

Data

Cognome

PreNavale

Albergo

Città

Prenotazione

Contiene

PreFerroviaria

Effettua

Stazione AereoportoPorto

Sta

Categoria Nome

(0,n)(1,1)

(0,n)Durata

(1,1)

Prezzo

DataOra

CodiceCompagnia

(1,1)

Nome Nazione

ParP ArrP ParS ArrS ParA ArrA

StaP StaS StaA

(1,1) (1,1) (1,1)

(1,1)

(1,1)(1,1)

(0,n)

(0,n) (0,n)

(0,n)

(0,n)

(0,n)

(1,1) (1,1) (1,1)

(0,n)(0,n)

(0,n)

(0,n)

Nome Nome Nome

DataOraP DataOraA

DataOraP

DataOraA

DataOraP

DataOraA

ISA-PNISA-PF

ISA-PA

(1,1) (1,1)(1,1)

(0,1)(0,1)(0,1)

ISA-PP(0,1)

(1,1)

(1,n)

DB 5 – Differenze BDB 5 – Differenze B

Cliente NazionePerChi

DataNascita

(0,n)

Pacchetto

Navale

Luogo

Nome

Data

Cognome

Compagnia

Aerea

Con

Albergo

Città

Presente

Prenotazione

Contiene

Ferroviaria

Effettua

Sito

StazioneAereoportoPorto

Partenza

NavaleOpera

Sta

AereaOpera

Arrivo

Categoria Nome

(0,n)

(1,1)

(0,n)

Nome

(0,n)

(0,n)

Durata

(1,1)

Costo

DataOra

Codice

DataOraP DataOraA

(1,1)(1,n)

(1,1)

(1,1)(1,1)

Nome(1,1)

(0,n)(0,n)

Nome

(1,1)(0,n)

(0,n)

Tel

Nome

(0,n)

(1,n)

(1,n)

(1,n)

(1,n)(1,1)

ISA-P

(1,1)

(0,1)

ISA-A ISA-A ISA-A

(1,1) (1,1) (1,1)

(0,1)

(0,1)(0,1)

ISA-Po

(1,1)

ISA-Ae

(1,1)

ISA-St

(1,1)

(0,1) (0,1)(0,1)

Della

Globale Sorgente B

Page 39: Tesina SIS

GAV – 1GAV – 1Informazione Mancante + Chiave DiversaInformazione Mancante + Chiave Diversa

Globale: Globale: Cliente(Cliente(Nome, Cognome, DataNascitaNome, Cognome, DataNascita, Tel), Tel)Sorgente A:Sorgente A: Cliente(Nome, Cognome, DataNascita, Cliente(Nome, Cognome, DataNascita, CFCF))Sorgente B:Sorgente B: Cliente(Cliente(Nome, Cognome, DataNascitaNome, Cognome, DataNascita, Tel), Tel)

[Cliente, [Cliente, Cliente(X, Y, Z, NULL) :- ClienteA(X, Y, Z, A),Cliente(X, Y, Z, NULL) :- ClienteA(X, Y, Z, A),Cliente(X, Y, Z, K) :- ClienteB(X, Y, Z, K)Cliente(X, Y, Z, K) :- ClienteB(X, Y, Z, K) ] ]

Il NULL sul campo “Tel” è stato necessario perchè nella sorgente A Il NULL sul campo “Tel” è stato necessario perchè nella sorgente A questa informazione non è presente.questa informazione non è presente.

I vincoli di chiave sul globale vengono rispettati dai dati della I vincoli di chiave sul globale vengono rispettati dai dati della sorgente B dato che fa uso della stessa chiave, per quelli sorgente B dato che fa uso della stessa chiave, per quelli provenienti dalla sorgene A teoricamente non è garantati che gli provenienti dalla sorgene A teoricamente non è garantati che gli elementi abbiano i campi nome, cognome e data di nascita elementi abbiano i campi nome, cognome e data di nascita univoci. univoci.

Page 40: Tesina SIS

GAV – 2aGAV – 2aInformazione su più relazioniInformazione su più relazioni

GlobaleGlobalePrenotazione(Prenotazione(CodiceCodice, DataOraPrenotazione, DataOraPartenza, DataOraArrivo, Costo, NomeLuogoPartenza, , DataOraPrenotazione, DataOraPartenza, DataOraArrivo, Costo, NomeLuogoPartenza,

CittàPartenza, NomeLuogoArrivo, CittàArrivo, NomeCompagnia, NomeChiCompra, CognomeChiCompra, CittàPartenza, NomeLuogoArrivo, CittàArrivo, NomeCompagnia, NomeChiCompra, CognomeChiCompra, DataNascitaChiCompra)DataNascitaChiCompra)

Sorgente ASorgente ACliente(Nome, Cognome, DataNascita, Cliente(Nome, Cognome, DataNascita, CFCF))Biglietto(Biglietto(CodiceCodice, Prezzo, Sconto, CFChiCompra, IdViaggio), Prezzo, Sconto, CFChiCompra, IdViaggio)Viaggio(Viaggio(IdViaggioIdViaggio, NomeLuogoPartenza, NomeCittàPartenza, NomeLuogoDestinazione, NomeCittàDestinazione, , NomeLuogoPartenza, NomeCittàPartenza, NomeLuogoDestinazione, NomeCittàDestinazione,

NomeCompagnia, DataOraPartenza)NomeCompagnia, DataOraPartenza)

[Prenotazione, [Prenotazione, Prenotazione(A, NULL, B, NULL, E, F, G, H, I, L, M, N, O) :- Prenotazione(A, NULL, B, NULL, E, F, G, H, I, L, M, N, O) :-

BigliettoA(A, E, Y, CF, D), ClienteA(M, N, O, CF), ViaggioA(D, F, G, H, I, L, B)BigliettoA(A, E, Y, CF, D), ClienteA(M, N, O, CF), ViaggioA(D, F, G, H, I, L, B)

Prenotazione(A, B, C, D, E, F, G, H, I, L, M, N, O) :- PrenotazioneB(A, B, L, E, M, N, O), PreAereaB(A, Prenotazione(A, B, C, D, E, F, G, H, I, L, M, N, O) :- PrenotazioneB(A, B, L, E, M, N, O), PreAereaB(A, C, F, G, D, H, I)C, F, G, D, H, I)

Prenotazione(A, B, C, D, E, F, G, H, I, L, M, N,O) :- PrenotazioneB(A, B, L, E, M, N, O), PreNavaleB(A, Prenotazione(A, B, C, D, E, F, G, H, I, L, M, N,O) :- PrenotazioneB(A, B, L, E, M, N, O), PreNavaleB(A, C, F, G, D, H, I)C, F, G, D, H, I)

Prenotazione(A, B, C, D, E, F, G, H, I, L, M, N,O) :- PrenotazioneB(A, B, L, E, M, N, O), Prenotazione(A, B, C, D, E, F, G, H, I, L, M, N,O) :- PrenotazioneB(A, B, L, E, M, N, O), PreFerroviariaB(A, C, F, G, D, H, I)PreFerroviariaB(A, C, F, G, D, H, I) ] ]

Nella sorgente A le informazioni per la relazione Prenotazioni del globale sono Nella sorgente A le informazioni per la relazione Prenotazioni del globale sono distribuite su tre relazioni Biglietto, Cliente e Viaggio quindi l’asserzione deve essere distribuite su tre relazioni Biglietto, Cliente e Viaggio quindi l’asserzione deve essere composta dalle tre relazioni. Inoltre abbiamo assunto che il codice del biglietto della composta dalle tre relazioni. Inoltre abbiamo assunto che il codice del biglietto della sorgente A viene usato come codice della prenotazione dello schema globale.sorgente A viene usato come codice della prenotazione dello schema globale.

Page 41: Tesina SIS

GAV – 2bGAV – 2b

[Prenotazione, [Prenotazione, Prenotazione(A, NULL, B, NULL, E, F, G, H, I, L, M, N, O) :- Prenotazione(A, NULL, B, NULL, E, F, G, H, I, L, M, N, O) :-

BigliettoA(A, E, Y, CF, D), ClienteA(M, N, O, CF), ViaggioA(D, F, G, H, I, L, B)BigliettoA(A, E, Y, CF, D), ClienteA(M, N, O, CF), ViaggioA(D, F, G, H, I, L, B)

Prenotazione(A, B, C, D, E, F, G, H, I, L, M, N, O) :- Prenotazione(A, B, C, D, E, F, G, H, I, L, M, N, O) :- PrenotazioneB(A, B, L, E, M, N, O), PreAereaB(A, C, F, G, D, H, I)PrenotazioneB(A, B, L, E, M, N, O), PreAereaB(A, C, F, G, D, H, I)

Prenotazione(A, B, C, D, E, F, G, H, I, L, M, N,O) :- Prenotazione(A, B, C, D, E, F, G, H, I, L, M, N,O) :- PrenotazioneB(A, B, L, E, M, N, O), PreNavaleB(A, C, F, G, D, H, I)PrenotazioneB(A, B, L, E, M, N, O), PreNavaleB(A, C, F, G, D, H, I)

Prenotazione(A, B, C, D, E, F, G, H, I, L, M, N,O) :- Prenotazione(A, B, C, D, E, F, G, H, I, L, M, N,O) :- PrenotazioneB(A, B, L, E, M, N, O), PreFerroviariaB(A, C, F, G, D, H, I) ]PrenotazioneB(A, B, L, E, M, N, O), PreFerroviariaB(A, C, F, G, D, H, I) ]

Per quanto riguarda la sorgente B sono in parte presenti nella relazione Prenotazione e in Per quanto riguarda la sorgente B sono in parte presenti nella relazione Prenotazione e in parte presenti nelle relazioni PreAerea, PreNavale e PreFerroviaria. parte presenti nelle relazioni PreAerea, PreNavale e PreFerroviaria.

GlobaleGlobalePrenotazione(Prenotazione(CodiceCodice, DataOraPrenotazione, DataOraPartenza, DataOraArrivo, Costo, NomeLuogoPartenza, , DataOraPrenotazione, DataOraPartenza, DataOraArrivo, Costo, NomeLuogoPartenza,

CittàPartenza, NomeLuogoArrivo, CittàArrivo, NomeCompagnia, NomeChiCompra, CognomeChiCompra, CittàPartenza, NomeLuogoArrivo, CittàArrivo, NomeCompagnia, NomeChiCompra, CognomeChiCompra, DataNascitaChiCompra)DataNascitaChiCompra)

Sorgente BSorgente BPrenotazione(Prenotazione(CodiceCodice, DataOraPrenotazione, NomeCompagnia, Prezzo, NomeChiCompra, CognomeChiCompra, , DataOraPrenotazione, NomeCompagnia, Prezzo, NomeChiCompra, CognomeChiCompra,

DataNascitaChiCompra)DataNascitaChiCompra)PreAerea(PreAerea(CodPrenotazioneCodPrenotazione, DataOraPartenza, NomeAereoportoPartenza, NomeCittàPartenza, DataOraArrivo, , DataOraPartenza, NomeAereoportoPartenza, NomeCittàPartenza, DataOraArrivo,

NomeAereoportoArrivo, NomeCittàArrivo)NomeAereoportoArrivo, NomeCittàArrivo)PreNavale(PreNavale(CodPrenotazioneCodPrenotazione, DataOraPartenza, NomePortoPartenza, NomeCittàPartenza, DataOraArrivo, , DataOraPartenza, NomePortoPartenza, NomeCittàPartenza, DataOraArrivo,

NomePortoArrivo, NomeCittàArrivo)NomePortoArrivo, NomeCittàArrivo)PreFerroviaria(PreFerroviaria(CodPrenotazioneCodPrenotazione, DataOraPartenza, NomeStazionePartenza, NomeCittàPartenza, DataOraArrivo, , DataOraPartenza, NomeStazionePartenza, NomeCittàPartenza, DataOraArrivo,

NomeStazioneArrivo, NomeCittàArrivo)NomeStazioneArrivo, NomeCittàArrivo)

Page 42: Tesina SIS

GAV – 3GAV – 3Relazione da un’attributoRelazione da un’attributo

Globale: Globale: Compagnia(Compagnia(NomeNome, Telefono), Telefono)Sorgente A: Sorgente A: Compagnia(Compagnia(NomeNome, Telefono), Telefono)Sorgente B: Sorgente B: Prenotazione(Prenotazione(CodiceCodice, DataOraPrenotazione, , DataOraPrenotazione,

NomeCompagnia, NomeCompagnia, Prezzo, NomeChiCompra,Prezzo, NomeChiCompra,CognomeChiCompra, CognomeChiCompra, DataNascitaChiCompra)DataNascitaChiCompra)

[Compagnia, [Compagnia, Compagnia(X, Y) :- CompagniaA(X, Y)Compagnia(X, Y) :- CompagniaA(X, Y)Compagnia(X, NULL) :- PrenotazioneB(A, B, X, C, Compagnia(X, NULL) :- PrenotazioneB(A, B, X, C,

D, E, F) ]D, E, F) ]

Nella sorgente B l’informazione su una compagnia non è mantenuta in Nella sorgente B l’informazione su una compagnia non è mantenuta in una relazione ma in un campo della relazione Prenotazione, quindi una relazione ma in un campo della relazione Prenotazione, quindi l’informazione sul nome della compagnia può essere ricavato da l’informazione sul nome della compagnia può essere ricavato da questo campo. Per le compagnie provenienti dalla sorgente B non è questo campo. Per le compagnie provenienti dalla sorgente B non è possibile ottenere l’informazione sul numero di telefono.possibile ottenere l’informazione sul numero di telefono.

Per preservare il vincolo di chiave sulla relazione del globale bisogna Per preservare il vincolo di chiave sulla relazione del globale bisogna prevedere di non considerare una stessa compagnia che è presente prevedere di non considerare una stessa compagnia che è presente in entrambe le sorgenti. in entrambe le sorgenti.

Page 43: Tesina SIS

GAV – 4GAV – 4Entità non presenteEntità non presente

Globale : Globale : Pacchetto(Pacchetto(CodicePrenotazioneCodicePrenotazione, Data, , Data, Durata, Durata, Albergo, CittàAlbergo)Albergo, CittàAlbergo)

Sorgente A: Sorgente A: - - -- - -

Sorgente B: Sorgente B: Pacchetto(Pacchetto(CodicePrenotazioneCodicePrenotazione, Data, , Data, Durata, Durata, NomeAlbergo, CittàAlbergo)NomeAlbergo, CittàAlbergo)

[Pacchetto, [Pacchetto, Pacchetto(X, Y, Z, K, A) :- PacchettoB(X, Y, Z, K, A) Pacchetto(X, Y, Z, K, A) :- PacchettoB(X, Y, Z, K, A) ]]

Qui ci troviamo nel caso in cui la sorgente A non contiene Qui ci troviamo nel caso in cui la sorgente A non contiene per niente un concetto, infatti nel globale è presente la per niente un concetto, infatti nel globale è presente la relazione relazione PacchettoPacchetto che rappresenta un viaggio con che rappresenta un viaggio con incluso l’alloggio in un’albergo. Quindi per questa incluso l’alloggio in un’albergo. Quindi per questa relazione il mapping estrae le informazione sola dalla relazione il mapping estrae le informazione sola dalla sorgente B che contiene questi dati. sorgente B che contiene questi dati.

Page 44: Tesina SIS

LAV – 1LAV – 1Informazione su più relazioniInformazione su più relazioni

Globale:Globale:Prenotazione(Prenotazione(CodiceCodice, DataOraPrenotazione, DataOraPartenza, , DataOraPrenotazione, DataOraPartenza,

DataOraArrivo, Costo, NomeLuogoPartenza, CittàPartenza, DataOraArrivo, Costo, NomeLuogoPartenza, CittàPartenza, NomeLuogoArrivo, CittàArrivo, NomeCompagnia, NomeChiCompra, NomeLuogoArrivo, CittàArrivo, NomeCompagnia, NomeChiCompra, CognomeChiCompra, DataNascitaChiCompra)CognomeChiCompra, DataNascitaChiCompra)

Aerea(Aerea(NomeNome, Nazione), Nazione)

Sorgente B:Sorgente B:PreAerea(PreAerea(CodPrenotazioneCodPrenotazione, DataOraPartenza, , DataOraPartenza,

NomeAereoportoPartenza, NomeCittàPartenza, DataOraArrivo, NomeAereoportoPartenza, NomeCittàPartenza, DataOraArrivo, NomeAereoportoArrivo, NomeCittàArrivo)NomeAereoportoArrivo, NomeCittàArrivo)

[PreAereaB, [PreAereaB, PreAereaB(A, B, C, D, E, F, G) :- PreAereaB(A, B, C, D, E, F, G) :- Prenotazione(A, M, B, E, N, C, D, F, G, O, P, Q, R), Aerea(O, S) Prenotazione(A, M, B, E, N, C, D, F, G, O, P, Q, R), Aerea(O, S) ]]

La relazione PreAerea rappresenta le prenotazioni aeree. Questa La relazione PreAerea rappresenta le prenotazioni aeree. Questa informazioni possono essere prese dalle relazioni del globale informazioni possono essere prese dalle relazioni del globale PrenotazionePrenotazione e e AereaAerea. .

Page 45: Tesina SIS

LAV – 2LAV – 2Sorgente con un sottoinsieme dei dati del globaleSorgente con un sottoinsieme dei dati del globale

Globale:Globale:Prenotazione(Prenotazione(CodiceCodice, DataOraPrenotazione, DataOraPartenza, DataOraArrivo, Costo, , DataOraPrenotazione, DataOraPartenza, DataOraArrivo, Costo,

NomeLuogoPartenza, CittàPartenza, NomeLuogoArrivo, CittàArrivo, NomeCompagnia, NomeLuogoPartenza, CittàPartenza, NomeLuogoArrivo, CittàArrivo, NomeCompagnia, NomeChiCompra, CognomeChiCompra, DataNascitaChiCompra)NomeChiCompra, CognomeChiCompra, DataNascitaChiCompra)

PerChi(PerChi(CodicePrenotazione, Nome, Cognome, DataNascitaCodicePrenotazione, Nome, Cognome, DataNascita))Aerea(Aerea(NomeNome, Nazione), Nazione)

Sorgente B: Sorgente B: PerChi(PerChi(CodicePrenotazioneAereo, Nome, Cognome, DataNascita)CodicePrenotazioneAereo, Nome, Cognome, DataNascita)

[PerChiB, [PerChiB, PerChiB(A, R, Q, P) :- PerChiB(A, R, Q, P) :-

PerChi(A, R, Q, P), Prenotazione(A, M, B, E, N, C, D, F, G, O, P, Q, R), PerChi(A, R, Q, P), Prenotazione(A, M, B, E, N, C, D, F, G, O, P, Q, R), Aerea(O, S) ]Aerea(O, S) ]

Nella sorgente B l’informazione che indica a chi è rivolta una prenotazione è mantenuta solo Nella sorgente B l’informazione che indica a chi è rivolta una prenotazione è mantenuta solo per le prenotazioni aeree. Dato che nel globale questa relazione mantiene i riferimenti per per le prenotazioni aeree. Dato che nel globale questa relazione mantiene i riferimenti per qualsiasi tipo di viaggio bisogna estrarre solo le prenotazioni che afferiscono ad una qualsiasi tipo di viaggio bisogna estrarre solo le prenotazioni che afferiscono ad una compagnia aerea.compagnia aerea.

Page 46: Tesina SIS

LAV – 3aLAV – 3aChiavi differentiChiavi differenti

Globale: Globale: PerChi(PerChi(CodicePrenotazione, Nome, Cognome,CodicePrenotazione, Nome, Cognome, DataNascitaDataNascita))

Sorgente A:Sorgente A: PerChi(PerChi(CodiceBiglietto, CF)CodiceBiglietto, CF)Cliente(Nome, Cognome, DataNascita, Cliente(Nome, Cognome, DataNascita, CFCF))

[PerChi, [PerChi, PerChi(A, B) :- PerChi(A, C, D, E) ]PerChi(A, B) :- PerChi(A, C, D, E) ]

La relazione PerChi permette di associare dei clienti alla prenotazione o La relazione PerChi permette di associare dei clienti alla prenotazione o al biglietto. In entrambi gli schemi abbiamo questo concetto al biglietto. In entrambi gli schemi abbiamo questo concetto rappresenato ma con una differenza, nello schema globale la chiave rappresenato ma con una differenza, nello schema globale la chiave di un cliente è il nome, cognome e data di nascita invece nella di un cliente è il nome, cognome e data di nascita invece nella sorgente è dato dal suo codice fiscale. Inoltre nel globale sorgente è dato dal suo codice fiscale. Inoltre nel globale l’informazione sul codice fiscale non esiste. A complicare le cose c’è l’informazione sul codice fiscale non esiste. A complicare le cose c’è il fatto che questi campi appartengolo alle chiavi delle rispettive il fatto che questi campi appartengolo alle chiavi delle rispettive relazioni.relazioni.

Page 47: Tesina SIS

LAV – 3bLAV – 3bPer avere un mapping più adeguato abbiamo bisogno di un Per avere un mapping più adeguato abbiamo bisogno di un

metodologia mista gioè GLAV. Con questa metodologia si metodologia mista gioè GLAV. Con questa metodologia si possono realizzare asserzioni su viste di etrambe gli schemi. possono realizzare asserzioni su viste di etrambe gli schemi. Nel nostro caso si può estrarre dalla relazione Cliente della Nel nostro caso si può estrarre dalla relazione Cliente della sorgente anche il nome, cognome e data di nascita che sorgente anche il nome, cognome e data di nascita che possono essere associati ai relativi campi dello schema del possono essere associati ai relativi campi dello schema del globale. L’asserzione è la seguente:globale. L’asserzione è la seguente:

[PerChi, PerChi(A, B), Cliente(N, C, D, B) :- PerChi(A, N, C, D) ][PerChi, PerChi(A, B), Cliente(N, C, D, B) :- PerChi(A, N, C, D) ]

Da questo caso è evidene come il mapping GLAV permetta Da questo caso è evidene come il mapping GLAV permetta una più facile costruzione dello stesso mapping a discapito una più facile costruzione dello stesso mapping a discapito di una più difficile fase di riformulazione delle query. di una più difficile fase di riformulazione delle query.

Page 48: Tesina SIS

LAV – 4LAV – 4Entità differenti ma associabiliEntità differenti ma associabili

Globale:Globale:Prenotazione(Prenotazione(CodiceCodice, DataOraPrenotazione, DataOraPartenza, , DataOraPrenotazione, DataOraPartenza,

DataOraArrivo, Costo, NomeLuogoPartenza, CittàPartenza, DataOraArrivo, Costo, NomeLuogoPartenza, CittàPartenza, NomeLuogoArrivo, CittàArrivo, NomeCompagnia, NomeChiCompra, NomeLuogoArrivo, CittàArrivo, NomeCompagnia, NomeChiCompra, CognomeChiCompra, DataNascitaChiCompra)CognomeChiCompra, DataNascitaChiCompra)

Sorgente A: Sorgente A: Biglietto(Biglietto(CodiceCodice, Prezzo, Sconto, CFChiCompra, , Prezzo, Sconto, CFChiCompra, IdViaggio) IdViaggio)Cliente(Nome, Cognome, DataNascita, Cliente(Nome, Cognome, DataNascita, CFCF))

[Biglietto, [Biglietto, Biglietto(A, B, C, D, E) :- Biglietto(A, B, C, D, E) :-

Prenotazione(A, F, J, H, B, I, L, M, N, O, P, E, F) ]Prenotazione(A, F, J, H, B, I, L, M, N, O, P, E, F) ]

Dato che il codice della relazione Prenotazione è stato associato al codice Dato che il codice della relazione Prenotazione è stato associato al codice della relazione Biglietto, questo fa si che l’asserzione sia semplice. della relazione Biglietto, questo fa si che l’asserzione sia semplice.

Come il precedente caso, nella sorgente abbiamo il CF del cliente che Come il precedente caso, nella sorgente abbiamo il CF del cliente che compra invece nel globale il Nome, Cognome e Data di nascita. Anche compra invece nel globale il Nome, Cognome e Data di nascita. Anche qui un mapping più efficace si può ottenere non GLAV. La vista qui un mapping più efficace si può ottenere non GLAV. La vista necessaria sul locale deve essere:necessaria sul locale deve essere:

Biglietto(A, B, C, D, E), Cliente(P, E, F, D)Biglietto(A, B, C, D, E), Cliente(P, E, F, D)