Esercitazione sulla progettazione di Wrapper in applicazioni reali
Transcript
Esercitazione sulla progettazione di Wrapper in applicazioni reali
Esercitazione sulla progettazione di Wrapper in applicazioni reali 1. Descrizione della realtà di interesse Si considerino tre negozi di telefonia mobile, ognuno con un DB relazionale che presenta differenze concettuali e semantiche rispetto agli altri. I tre negozi della catena sono: • • • Mobile Store Cellularmania My Phone Ciascun database relazionale è stato progettato in modo indipendente dagli altri, per questo motivo alcune informazioni sono state memorizzate in modo differente, inoltre uno stesso concetto viene rappresentato con diverse “etichette”. La tabella seguente riassume le principali differenze: Mobile Store Telefonino Distributore Scheda Accessorio Gestore Promozione Cellularmania Cellulare Fornitore Sim Accessorio Gestore Promozione My Phone Cellulare Produttore Sim Accessorio Operatore - Tabella 1 Vedremo nel dettaglio lo schema E-R e il modello relazionale di ognuno di essi. 2. Il negozio “Mobile Store” Il primo negozio che vediamo è caratterizzato dalla gestione di telefonini associati a determinati gestori (Tim, Vodafone, Wind), nonché di telefonini provenienti direttamente dal distributore. 2.1 Lo Schema E-R Ha associato (1,n) (0,1) Telefonino (1,1) (1,n) (1,n) Distributore (1,n) (1,n) Stipula contratto fornito possiede (1,1) relativa (0,n) Figura 2.1 (1,1) (1,1) Accessorio Custodie/ cover (1,n) tratta (1,n) Batteria Operatore Altro Promozione (1,1) Scheda Come già detto un telefonino, fornito da un determinato Distributore, può essere o no associato ad un gestore. Un distributore stipula uno o più contratti con uno o più gestori. Un gestore tratta vari tipi di schede. Chiaramente un telefonino possiede uno o più accessori che possono essere batterie, custodie/cover, altro (dispositivi bluetooth, cavo dati etc..). Ogni articolo trattato, dal telefonino alla scheda può essere messo in promozione. 2.2.2 Modello relazionale ENTITA’ TELEFONINO(codice_telefonino, nome, IMEI, colore, fotocamera, video, quantità, prezzo) DISTRIBUTORE(codice_distributore, nome, indirizzo, recapito_telefonico) OPERATORE(codice_operatore, nome, sede, città) SCHEDA(codice_scheda, prezzo, quantità, piano_telefonico_default) ACCESSORIO(codice_accessorio, nome, categoria, prezzo, quantità) PROMOZIONE(codice_promozione, categoria, data_scadenza, prezzo, quantità, descrizione) RELAZIONI HA_ASSOCIATO(codice_telefonino, codice_operatore) POSSIEDE(codice_telefonino, codice_accessorio) STIPULA_CONTRATTO(codice_distributore, codice_operatore) FORNITO(codice_telefonino, codice_distributore) FORNITO_BIS(codice_accessorio, codice_distributore) RELATIVO_1(codice_promozione, codice_telefonino) RELATIVO_2(codice_promozione, codice_accessorio) RELATIVO_3(codice_promozione, codice_scheda) 3 Il negozio “Cellularmania” Il secondo negozio della catena presenta alcune differenze concettuali e semantiche rispetto al primo. 3.1 Lo Schema E-R Costruito Fornisce (1,n) (1,1) Cellulare Fornitore (1,n) (1,1) Adatto (1,1) (1,n) Accessorio (0,1) Esclusivo (1,1) (1,1) Gestore (1,n) (1,1) Scheda riferita (1,1) (0,n) Promozione Figura 3.1 Ogni cellulare è costruito da un Fornitore che fornisce gli accessori per i cellulari. Ogni accessorio può essere adatto a più cellulari. Ogni Gestore può mantenere l’esclusiva su alcuni modelli di cellulari, ma può anche succedere che un cellulare non sia associato ad alcun venditore. Un gestore fornisce una o più schede (che differiscono per capacità di memoria). Infine il negozio gestisce le promozioni che possono riguardare sia i cellulari che gli accessori e le schede. 3.2 Modello relazionale ENTITA’ CELLULARE(codice_cellulare, modello, EI, colore_cellulare, videocamera, quantità, prezzo) FORNITORE(codice_fornitore, nome_fornitore, partita_iva, indirizzo, telefono, e-mail, sito_internet) GESTORE(codice_gestore, nome_gestore, indirizzo, telefono, e-mail, sito_internet) SIM(codice_sim, tariffa, num_sim, prezzo, quantità) ACCESSORIO(codice_accessorio, nome_accessorio, prezzo, quantità) PROMOZIONE(codice_promozione, descrizione) RELAZIONI COSTRUITO(codice_cellulare, codice_fornitore) FORNISCE(codice_fornitore, codice_accessorio) FORNISCE2(codice_gestore, codice_sim) ESCLUSIVO(codice_cellulare, codice_gestore) ADATTO(codice_accessorio, codice_cellulare) RIFERITA1(codice_promozione, codice_cellulare) RIFERITA2(codice_promozione, codice_accessorio) RIFERITA3(codice_promozione, codice_sim) 4. Il Negozio “MyPhone” Tale negozio si differisce dai precedenti in quanto non gestisce le promozioni a livello concettuale. Inoltre la Sim è, in questo caso, legata sia al cellulare che al gestore. Presenta inoltre alcune eterogeneità semantiche. 4.1 Lo Schema E-R Costruisce Fornisce (1,n) (1,1) Produttore (1,n) (1,1) Possiede Cellulare (1,n) (1,n) Accessorio (0,1) Ha associata (1,1) Sim (1,n) Operatore Appartiene Figura 4.1 Ogni cellulare è costruito da un Produttore che fornisce alcuni accessori. Un cellulare può possedere uno o più accessori e ogni accessorio può andare bene per uno o più modelli di cellulare. Un cellulare può avere o no una scheda associata, appartenente ad un determinato gestore. 4.2 Modello relazionale ENTITA’ CELLULARE(codice_cellulare, nome_cellulare, colori, videocamera, foto, anno, prezzo) PRODUTTORE(codice_produttore, nome_produttore, paese, indirizzo, telefono, e-mail, sito_internet) OPERATORE(codice_operatore, nome_operatore, telefono, e-mail, num_servizio_clienti, sito_internet) SIM(numero_sim, memoria, tariffa) ACCESSORIO(codice_accessorio, nome_accessorio, prezzo) RELAZIONI COSTRUISCE(codice_produttore, codice_cellulare) FORNISCE(codice_produttore, codice_accessorio) POSSIEDE(codice_cellulare, codice_accessorio)i HA ASSOCIATO(codice_cellulare, numero_sim) APPARTIENE(numero_sim, codice_operatore) Promozione (1,n) su (1,1) (1,1) (1,1) esclusivo (1,1) Cellulare (1,n) (1,1) fornito (1,n) (1,n) Fornitore Gestore (1,n) adatto (1,n) tratta fornisce (1,n) Accessorio (1,n) (1,1) (1,1) abilita SIM (1,1) Batteria Custodie/ cover Altro Servizi Figura 5.1: Schema Globale 5. Lo schema Globale Si consideri lo Schema Globale, mostrato in Figura 5.1 e memorizzato nel mediatore, che rappresenta in modo omogeneo tutte le informazioni contenute nelle tre sorgenti considerate. Nella progettazione di tale schema sono state fatte le seguenti scelte: • Mantenere il nome Cellulare e non Telefonino • Mantenere il nome Fornitore e escludere Distributore e Produttore • Mantenere il nome SIM e non Scheda • Mantenere l’entità Gestore e non Operatore • Aggiungere allo schema globale l’entità Promozione • Aggiungere allo schema globale l’entità Servizi Il modello relazionale è il seguente: ENTITA’ • • • • CELLULARE(codice_cellulare, modello, IMEI, colore, fotocamera, videocamera, quantità, prezzo) FORNITORE(codice_fornitore, nome, PI, indirizzo, CAP, città, stato, TEL, E-MAIL, SITO, FAX) GESTORE(codice_gestore, nome, sede, città, SITO, TEL, E-MAIL, FAX) SIM(codice_sim, numero, tipo_contratto, piano_telefonico, prezzo, quantità, memoria) • • • ACCESSORIO(codice_accessorio, nome, categoria, prezzo, quantità) SERVIZIO(codice_servizio, nome, costo_attivazione, durata, costo_mensile) PROMOZIONE(codice_promozione, nome, descrizione, data_scadenza, quantità, prezzo) RELAZIONI • • • • • • • • • ESCLUSIVO(codice_cellulare, codice_gestore) ABILITA(codice_gestore, codice_servizio) FORNITO(codice_cellulare, codice_fornitore) FORNISCE(codice_fornitore, codice_accessorio) ADATTO(codice_cellulare, codice_accessorio) TRATTA(codice_gestore, codice_sim) SU1(codice_promozione,codice_cellulare) SU2(codice_promozione,codice_accessorio) SU3(codice_promozione,codice_sim) 6. Progettazione dei Wrapper La progettazione dei wrapper è una fase molto delicata poiché deve essere realizzata tenendo conto delle query più probabili che l’utente andrà a sottoporre al mediatore. La progettazione dei wrapper si articola in due fasi: • • Progettazione dei template Progettazione dei filtri Entrambe verranno discusse nel dettaglio. 6.1 Progettazione dei Template I template riguardano le query più generali e consentono all’utente di specificare dei parametri. I template devono essere semplici e coinvolgere query effettivamente interessanti. Non è necessario progettare molti template, anzi in genere conviene progettare pochi ma buoni. Nel seguito mostreremo quattro template: • Template sulla marca • Template sul colore • Template sul gestore • Template sul prezzo In quanto segue considereremo: • • • Wrapper1 riferito alla sorgente Mobile Store Wrapper2 riferito alla sorgente Cellularmania Wrapper3 riferito alla sorgente My Phone Template sulla marca: l’utente seleziona tutti i cellulari di una determinata marca: Query posta al mediatore: SELECT C.modello, C.colore, C.prezzo, C.fotocamera, C.videocamera, C.quantità FROM cellulare C, fornitore F, Fornito FO WHERE FO.codice_cellulare=C.codice_cellulare AND FO.codice_fornitore=F.codice_fornitore AND F.nome=’$marca’; IL WRAPPER1 EFFETTUA LA SEGUENTE TRADUZIONE: SELECT T.nome, T.colore, T.prezzo, T.fotocamera, T.video, T.quantità FROM telefonino T, distributore D, fornito FO WHERE FO.codice_telefonino=T.codice_telefonino AND FO.codice_distributore=D.codice_ditributore AND D.nome=’$marca’; IL WRAPPER2 EFFETTUA LA SEGUENTE TRADUZIONE: SELECT C.modello, C.colore_cellulare, C.prezzo, ‘DATO NON DISPONIBILE’, C.videocamera, C.quantità FROM cellulare C, fornitore F, costruito CO WHERE CO.codice_cellulare=C.codice_cellulare AND CO.codice_fornitore=F.codice_fornitore AND F.nome=’$marca’; IL WRAPPER3 EFFETTUA LA SEGUENTE TRADUZIONE: SELECT C.nome, C.colori, C.prezzo, C.foto, C.videocamera, ‘NON DISPONIBILE’ FROM cellulare C, produttore P, costruisce CE WHERE CE.codice_produttore=P.codice_produttore AND CE.codice_cellulare=C.codice_cellulare AND P.nome_produttore=’$marca’ ; Template sul colore: l’utente seleziona tutti I cellulari di un particolare colore Query posta al mediatore: SELECT C.modello, C.prezzo, C.fotocamera, C.videocamera, C.quantità WHERE C.colore=’$colore’; IL WRAPPER1 EFFETTUA LA SEGUENTE TRADUZIONE: SELECT T.nome, T.prezzo, T.fotocamera, T.video, T.quantità FROM telefonino T WHERE T.colore=’$colore’; IL WRAPPER2 EFFETTUA LA SEGUENTE TRADUZIONE: SELECT C.modello, C.prezzo, ‘DATO NON DISPONIBILE’, C.videocamera, C.quantità FROM cellulare C WHERE C.colore_cellulare=’$colore’; IL WRAPPER3 EFFETTUA LA SEGUENTE TRADUZIONE: SELECT C.nome, C.prezzo, C.foto, C.videocamera, ‘NON DISPONIBILE’ FROM cellulare C WHERE C.colori=’$colore’; Template sul gestore: l’utente seleziona tutti I cellulari di un particolare gestore. Questa query riguarda solo i primi due wrapper poiché il negozio My Phone non gestisce tale informazione. Query posta al mediatore: SELECT C.modello, C.colore, C.prezzo, C.fotocamera, C.videocamera, C.quantità FROM cellulare C, gestore G, esclusivo E WHERE E.codice_gestore=G.codice_gestore AND C.codice_cellulare=E.codice_cellulare AND G.nome=’$g’; IL WRAPPER1 EFFETTUA LA SEGUENTE TRADUZIONE: SELECT T.nome, T.colore, T.prezzo, T.fotocamera, T.video, T.quantità FROM telefonino T, operatore O, ha_associato HA WHERE HA.codice_operatore=O.codice_operatore AND HA.codice_telefonino=T.codice_telefonino AND O.nome=’$g’; IL WRAPPER2 EFFETTUA LA SEGUENTE TRADUZIONE: SELECT C.modello, C.colore_cellulare, C.prezzo, ‘DATO NON DISPONIBILE’, C.videocamera, C.quantità FROM cellulare C, gestore G, esclusivo E WHERE E.codice_gestore=G.codice_gestore AND E.codice_cellulare=C.codice_cellulare AND G.nome=’$g’; Template sul prezzo: l’utente può selezionare tutti i cellulari che hanno un prezzo al di sotto di un certo valore. Query posta al mediatore: SELECT C.modello, C.colore, C.prezzo, C.fotocamera, C.videocamera, C.quantità FROM cellulare C WHERE C.prezzo<=’$prezzo’; IL WRAPPER1 EFFETTUA LA SEGUENTE TRADUZIONE: SELECT T.nome, T.colore, T.fotocamera, T.video, T.quantità FROM telefonino T WHERE T.prezzo<=’$prezzo’; IL WRAPPER2 EFFETTUA LA SEGUENTE TRADUZIONE: SELECT C.modello, C.colore_cellulare, ‘DATO NON DISPONIBILE’, C.videocamera, C.quantità FROM cellulare C WHERE C.prezzo<=’$prezzo’; IL WRAPPER3 EFFETTUA LA SEGUENTE TRADUZIONE: SELECT C.nome, C.colori, C.foto, C.videocamera, ‘NON DISPONIBILE’ FROM cellulare C WHERE C.prezzo<=’$prezzo’; 6.2 Progettazione dei Filtri Vedremo tre filtri che si avvalgono dell’ausilio dei template precedentemente creati. Selezionare un modello di cellulare di un particolare colore. Query posta al mediatore: SELECT C.modello FROM cellulare WHERE colore=’$colore’ AND modello=’$modello’; IL WRAPPER1 EFFETTUA LA SEGUENTE TRADUZIONE: Applica il template sul colore come il Wrapper1 A questo punto applichiamo il filtro: SELECT * FROM tempcolor WHERE nome=’$modello’; IL WRAPPER2 EFFETTUA LA SEGUENTE TRADUZIONE: Applica il template sul colore ottenendo una tabella temporanea (una vista) che chiamiamo tempcolor. A questo punto applica il filtro: SELECT * FROM tempcolor WHERE modello=’$modello’; IL WRAPPER3 EFFETTUA LA SEGUENTE TRADUZIONE: Aplica il template sul colore. A questo punto applichiamo il filtro: SELECT * FROM tempcolor WHERE nome_cellulare=’$modello’; Selezionare i cellulari di una determinata marca associati ad un determinato gestore. In questo caso posso applicare in cascata i due template precedentemente creati, ovvero quello sulla marca e quello sul gestore. Tale discorso vale per Cellularmania e Mobile Store in quanto, come precedentemente detto, My Phone non gestisce i cellulari associati ad un gestore. Query posta al mediatore: SELECT C.modello, C.colore, C.prezzo, C.fotocamera, C.videocamera, C.quantità FROM cellulare C, gestore G, fornitore F, esclusivo E, Fornito FO WHERE E. codice_cellulare=C.codice_cellulare AND E.codice_gestore=G.codice_gestore AND FO.codice_fornitore=F.codice_fornitore AND FO.codice_cellulare=C.codice_cellulare AND G.nome=’$gestore’ AND F.nome=’$marca’; Template marca $marca TempMarca(…) Template gestore $gestore Risultato Cellulari_Modello_Gestore(…) Selezionare i modelli di cellulari di una particolare marca, disponibili nella versione con fotocamera e senza fotocamera . Query posta al mediatore: SELECT C1.modello FROM Cellulare C1, Cellulare C2, Fornitore F, fornito FO1, fornito FO2 WHERE F.nome= “$marca” AND C1.modello=C2.modello AND FO1.codice_fornitore=F1.codice_fornitore AND FO2.codice_fornitore=F2.codice_fornitore AND FO1.codice_cellulare=C1.codice_cellulare AND FO2.codice_cellulare=C2.codice_cellulare AND C1.fotocamera= “true” AND C2.fotocamera= “false”; WRAPPER1: 1. Applica il template sulla marca: Template marca $marca TempMarca(nome,…..,videocamera) 2. Applica il filtro: SELECT DISTINCT TM1.nome FROM TempMarca TM1, TempMarca TM2 WHERE TM1.nome =TM2.nome AND TM1.fotocamera= “true” AND TM2.fotocamera= “false”; WRAPPER2: 1. Applica il template sulla marca: Template marca $marca TempMarca(modello…..,fotocamera) 2. Applica il filtro: SELECT DISTINCT TM1.modello FROM TempMarca TM1, TempMarca TM2 WHERE TM1.modello=TM2.modello AND TM1.videocamera= “true” AND TM2.videocamera= “false”; WRAPPER3: 1. Applica il template sulla marca: Template marca $marca TempMarca(nome_cellulare, …..,foto) 2. Applica il filtro: SELECT DISTINCT TM1.nome_cellulare FROM TempMarca TM1, TempMarca TM2 WHERE TM1. nome_cellulare =TM2. nome_cellulare AND TM1.foto= “true” AND TM2.foto= “false”; Selezionare tutti i cellulari di un particolare colore che non siano di un determinato gestore. Questa query coinvolge solo le prime due sorgenti per il problema discusso in precedenza. Query posta al mediatore: SELECT C.modello FROM cellulare C WHERE C.colore= “$colore” AND NOT EXISTS (SELECT C1.modello FROM cellulare C1, esclusivo E, gestore G WHERE C1.codice_cellulare=E.codice_cellulare AND E.codice_gestore=G.codice_gestore AND G.nome=’$nome_gestore’) WRAPPER2: 1. Applica il template sul colore e successivamente quello sul gestore, conservando i risultati in due tabelle differenti: Template colore $colore Template gestore $gestore TempColore(modello…..,colore_cellulare) TempGestore(modello…nome_gestore) 2. Seleziona i cellulari con un determinato colore e sottrae quelli forniti dal gestore fornito dall’utente. SELECT TC1.modello FROM TempColore TC1 WHERE TC1.colore_cellulare=”$colore” AND NOT EXISTS (SELECT TG.modello FROM TempGestore TG WHERE TG.modello=TC1.modello )