• Nenhum resultado encontrado

Regras Alg´ebricas Envolvendo Condi¸c˜oes Baseadas em Agrega¸c˜ao

4.3 Regras Alg´ebricas

4.3.2 Regras Alg´ebricas Envolvendo Condi¸c˜oes Baseadas em Agrega¸c˜ao

Esta se¸c˜ao apresenta as regras alg´ebricas da sele¸c˜ao por similaridade tendo um termo utilizando o operador ck-NN com uma condi¸c˜ao baseada em agrega¸c˜ao por contagem.

Como visto anteriormente, a fun¸c˜ao de agrega¸c˜ao neste tipo de condi¸c˜ao pode assumir duas formas: COUNT(atr, tcond), na qual o valor da fun¸c˜ao ´e dado pela contagem de valores n˜ao nulos no atributo de agrega¸c˜ao agAtr das tuplas do resultado da consulta que satisfazem tcond; ou COUNT(∗, tcond), na qual o valor da fun¸c˜ao de agrega¸c˜ao ´e dado simplesmente pela contagem de tuplas do resultado que satisfazem tcond. Entretanto, a segunda forma ´e mais geral, pois a primeira forma sempre pode ser convertida na segunda, como define a Regra 4.6.

Regra 4.6 (Generalidade da contagem de tuplas) Uma condi¸c˜ao baseada em agrega¸c˜ao por contagem que indica a contagem de valores n˜ao nulos no atributo de agrega¸c˜ao pode ser transformada em uma condi¸c˜ao baseada em agrega¸c˜ao por contagem de tuplas em uma sele¸c˜ao por similaridade envolvendo o operador ckNN, isto ´e:

¨

σSckNN[δ,∆,k,COUNT(atr,tcond)θc] Q(R) ⇔ ¨σSckNN[δ,∆,k,COUNT(∗,atr6=NULL∧tcond)θc] Q(R) (4.12)

A regra da generalidade da contagem de tuplas baseia-se na observa¸c˜ao que uma agrega¸c˜ao por contagem de valores n˜ao nulos pode ser transformada em uma agrega¸c˜ao por contagem de tuplas que inclui uma verifica¸c˜ao de nulidade do atributo de agrega¸c˜ao na condi¸c˜ao de filtragem da fun¸c˜ao, como mostra a Equivalˆencia 4.12. Note-se que nem sempre ´e poss´ıvel transformar uma agrega¸c˜ao por contagem de tuplas em uma agrega¸c˜ao por contagem de valores n˜ao nulos. Uma agrega¸c˜ao por contagem de tuplas s´o pode ser transformada em uma agrega¸c˜ao por contagem de valores n˜ao nulos se houver algum atributo garantidamente n˜ao nulo na rela¸c˜ao de entrada. Baseando-se nesta regra, sem perda de generalidade, as demais regras apresentadas nesta se¸c˜ao consideram a agrega¸c˜ao por contagem de tuplas. A regra a seguir considera a possibilidade de inconsistˆencia entre os valores c e k.

Regra 4.7 (Inconsistˆencia da contagem) Uma sele¸c˜ao por similaridade sobre uma rela¸c˜ao com k tuplas ou mais envolvendo o operadorckNN com uma condi¸c˜ao baseada em

agrega¸c˜ao por contagem c-acond, cujo valor de c ´e inconsistente com o valor de k, produz um resultado vazio. Se a c-acond n˜ao ´e filtrada, isto ´e, tcond ´e nula, c ´e inconsistente com k quando: θ ´e ‘=’ e c 6= k; ou θ ´e ‘6=’ e c = k; ou θ ´e ‘>’ e c ≥ k; ou θ ´e ‘≥’ e c > k; ou θ ´e ‘≤’ e c < k; ou θ ´e < e c ≤ k. Nesses casos, a express˜ao a seguir ´e v´alida:

¨

Caso a c-acond seja filtrada, c ´e inconsistente com k quando: θ ´e ‘=’ e c > k; ou θ ´e ‘>’ e c ≥ k; ou θ ´e ‘≥’ e c > k; ou θ ´e ‘≤’ e c < 0; ou θ ´e < e c ≤ 0. Nesses casos, a express˜ao a seguir ´e v´alida:

¨

σSckNN[δ,∆,k,COUNT(∗,tcond)θc] Q(R) = ∅ (4.14)

A Regra 4.7 ´e baseada no fato que n˜ao existe um k-conjunto minimal restrito indu- zido por dissimilaridade ¯Scaδ,Q-cond,k que seja restrito por uma c-acond cujo valor de c ´e inconsistente com o valor de k.

