1 / 48

Tesina SIS

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.

darby
Télécharger la présentation

Tesina SIS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tesina SIS Antonello Scarano Luigi Tullio

  2. 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.

  3. Prime Osservazioni • Specifiche troppo dettagliate. • Schemi da integrare troppo simili. • Modifiche alla traccia iniziale.

  4. Mapping GAV Global as View: lo schema globale è definito in termini di viste sugli schemi sorgente (locali). Pregi e difetti • Quando una sorgente cambia è necessario modificare il mapping o ripensare lo schema globale • L’elaborazione delle query in genere è molto semplice (unfolding)

  5. Mapping LAV Local as View: gli schemi locali sono definiti in termini di viste sullo schema globale. Pregi e difetti • Consentono un’alta modularità e riusabilità: se cambia una sorgente è necessario modificare solo la sua definizione • Facile estensibilità: aggiungere una sorgente al sistema di integrazione consiste solo nel definire una nuova vista • La valutazione delle query è difficile (è necessaria una riformulazione delle query a run-time)

  6. Separazione Compiti • Diversificazione punti di vista • Analisi e commenti indipendenti • Redazione tesina come punto d’incontro

  7. Il mio compito • Focalizzare l’attenzione su GAV • Aspetto critico sul lavoro compiuto • Carpire concetti e trarre conclusioni

  8. Esercizio 1(schema globale)

  9. Esercizio 1(Sorgente A)

  10. Esercizio 1(sorgente B)

  11. Problema! • Specifiche stringenti • Schemi speculari • Nessuna rilevanza mapping • GAV e LAV immediati • La realtà è diversa!!

  12. Mapping (banale!) • [ Prototipo, Prototipo(X,Y,Z) :- PrototipoA(X,Y,Z) Prototipo(X,Y,Z) :- PrototipoB(X,Y,Z) ] • [Collaudo, Collaudo(X,Y,Z,K) :- CollaudoA(X,Y,Z,K) Collaudo(X,Y,Z,K) :- CollaudoB(X,Y,Z,K) ] • [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) ] • [Banco, Banco(X,Y,Z,K,Q) :- BancoA(X,Y,Z,K,Q) Banco(X,Y,Z,K,Q) :- BancoB(X,Y,Z,K,Q) ] ………

  13. A partire dalla definizione dei mapping sia GAV che LAV forse abbiamo l’opportunita di comprendere meglio quello che si nasconde dietro la struttura dei dati stessi. Esempio troppo chiaro in questo caso con l’entità “Autorizzazione” della sorgente A. Uno spunto

  14. Esercizio 2(schema globale)

  15. Esercizio 2(sorgente A)

  16. Esercizio 2(sorgente B)

  17. Mapping GAV • Progettazione mirata (schema globale dettagliato) • Come si comporta il mapping? • GAV immediato • Granularità non un problema • Difficoltà: dispersione dell’informazione o mancanza

  18. Mapping GAV/2 • [Prenotazione, Prenotazione(X,Y) :- PrenotazioneA(X,Y,Z,K) Prenotazione(X,Y) :- PrenotazioneB(X,Y,Z,K) ] • [Effettua, Effettua(X,Z,Y) :- PrenotazioneA(X,A,Y,Z) Effettua(X,Z,Y) :- PrenotazioneB(X,A,Y,Z)] • [Collettiva, Collettiva(X,Z,Y,K) :- CollettivaA(X,Y,Z,K,A) Collettiva(X,Z,Y,K) :- CollettivaB(X,Y,Z,K,A)] • [Singola, Singola(X) :- SingolaA(X,Y,Z,K,A,B) Singola(X) :- SingolaB(X,Y,Z,K,A,B)] ………

  19. Mapping LAV • [PrenotazioneA, PrenotazioneA(X,Y,Z,K) :- Prenotazione(X,Y),Effettua(X,Z,K) ] • [CollettivaA, CollettivaA(X,Y,Z,K,A) :- Collettiva(X,Z,Y,K),Quale(X,A) ] • [SingolaA, SingolaA(X,Y,Z,K,A,B) :- PSP(K,Z,A,Y,X), Per(X,B)] ………

  20. Ossevazioni sul LAV • Opposto al GAV • Semplici join sui dati • Ancora: il problema è la dispersione dei dati

  21. GAV e LAV assieme Si intuisce che analizzando i mapping possiamo ricavare informazioni su quello che si sta cercando di mappare. Esempio “PostoAssegnato” non mappato in nessuno dei due schemi. Informazione spalmata su troppe tabelle

  22. Illustrazione esercizio 3 • Specifiche molto vaghe (solo alcune linee guida) • Risultato: basi dati differenti • Attenzione sul GAV • Schema globale molto dettagliato (contiene tutte le informazione di entrambe le sorgenti) • Politica del reperimento “per forza” di tutti i dati • Assunzione iniziale: inserimenti leciti delle basi

  23. Esercizio 3(schema globale)

  24. Esercizio 3(sorgente A)

  25. Esercizio 3(sorgente B)

  26. Il mapping GAV 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 sorgente B con meccanismo chiarito in seguito 2. 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)]

  27. Il mapping GAV/2 3. Ricerca attraverso query specifiche 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, P),Giocatore(A, Y) )] [NumeroGolB: G = Count(Marcatura(X, Y, Z, M, A), Partita(X, Y, Z, N, O, P),Giocatore(A, Z))] Il mapping con la sorgente B è immadiato Oss: le chiavi differenti non sono un problema; assunzione inserimenti leciti!!

  28. Il mapping GAV/3 4. Mapping immediato con la sorgente A Problema sorgente B:differenza chiavi.Generazione di un valore fittizio univoco per non perdere informazione. Conseguenza: non stiamo inserendo l’informazione reale desiderata, ma meglio che perdere dati. Persona(CF, Nome, Cognome, Età) GLOB Giocatore(NMaglia, NomeSquadra, Nome, Cognome, Ruolo, Eta) SORG B Arbitro(Nome, Cognome, Partite, Città) SORG B Oss: i dati per popolare l’entità Persona del globale, le andiamo a reperire dalle tabelle Arbitro e Giocatore della sorgente B: è chiaro che noi siamo a conoscenza del significato logico del contenuto delle tabelle.

  29. Il mapping GAV/4 5. Vale anche qui il ragionamento fatto al punto 4. Chiaramente si riusano gli identificativi generati al passaggio precedente. Nel mapping con la sorgente A mancanza informazione: ignorare inserimenti su quei campi, oppure “sporcare” il GAV con un GLAV (forzando a NULL gli inserimenti sui dati mancanti) Giocatore(CF, NMaglia, Ruolo, NomeSquadra) GLOB Giocatore(CF, NomeSquadra) SORG A Giocatore(NMaglia, NomeSquadra, Nome, Cognome, Ruolo, Eta) SORG B

  30. Il mapping GAV/5 6. Stesso ragionamento utilizzato per i punti 4e5. Mapping diretto con la fonte A Arbitro(X, Y) :- ArbitroB(A, C, Y, D) 7. Mapping possibile solo sulla fonte A: (differenza sostanziale dai punti precedenti) Allenatore (X) :- AllenatoreA(X) 8. Mapping diretto Stadio(X, Y) :- LuogoA(X, Y) Stadio(X, Y) :- CentroSportivoB(X, Y)]

  31. Il mapping GAV/6 9. Mapping diretto Città(X) :- Città A(X) Città(X) :- Città B(X) 10. Mapping su A con semplice join. Mapping su B a patto di rispettare vincolo di chiave esterna sui codici auto-generati dal sistema. Marcatura(DataOraPartita, StadioPartita, CittàPartita, CFMarcatore,Minuto)GLOB Partita(DataOra, SquadraA, SquadraB, Arbitro, Luogo, Città) SORG A Marcatura(DataOra, SquadraA, SquadraB, Minuto, CFGiocatore) SORG A Marcatura(DataOraPartita, StadioPartita, CittàPartita, NMagliaMarcatore, NomeSquadraMarcatore, Minuto) SORG B

  32. Il mapping LAV • Controllare se “Partita” ha un “Risultato” • Partite “nonGiocate” come differenza tra “Partite” e “Giocate” • Il campo “Allenatore” inteso come nome e cognome dell’allentare. Sufficiente un join per reperire l’informazione • Perdita informazione (irreperibile all’interno del globale)

  33. Conclusioni • GAV e LAV non sempre bastano • GAV “sfacciato”: globale come vista sulle sorgenti (difficile) • LAV più “modesto”: sorgenti viste sul globale • Buono strumento di analisi • E’ necessario derivare le relazioni interschema tra le varie sorgenti (GAV). • Le relazioni interschema tra le sorgenti possono essere dedotte dai mapping (LAV). • Impossibilità a volte di soluzione per alcuni problemi • Analizzare bene la tecnica da usare • Difficoltà di automatizzare: bisogna conoscere il rapporto con la realtà di quanto si vuole manipolare

  34. Presentazione Luigi Tullio • DB 3 “Invenzioni”: • Specifica dettagliata  Schemi Simili • Caso in cui si usa una chiave differente • DB 4 “Ordini”: • Specifica dettagliata  Schemi Simili • Caso in cui una relazione viene ricostruita da altre • DB 5 “Prenotazioni”: • Specifiche generiche  Schemi differenti • Schema globale con alcune informazioni più dettagliate  Gav più complesso. • Schema gobale con alcune informazioni mancanti  Lav più complesso • 4 casi di Gav e 4 casi di Lav

  35. DB 3 – “Invenzioni” Globale InvenzioneUtile(Unicod, NBrevetto, NomeNazione, Finanziamento, CFVaglia, IstScolastico) InvenzioneUtile(Cod.Univoco.IU, NBrevetto, NomeNazione, Finanziamento, CF, CodiceIstScolastico) Sorgente A [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) ] GAV [InvenzioneUtile, InvenzioneUtile(X, Y, Z, K, A, B) :- InvenzioneUtile(X, Y, Z, K, A, B) ] LAV

  36. DB 4 – “Ordini” Globale ConsegnaPer(NomeC, DataNC, Data, Ora, NomeCorriere) Cliente(Nome, DataNascita, Reddito, AnniDaCliente) Processato(DataOrd, OraOrd, NomeCli, DataNasCli, DataCon, OraCon, NomeCorr) Sorgente A GAV [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)]

  37. DB 5 – Differenze A Globale Sorgente A

  38. DB 5 – Differenze B Globale Sorgente B

  39. GAV – 1 Informazione Mancante + Chiave Diversa Globale: Cliente(Nome, Cognome, DataNascita, Tel) Sorgente A: Cliente(Nome, Cognome, DataNascita, CF) Sorgente B: Cliente(Nome, Cognome, DataNascita, Tel) [Cliente, Cliente(X, Y, Z, NULL) :- ClienteA(X, Y, Z, A), Cliente(X, Y, Z, K) :- ClienteB(X, Y, Z, K) ] Il NULL sul campo “Tel” è stato necessario perchè nella sorgente A questa informazione non è presente. I vincoli di chiave sul globale vengono rispettati dai dati della sorgente B dato che fa uso della stessa chiave, per quelli provenienti dalla sorgene A teoricamente non è garantati che gli elementi abbiano i campi nome, cognome e data di nascita univoci.

  40. GAV – 2a Informazione su più relazioni Globale Prenotazione(Codice, DataOraPrenotazione, DataOraPartenza, DataOraArrivo, Costo, NomeLuogoPartenza, CittàPartenza, NomeLuogoArrivo, CittàArrivo, NomeCompagnia, NomeChiCompra, CognomeChiCompra, DataNascitaChiCompra) Sorgente A Cliente(Nome, Cognome, DataNascita, CF) Biglietto(Codice, Prezzo, Sconto, CFChiCompra, IdViaggio) Viaggio(IdViaggio, NomeLuogoPartenza, NomeCittàPartenza, NomeLuogoDestinazione, NomeCittàDestinazione, NomeCompagnia, DataOraPartenza) [Prenotazione, 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) 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) 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) 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) ] 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 composta dalle tre relazioni. Inoltre abbiamo assunto che il codice del biglietto della sorgente A viene usato come codice della prenotazione dello schema globale.

  41. GAV – 2b Globale Prenotazione(Codice, DataOraPrenotazione, DataOraPartenza, DataOraArrivo, Costo, NomeLuogoPartenza, CittàPartenza, NomeLuogoArrivo, CittàArrivo, NomeCompagnia, NomeChiCompra, CognomeChiCompra, DataNascitaChiCompra) Sorgente B Prenotazione(Codice, DataOraPrenotazione, NomeCompagnia, Prezzo, NomeChiCompra, CognomeChiCompra, DataNascitaChiCompra) PreAerea(CodPrenotazione, DataOraPartenza, NomeAereoportoPartenza, NomeCittàPartenza, DataOraArrivo, NomeAereoportoArrivo, NomeCittàArrivo) PreNavale(CodPrenotazione, DataOraPartenza, NomePortoPartenza, NomeCittàPartenza, DataOraArrivo, NomePortoArrivo, NomeCittàArrivo) PreFerroviaria(CodPrenotazione, DataOraPartenza, NomeStazionePartenza, NomeCittàPartenza, DataOraArrivo, NomeStazioneArrivo, NomeCittàArrivo) [Prenotazione, 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) 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) 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) 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) ] Per quanto riguarda la sorgente B sono in parte presenti nella relazione Prenotazione e in parte presenti nelle relazioni PreAerea, PreNavale e PreFerroviaria.

  42. GAV – 3 Relazione da un’attributo Globale: Compagnia(Nome, Telefono) Sorgente A: Compagnia(Nome, Telefono) Sorgente B: Prenotazione(Codice, DataOraPrenotazione, NomeCompagnia, Prezzo, NomeChiCompra, CognomeChiCompra, DataNascitaChiCompra) [Compagnia, Compagnia(X, Y) :- CompagniaA(X, Y) Compagnia(X, NULL) :- PrenotazioneB(A, B, X, C, D, E, F) ] Nella sorgente B l’informazione su una compagnia non è mantenuta in una relazione ma in un campo della relazione Prenotazione, quindi l’informazione sul nome della compagnia può essere ricavato da questo campo. Per le compagnie provenienti dalla sorgente B non è possibile ottenere l’informazione sul numero di telefono. Per preservare il vincolo di chiave sulla relazione del globale bisogna prevedere di non considerare una stessa compagnia che è presente in entrambe le sorgenti.

  43. GAV – 4 Entità non presente Globale : Pacchetto(CodicePrenotazione, Data, Durata, Albergo, CittàAlbergo) Sorgente A: - - - Sorgente B: Pacchetto(CodicePrenotazione, Data, Durata, NomeAlbergo, CittàAlbergo) [Pacchetto, Pacchetto(X, Y, Z, K, A) :- PacchettoB(X, Y, Z, K, A) ] Qui ci troviamo nel caso in cui la sorgente A non contiene per niente un concetto, infatti nel globale è presente la relazione Pacchetto che rappresenta un viaggio con incluso l’alloggio in un’albergo. Quindi per questa relazione il mapping estrae le informazione sola dalla sorgente B che contiene questi dati.

  44. LAV – 1 Informazione su più relazioni Globale: Prenotazione(Codice, DataOraPrenotazione, DataOraPartenza, DataOraArrivo, Costo, NomeLuogoPartenza, CittàPartenza, NomeLuogoArrivo, CittàArrivo, NomeCompagnia, NomeChiCompra, CognomeChiCompra, DataNascitaChiCompra) Aerea(Nome, Nazione) Sorgente B: PreAerea(CodPrenotazione, DataOraPartenza, NomeAereoportoPartenza, NomeCittàPartenza, DataOraArrivo, NomeAereoportoArrivo, NomeCittàArrivo) [PreAereaB, 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) ] La relazione PreAerea rappresenta le prenotazioni aeree. Questa informazioni possono essere prese dalle relazioni del globale Prenotazione e Aerea.

  45. LAV – 2 Sorgente con un sottoinsieme dei dati del globale Globale: Prenotazione(Codice, DataOraPrenotazione, DataOraPartenza, DataOraArrivo, Costo, NomeLuogoPartenza, CittàPartenza, NomeLuogoArrivo, CittàArrivo, NomeCompagnia, NomeChiCompra, CognomeChiCompra, DataNascitaChiCompra) PerChi(CodicePrenotazione, Nome, Cognome, DataNascita) Aerea(Nome, Nazione) Sorgente B: PerChi(CodicePrenotazioneAereo, Nome, Cognome, DataNascita) [PerChiB, PerChiB(A, R, Q, P) :- PerChi(A, R, Q, P), Prenotazione(A, M, B, E, N, C, D, F, G, O, P, Q, R), Aerea(O, S) ] 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 qualsiasi tipo di viaggio bisogna estrarre solo le prenotazioni che afferiscono ad una compagnia aerea.

  46. LAV – 3a Chiavi differenti Globale: PerChi(CodicePrenotazione, Nome, Cognome,DataNascita) Sorgente A: PerChi(CodiceBiglietto, CF) Cliente(Nome, Cognome, DataNascita, CF) [PerChi, PerChi(A, B) :- PerChi(A, C, D, E) ] La relazione PerChi permette di associare dei clienti alla prenotazione o al biglietto. In entrambi gli schemi abbiamo questo concetto rappresenato ma con una differenza, nello schema globale la chiave di un cliente è il nome, cognome e data di nascita invece nella sorgente è dato dal suo codice fiscale. Inoltre nel globale l’informazione sul codice fiscale non esiste. A complicare le cose c’è il fatto che questi campi appartengolo alle chiavi delle rispettive relazioni.

  47. LAV – 3b Per avere un mapping più adeguato abbiamo bisogno di un metodologia mista gioè GLAV. Con questa metodologia si possono realizzare asserzioni su viste di etrambe gli schemi. Nel nostro caso si può estrarre dalla relazione Cliente della sorgente anche il nome, cognome e data di nascita che possono essere associati ai relativi campi dello schema del globale. L’asserzione è la seguente: [PerChi, PerChi(A, B), Cliente(N, C, D, B) :- PerChi(A, N, C, D) ] Da questo caso è evidene come il mapping GLAV permetta una più facile costruzione dello stesso mapping a discapito di una più difficile fase di riformulazione delle query.

  48. LAV – 4 Entità differenti ma associabili Globale: Prenotazione(Codice, DataOraPrenotazione, DataOraPartenza, DataOraArrivo, Costo, NomeLuogoPartenza, CittàPartenza, NomeLuogoArrivo, CittàArrivo, NomeCompagnia, NomeChiCompra, CognomeChiCompra, DataNascitaChiCompra) Sorgente A: Biglietto(Codice, Prezzo, Sconto, CFChiCompra, IdViaggio) Cliente(Nome, Cognome, DataNascita, CF) [Biglietto, Biglietto(A, B, C, D, E) :- 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 della relazione Biglietto, questo fa si che l’asserzione sia semplice. Come il precedente caso, nella sorgente abbiamo il CF del cliente che compra invece nel globale il Nome, Cognome e Data di nascita. Anche qui un mapping più efficace si può ottenere non GLAV. La vista necessaria sul locale deve essere: Biglietto(A, B, C, D, E), Cliente(P, E, F, D)

More Related