Divisão no Relax

Divisão no Relax

por Gustavo Cayres -
Número de respostas: 2

Professora,

Estava fazendo o exercício 4 pelo Relax e estou com um problema ao usar o operador de Divisão. O resultado da divisão não é o que eu esperava e, quando tentei fazer a operação usando pi, X, e - como explicado nos slides, o resultado saiu correto. A divisão no Relax é diferente da que nós aprendemos?

Muito Obrigado

Em resposta à Gustavo Cayres

Re: Divisão no Relax

por Kelly Rosa Braghetto -

Oi, Gustavo.

Parece que há um problema na implementação feita no Relax para o operador de divisão. triste

Fiz uns testes aqui e notei que a divisão só funciona quando a resposta esperada para a operação é uma relação com apenas um atributo.  Por exemplo, com o BD de exemplo abaixo, o Relax fornece o resultado correto para a divisão t2 ÷ t1, que é {(1)}.

---------------------------------------
group: teste1

t1 = {
c2:number, c3:number
2 , 3
4 , 5
}

t2 = {
c1:number, c2:number, c3:number
1 , 2 , 3
1 , 4 , 5
2 , 2 , 3
}
---------------------------------------


Já para o BD abaixo, a mesma divisão t2 ÷ t1 não apresenta o resultado correto. A resposta esperada para t2 ÷ t1 nesse caso é {(1,6)}, mas o Relax mostra conjunto vazio. triste

---------------------------------------
group: teste2

t1 = {
c2:number, c3:number
2 , 3
4 , 5
}

t2 = {
c1:number, c2:number, c3:number, c5:number
1 , 2 , 3 , 6
1 , 4 , 5 , 6
2 , 2 , 3 , 6
}
---------------------------------------

Esse mesmo problema parece ocorrer também na ferramenta Relational.

 

Nos usos do operador de divisão no exercício 4, dá para você especificar consultas cujo o resultado da divisão tem apenas um atributo (aí é possível testá-las com o Relax).

Mas se você já conseguiu testar a sua  resposta substituindo a divisão pelos operadores pi, X, e -, então está bom também!  sorriso

Kelly