Regra 4.8 (Redundˆancia da contagem) Uma condi¸c˜ao baseada em agrega¸c˜ao por contagem n˜ao filtrada, cujo valor de c ´e sobreposto pelo valor de k, n˜ao acrescenta signifi- cado ao operador ckNN de uma sele¸c˜ao por similaridade sobre uma rela¸c˜ao com k tuplas

ou mais e pode ser eliminada. Em c-conds n˜ao filtradas, o valor de c ´e sobreposto por k quando: θ ´e ‘=’ e c = k; ou θ ´e ‘6=’ e c 6= k; ou θ ´e ‘>’ e c < k; ou θ ´e ‘≥’ e c ≤ k; ou θ ´e ‘≤’ e c ≥ k; ou θ ´e ‘<’ e c > k. Nesses casos, ´e v´alida a express˜ao a seguir:

¨

σSckNN[δ,∆,k,COUNT(∗)θc] Q(R) ⇔ ¨σSckNN[δ,∆,k] Q(R) (4.15)

A Regra 4.8 n˜ao se aplica caso a c-acond seja filtrada. Entretanto, existem casos particulares de sobreposi¸c˜ao entre c e k que s˜ao interessantes para a reescrita de consultas, pois permitem antecipar `a sele¸c˜ao por similaridade uma sele¸c˜ao convencional e eliminar a c-acond, conforme mostram as regras 4.9 e 4.10 apresentadas a seguir.

Regra 4.9 (Convers˜ao de c-conds com sobreposi¸c˜ao em t-conds) Uma sele¸c˜ao por similaridade envolvendo um operador ckNN, cuja condi¸c˜ao ´e uma condi¸c˜ao baseada

em agrega¸c˜ao por contagem filtrada por uma condi¸c˜ao tcond, pode ser antecipada por uma sele¸c˜ao convencional cuja express˜ao condicional ´e tcond se o valor de c for sobreposto pelo valor de k. Em c-aconds filtradas, o valor de c ´e sobreposto por k quando: θ ´e ‘≥’ e c = k; ou θ ´e ‘>’ e c = k − 1. Nesses casos, ´e v´alida a express˜ao a seguir:

¨

σSckNN[δ,∆,k,COUNT(∗,tcond)θc] Q(R) ⇔ ¨σSckNN[δ,∆,k,tcond] Q(R) (4.16)

Regra 4.10 (Convers˜ao de c-conds filtrantes em t-conds) Uma sele¸c˜ao por simi- laridade envolvendo um operador ckNN, cuja condi¸c˜ao ´e uma condi¸c˜ao baseada em

agrega¸c˜ao por contagem filtrada por uma condi¸c˜ao tcond, pode ser antecipada por uma sele¸c˜ao convencional cuja express˜ao condicional ´e a nega¸c˜ao de tcond se a ca-cond for filtrante e se a condi¸c˜ao de filtragem tcond for avaliada como verdadeira ou falsa para todas as tuplas da rela¸c˜ao de entrada. Uma ca-cond ´e filtrante quando tcond n˜ao ´e nula,

θ ∈ {=, ≤} e c = 0 ou quando tcond n˜ao ´e nula, θ = ‘<’ e c = 1. Nesses casos, ´e v´alida a express˜ao a seguir:

¨

σSckNN[δ,∆,k,COUNT(∗,tcond)θc] Q(R) ⇔ ¨σSckNN[δ,∆,k,¬tcond] Q(R) (4.17)

Note-se que a Regra 4.10 n˜ao ´e v´alida se existir a possibilidade da condi¸c˜ao tcond ser avaliada como unknown (desconhecido) para alguma tupla, o que pode ocorrer se a condi¸c˜ao envolver atributos que aceitam valores nulos. A regra seguir trata da nega¸c˜ao de c-conds.

Regra 4.11 (Nega¸c˜ao de c-conds) Uma ck-NNq restritra por uma condi¸c˜ao baseada

em agrega¸c˜ao por contagem, cuja condi¸c˜ao de filtragem tcond ´e avaliada como verda- deira ou falsa para todas as tuplas da rela¸c˜ao de entrada1, pode ser transformada em

uma ck-NNq restrita pela nega¸c˜ao dessa condi¸c˜ao. A nega¸c˜ao de c-conds ´e dada pela

equivalˆencia a seguir: ¨

σSckNN[δ,∆,k,COUNT(∗,tcond)≥c] Q(R) ⇔ ¨σSckNN[δ,∆,k,COUNT(∗,¬tcond)<(k−c+1)] Q(R) (4.18)

De forma geral, n˜ao existem equivalˆencias das regras apresentadas nesta subse¸c˜ao para o operadorck-NN quando a condi¸c˜ao ´e baseada em agrega¸c˜ao por contagem de distintos

(cd-acond ). Sele¸c˜oes por similaridade envolvendo um operador ckNN restrito por uma

cd-acond tˆem pouqu´ıssimas propriedades para reescrita de consultas. Uma exce¸c˜ao ´e se o atributo agAtr ´e uma chave candidata da rela¸c˜ao de entrada, o que torna o modificador DISTINCT dispens´avel. Este caso particular ´e enunciado na regra a seguir.

Regra 4.12 (Redundˆancia da contagem de distintos) Uma ck-NNq restrita por

uma condi¸c˜ao baseada em agrega¸c˜ao por contagem de distintos n˜ao filtrada, cujo atributo de agrega¸c˜ao agAtr ´e uma chave candidata da rela¸c˜ao de entrada, pode ser transformada em uma ck-NNq restrita por uma condi¸c˜ao baseada em agrega¸c˜ao por contagem, pois,

garantidamente, todas as tuplas de R tem valores diferentes para agAtr. Neste caso, ´e v´alida a express˜ao a seguir:

¨

σSckNN[δ,∆,k,COUNT(DISTINCT(agAtr),tcond)θc] Q(R) ⇔ ¨σSckNN[δ,∆,k,COUNT(∗,tcond))θc] Q(R)

(4.19) Vale ressaltar que, nos casos em que a regra da redundˆancia da contagem de distintos ´e v´alida, por transitividade as regras v´alidas envolvendo c-aconds, apresentadas anteri- ormente, tamb´em s˜ao v´alidas. O modificador DISTINCT tamb´em altera o significado da nega¸c˜ao de uma condi¸c˜ao baseada em agrega¸c˜ao por contagem. Em se tratando de cd-aconds, n˜ao ´e v´alida uma regra semelhante `a Regra 4.11, a menos que o atributo de

