next up previous
Next: About this document ... Up: prova2 Previous: Definizione di un modello

Individuazione delle classi locali coinvolte

Per ogni Basic Query generata, bisogna determinare l'insieme ottimo di classi locali a cui inviare le Local Query . Per poter eseguire correttamente questo passaggio é necessario utilizzare entrambi i tipi di conoscenza individuati in fase di integrazione degli schemi.

  1. Analisi della Basic Query
    Il testo della Basic Query viene analizzato per individuare tutti gli attributi globali in esso contenuti.
    Una generica Basic Query puó essere schematizzata come segue:

     SELECT <select-list>
     FROM Gi
     WHERE <where-clause>
    
    Dove <select-list> e' un insieme di attributi globali: $ f(GA(G_i))$ , mentre <where-clause> e' un'espressione booleana, sempre funzione degli attributi globali, giá posta in forma normale congiuntiva $ (b(GA(G_i)))$. Viene individuato l'insieme Q di attributi globali contenuti nella <select-list> e nella <where-clause>:
    $ Q = \{q_1,q_2,\ldots,q_N\}$   , con$ Q \subseteq
\ GA(MT(G_i))$    per cui vale:
    $ \forall q_i \in Q, q_i \in (GA($<select-list>$ )) \lor (GA($<where-clause>$ ))$

    Consideriamo ad esempio la query seguente:

     Q_1: select name,dept
          from University_Person
          where faculty = 'CS'
          and (pay >2000000)
    

    Per la query Q_1 viene determinato l'insieme $ Q = \{\texttt{name, dept,
\ faculty, pay}\}$, che costituisce il punto di partenza per i passi successivi.

  2. Individuazione della Classe Virtuale Target
    A questo punto bisogna utilizzare la Gerachia Estensionale $ GE(G_i)$, associata alla Globale $ G_i$, per stabilire la Classe Virtuale Target, cioe' la Classe Virtuale che contiene all'interno della propria intensione tutti gli attributi Q della query.
    In realtá viene determinato un insieme di classi virtuali, in quanto piú di una classe puó avere i requisiti visti in precedenza, si determina quindi un insieme iniziale di classi virtuali $ V_in$.
    $ VC_{in} = \{V_{ji} \in GE(G_i): Q \subseteq int(Vji) \}$
    Nell'esempio vengono selezionate: $ VC_{in} = \{ C4, C7, C9, C11 \}$ Da questo insieme iniziale, vengono selezionate le classi virtuali con estensione massima, quelle cioé che contengono il maggior numero di Base Extension.
    $ VC_{opt} = \{V \in VC_{in}: est(V) >= est(V_h), \forall V_h \in VC_{in}\}$
    Nell'esempio si ottiene: $ VC_{opt} = \{C11\}$.
  3. individuazione delle Base Extension
    Nel caso in cui le Classi Virtuali siano piú di una bisogna considerare l'unione delle base extension, in caso contrario l'insieme $ BE_{in}$ di Base Extension iniziali é determinato automaticamente dall'estensione della Classe Virtuale. Nell'esempio $ VC_{opt} = \{C11\}$ e quindi $ BE_{in} = est(C11) = \{1,2,6,7\}$ In generale la formula seguente:
    $ BE_{in} = \bigcup_{V \in VC_{opt}} est(V)$

  4. Selezione delle Classi Locali
    Individuate le Base Extension sono note automaticamente anche le classi da interrogare.Relativamente alla nostra query di esempio Q_1, inizialmente le base extension selezionate sono: $ \{1,2,6 e 7\}$, esaminando la tabella riportata in Figura [*], dalle colonne delle base extension in questione si evince che le classi locali alle quali accedere risultano essere :
    $CL = \{ \mbox{\texttt{University\_Worker, School\_Member, CS\_Person,\\
\ University\_Student}} \}$ .
  5. Semplificazione del Query Plan
    Gli insiemi $ BE_{in} e CL_{in}$ determinati devono essere ulteriormente semplificati per minimizzare il numero di query da inviare alle sorgenti. Questa semplificazione avviene in due momenti distinti:

next up previous
Next: About this document ... Up: prova2 Previous: Definizione di un modello
Silvia Zanni 2000-09-07