tesina sis
Post on 02-Feb-2016
80 Views
Preview:
DESCRIPTION
TRANSCRIPT
Tesina SISTesina SIS
Antonello ScaranoAntonello Scarano
Luigi TullioLuigi Tullio
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.
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.
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)
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)
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
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
Esercizio 1Esercizio 1(schema globale)(schema globale)
Esercizio 1Esercizio 1(Sorgente A)(Sorgente A)
Esercizio 1Esercizio 1(sorgente B)(sorgente B)
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!!
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) ]………………
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.
Esercizio 2Esercizio 2(schema globale)(schema globale)
Esercizio 2Esercizio 2(sorgente A)(sorgente A)
Esercizio 2Esercizio 2(sorgente B)(sorgente B)
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
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)]
………………
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)]
………………
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
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
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
Esercizio 3Esercizio 3(schema globale)(schema globale)
Esercizio 3Esercizio 3(sorgente A)(sorgente A)
Esercizio 3Esercizio 3(sorgente B)(sorgente B)
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)]
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!!
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.
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
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)]
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
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)
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
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
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
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)]
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
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
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.
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.
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)
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.
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.
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. .
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.
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.
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.
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)
top related