1

agrega¸c˜ao seja chave candidata da rela¸c˜ao de entrada. Esta observa¸c˜ao ´e fundamentada na Express˜ao 4.20: ¨ σSckNN[δ,∆,k,COUNT(DISTINCT(agAtr),tcond)≥c] Q(R) < σ¨S ckNN[δ,∆,k,COUNT(DISTINCT(agAtr),¬tcond)<(k−c+1))] Q(R) (4.20)

pois o lado esquerdo da express˜ao indica que o resultado deve incluir ao menos c tuplas que satisfazem tcond e tenham valores distintos para agAtr, enquanto o lado direito da express˜ao apenas imp˜oe que o resultado deve ter menos de (k − c + 1) tuplas que n˜ao satisfazem tcond e que tem valores distintos para agAtr. Ou seja, o lado direito da ex- press˜ao n˜ao trata da quantidade de tuplas satisfazendo tcond e com valores distintos para agAtr, podendo at´e mesmo n˜ao retornar nenhuma tupla que satisfaz tcond, contradizendo a condi¸c˜ao indicada no lado esquerdo da express˜ao.

4.3.3

Regras

Alg´ebricas

Envolvendo

Condi¸c˜oes

Baseadas

em

Agrega¸c˜ao por Soma ou por M´edia

As consultas aos vizinhos mais pr´oximos estendidas com condi¸c˜oes baseadas em agrega¸c˜ao por soma e m´edia tˆem poucas propriedades que podem ser utilizadas para reescrita de consultas. A ´unica regra relevante para estes tipos de condi¸c˜oes, definida a se- guir, ´e baseada na observa¸c˜ao que as defini¸c˜oes de m´edia e soma s˜ao correlacionadas (m´edia = soma/contagem), se a condi¸c˜ao de agrega¸c˜ao n˜ao ´e filtrada.

Regra 4.13 (Equivalˆencia entre agrega¸c˜ao por soma e por m´edia n˜ao filtradas) Uma condi¸c˜ao baseada em agrega¸c˜ao por m´edia n˜ao filtrada pode ser transformada em uma condi¸c˜ao baseada em agrega¸c˜ao por soma n˜ao filtrada, e vice-versa, em uma sele¸c˜ao por similaridade sobre uma rela¸c˜ao com k tuplas ou mais envolvendo o operador ckNN,

isto ´e:

¨

σSckNN[δ,∆,k,AVG(agAtr)θc] Q(R) ⇔ ¨σSckNN[δ,∆,k,SUM(agAtr)θ(k·c)] Q(R) (4.21)

