MOMIS Query Manager

Esempi di traduzione della clausola where


  1. select name, email
    from University_Person
    where ( pay > 10000 or title = "ordinario" )
    and rank = "professor "


    Durante la fase di valutazione del Query-Plan vengono selezionate dal Query Manager le classi locali :
    • SU.Research_Staff(name,dept,pay,rank,email,relation,section)
    • SCS.Professor(name,dept,faculty,rank,title)

    Individuate le classi locali da interrogare, il metodo createAssembler() costruisce la eventuale clausola where della queryAssembler,in questo caso la clausola
    ( pay >10000 ) or ( title = associato )
    non e' compresa interamente in nessuna delle due classi,quindi diventa il predicato di selezione della queryAssembler.
    Per poter eseguire questa query sui risultati integrati e' necessario che fra gli attributi dello schema integrato compaiano anche pay e title, viene quindi aggiornata la Basic Query iniziale:

    select name, email, pay, title
    from University_Person
    where ( pay > 10000 ) or ( title = "ordinario" )
    and rank = "professor"

    La fase di traduzione della basic query, in funzione delle due classi locali selezionate, origina le seguenti local Query:

    1. select first_name, last_name, e_mail, pay
      from SU.Researc_Staff
      where "professor" = "professor"

    2. select name, title
      from SCS.Professor
      where rank = "professor"



  2. select year, rank
    from University_Person
    where name = "Maria Rossi"
    and year < 25


    Le classi individuate sono:
    • SU.School_Member(name,faculty,year,rank)
    • SCS.Student(name,faculty,year,rank,takes)

    Non e' presente nessuna clausola da aggiungere alla query assembler. Le query locali generate sono:

    1. select year
      from SU.School_Member
      where first_name = "Maria"
      and last_name = "Rossi"
      and year < 25

    2. select year, rank
      from SCS.Student
      where name = "Maria Rossi"
      and year < 25

    Nella prima query locale non compare l'attributo rank in quanto nella classe SU.School_Member e' mappato col valore di default "student".