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 )