Note-se que, se a condi¸c˜ao baseada em agrega¸c˜ao por m´edia (ou por soma) ´e filtrada (tcond n˜ao nula), a Regra 4.13 n˜ao ´e v´alida. O motivo ´e que n˜ao se sabe a priori o valor da contagem de tuplas que satisfazem tcond no resultado da consulta. Sabe-se, apenas, que esse valor ´e menor ou igual a k, o que n˜ao ´e suficiente para tornar a regra v´alida.

4.3.4

Regras

Alg´ebricas

Envolvendo

Condi¸c˜oes

Baseadas

em

Agrega¸c˜ao por M´ınimo ou por M´aximo

Esta se¸c˜ao apresenta as regras alg´ebricas para a sele¸c˜ao por similaridade envolvendo um operador ckNN restrito por uma condi¸c˜ao baseada em agrega¸c˜ao por m´ınimo ou por

Regra 4.14 (Convers˜ao de min-acond em tcond ) Uma condi¸c˜ao baseada em agrega¸c˜ao por m´ınimo, cujo operador θ ´e ‘>’ ou ‘≥’, pode ser transformada em uma condi¸c˜ao baseada em tupla em uma sele¸c˜ao por similaridade. Isto ´e, s˜ao v´alidas as equivalˆencias 4.22 e 4.23, respectivamente se tcond ´e nula na min-acond e se tcond n˜ao ´e nula na min-acond:

¨

σSckNN[δ,∆,k,MIN(agAtr)θc] Q(R) ⇔ ¨σSckNN[δ,∆,k,(agAtr=NULL)∨(agAtrθc)] Q(R) (4.22)

¨

σSckNN[δ,∆,k,MIN(agAtr,tcond)θc] Q(R) ⇔ ¨σSckNN[δ,∆,k,(tcond∧((agAtr=NULL)∨(agAtrθc)))∨(¬tcond)] Q(R)

(4.23) Observe-se que na Equivalˆencia 4.22 a condi¸c˜ao equivalente `a min- acond ´e uma disjun¸c˜ao de duas condi¸c˜oes baseadas em tupla: a primeira htcond ∧ ((agAtr = NULL) ∨ (agAtrθc))i que considera as tuplas que satisfazem a condi¸c˜ao de filtragem tcond e, portanto, cujo m´ınimo valor para o atributo agAtr deve ser c (ou ent˜ao agAtr ´e nulo); e a segunda h¬tcondi para incluir as tuplas que n˜ao satis- fazem a condi¸c˜ao de filtragem da fun¸c˜ao de agrega¸c˜ao. Uma observa¸c˜ao semelhante pode ser feita considerando-se a Equivalˆencia 4.23. Uma exce¸c˜ao `a Regra 4.14, considerando a Equivalˆencia 4.22, ocorre se o valor do atributo agAtr for nulo para todas as tuplas da rela¸c˜ao de entrada. Neste caso, a ck-NNq com a condi¸c˜ao baseada em agrega¸c˜ao

por m´ınimo retorna uma rela¸c˜ao vazia e a rela¸c˜ao retornada pela ck-NNq com condi¸c˜ao

baseada em tupla n˜ao ´e vazia. Outra exce¸c˜ao `a Regra 4.14 considera a Equivalˆencia 4.23, caso todas as tuplas da rela¸c˜ao de entrada que satisfazem a condi¸c˜ao de filtragem tcond tenham valor nulo para o atributo agAtr.

Uma propriedade interessante da regra da convers˜ao de min-acond em tcond ´e que uma sele¸c˜ao por similaridade envolvendo o operador ckNN restrito por uma min-acond

pode ser convertida em uma sele¸c˜ao convencional, cuja express˜ao condicional ´e a condi¸c˜ao baseada em tupla equivalente `a min-acond, seguida por uma sele¸c˜ao por similaridade com um operadorckNN com condi¸c˜ao nula. Isto ´e dado pelas equivalˆencias 4.24 e 4.25, obtidas,

respectivamente, a partir das equivalˆencias 4.22 e 4.23, por transitividade pela Regra 4.5. ¨

σSckNN[δ,∆,k,MIN(agAtr)θc] Q(R) ⇔ ¨σSckNN[δ,∆,k] Q(σ(agAtr=NULL)∨(agAtrθc)(R)) (4.24)

¨

σSckNN[δ,∆,k,MIN(agAtr,tcond)θc] Q(R) ⇔ ¨σSckNN[δ,∆,k] Q(σ(tcond∧((agAtr=NULL)∨(agAtrθc)))∨(¬tcond)(R))

(4.25) Regra 4.15 (Convers˜ao de min-acond em c-acond ) Uma condi¸c˜ao baseada em agrega¸c˜ao por m´ınimo, cujo operador θ ´e ‘≤’ ou ‘<’, pode ser transformada em uma condi¸c˜ao baseada em agrega¸c˜ao por contagem em uma sele¸c˜ao por similaridade. Isto ´e,

s˜ao v´alidas as equivalˆencias 4.26 e 4.27, respectivamente se a condi¸c˜ao tcond ´e nula na min-acond e se tcond n˜ao ´e nula na min-acond:

¨

σSckNN[δ,∆,k,MIN(agAtr)θc] Q(R) ⇔ ¨σSckNN[δ,∆,k,COUNT(∗,agAtrθc)≥1] Q(R) (4.26)

¨

σSckNN[δ,∆,k,MIN(agAtr,tcond)θc] Q(R) ⇔ ¨σSckNN[δ,∆,k,COUNT(∗,tcond∧(agAtrθc))≥1] Q(R) (4.27)

Analisando-se a Equivalˆencia 4.26, nota-se que a c-acond do operadorckNN da sele¸c˜ao

por similaridade `a direita na equivalˆencia indica que o resultado deve incluir ao menos uma tupla cujo valor de agAtr seja maior (ou igual) a c. ´E essa observa¸c˜ao que garante que o valor m´ınimo para agAtr no resultado seja maior (ou igual) a c, como especificado na min-acond da consulta `a esquerda na equivalˆencia. Um racioc´ınio semelhante aplica-se `a Equivalˆencia 4.27. A regras 4.16 e 4.17, apresentadas a seguir, s˜ao equivalentes `as regras 4.14 e 4.15, mas considerando condi¸c˜oes baseadas em agrega¸c˜ao por m´aximo.

Regra 4.16 (Convers˜ao de max-acond em tcond ) Uma condi¸c˜ao baseada em agrega¸c˜ao por m´aximo, cujo operador θ ´e ‘<’ ou ‘≤’, pode ser transformada em uma condi¸c˜ao baseada em tupla em uma sele¸c˜ao por similaridade. Isto ´e, s˜ao v´alidas as equivalˆencias 4.28 e 4.29, respectivamente se tcond ´e nula na max-acond e se tcond n˜ao ´e nula na max-acond:

¨

σSckNN[δ,∆,k,MAX(agAtr)θc] Q(R) ⇔ ¨σSckNN[δ,∆,k,(agAtr=NULL)∨(agAtrθc)] Q(R) (4.28)

¨

σSckNN[δ,∆,k,MAX(agAtr,tcond)θc] Q(R) ⇔ ¨σSckNN[δ,∆,k,(tcond∧((agAtr=NULL)∨(agAtrθc)))∨(¬tcond)] Q(R)

(4.29) Regra 4.17 (Convers˜ao de max-cond em c-acond ) Uma condi¸c˜ao baseada em agrega¸c˜ao por m´aximo, cujo operador θ ´e ‘≥’ ou ‘>’, pode ser transformada em uma condi¸c˜ao baseada em agrega¸c˜ao por contagem em uma sele¸c˜ao por similaridade. Isto ´e, s˜ao v´alidas as equivalˆencias 4.30 e 4.31, respectivamente se tcond ´e nula na max-acond e se tcond n˜ao ´e nula na max-acond:

¨

σSckNN[δ,∆,k,MAX(agAtr)θc] Q(R) ⇔ ¨σSckNN[δ,∆,k,COUNT(∗,agAtrθc)≥1] Q(R) (4.30)

¨

σSckNN[δ,∆,k,MAX(agAtr,tcond)θc] Q(R) ⇔ ¨σSckNN[δ,∆,k,COUNT(∗,tcond∧(agAtrθc))≥1] Q(R) (4.31)

As regras 4.14, 4.15, 4.16 e 4.17 mostram que as principais varia¸c˜oes de min-aconds e max-aconds podem ser representadas utilizando outros tipos de condi¸c˜oes restringindo o operadorckNN em uma sele¸c˜ao por similaridade. Os casos que escapam a essas regras s˜ao

as exce¸c˜oes citadas e as consultas que utilizam min-aconds ou max-aconds, cujo operador θ ´e ‘=’ ou ‘6=’, que tˆem aplica¸c˜ao pr´atica limitada. Desta forma, as condi¸c˜oes baseadas em agrega¸c˜ao por m´ınimo e m´aximo s˜ao convenientes para representar consultas, contudo pouco aumentam o poder de expressividade do operador ckNN.