Artigo SQL Magazine 6 - Uma ferramenta para simulação de consultas em álgebra relacional

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Artigo da Revista SQL Magazine -Edição 6.

Atenção: por essa edição ser muito antiga não há arquivo PDF para download.
Os artigos dessa edição estão disponíveis somente através do formato HTML.

Clique aqui para ler todos os artigos desta edição

Uma ferramenta para simulação de consultas em álgebra relacional

 

Manoel Pereira Júnior, Marinalva Dias Soares

{aguia, marinalva}@facic.fuom.br

 

No curso de ciência da computação o aluno normalmente estuda a álgebra relacional, uma linguagem de consulta formal utilizada para obter dados de um modelo relacional. A SQL é uma implementação dessa linguagem.

Uma das dificuldades no ensino da álgebra relacional é que poucas ferramentas a implementam - podemos citar duas gratuitas: a LEAP (http://leap.sourceforge.net) e a dbTools (http://www.cc.gatech.edu/ computing/Database/dbTools/).

O propósito deste artigo é apresentar a ferramenta SIMULAR – Simulador de Álgebra Relacional – que está sendo desenvolvida, desde março deste ano, por Manoel Pereira Júnior, aluno do quarto ano do curso de Ciência da Computação da FUOM, em Formiga (MG), sob a orientação da professora Marinalva Dias Soares. De modo geral, o SIMULAR permite a edição, execução e simulação de consultas escritas em álgebra relacional. A ferramenta ainda está em nível de protótipo e sua conclusão está prevista para novembro. Após o lançamento da versão 1.0 seus fontes serão disponibilizados gratuitamente e as pessoas interessadas poderão dar continuidade no seu desenvolvimento.

 

Arquitetura básica do SIMULAR

 

O SIMULAR está sendo desenvolvido em Delphi e possui atualmente três módulos principais:

 

1)     avaliação léxica e sintática da consulta escrita em álgebra relacional (tarefa semelhante à realizada por um compilador);

2)     conversão da consulta escrita em álgebra para comandos SQL;

3)     criação do banco de dados, esquemas e atualização dos dados.

 

A arquitetura básica do SIMULAR pode ser vista na Figura 1. O usuário pode criar as consultas diretamente em álgebra relacional. A consulta é validada  e a expressão algébrica é convertida para SQL. Após a execução do SQL, o SGBD retorna o resultado para a aplicação (por enquanto o SIMULAR trabalha apenas com o InterBase).

Para reproduzir os caracteres especiais da álgebra relacional na interface do aplicativo foi utilizado o software Font Creator Program versão 4.0 (www.high-logic.com). Os caracteres especiais foram adicionados a uma fonte já existente no sistema (Arial TTF).

 

 

Figura 1 – Arquitetura básica do SIMULAR.

 

Operação do SIMULAR

 

O usuário pode se conectar a um banco já existente ou criar uma base de dados nova através do próprio aplicativo. Operações como inserção, alteração e exclusão também podem ser feitas através da ferramenta.

A Figura 2 mostra a tela principal do SIMULAR. O lado esquerdo exibe as tabelas com seus respectivos atributos. O centro é dividido em três áreas: uma para criação da consulta, outra para escolha do tipo de simulação e uma para visualização dos resultados. O lado direito contém uma barra de botões com os símbolos da álgebra relacional (não foram utilizados símbolos para funções agregadas). A consulta pode ser formulada inteiramente com o mouse.

Figura 2. Tela principal do simular.

 

O SIMULAR transforma uma consulta em álgebra relacional em um ou vários blocos de comandos SQL. Cada um desses blocos é executado separadamente, permitindo a visualização dos resultados intermediários.

Por exemplo, com base nas tabelas da figura 3, considere a solicitação: “para todos os empregados cujo salário é maior do que 1.400 reais, mostrar o nome e a cidade em que trabalham”. A consulta poderia ser a seguinte:

pnome_empregado, cidade(ssalario > 1400(trabalha     companhia))

 

Figura 3. Tabelas de exemplo.

 

Existem três formas de visualizar o resultado desta pesquisa:

 

1) Resultado final: a expressão é transformada em um único comando SQL. Ao escolher essa opção, somente o botão de execução da consulta fica habilitado. 

 

2) Passo-a-passo automático: permite a execução da consulta passo a passo. Esse recurso permite a visualização dos resultados intermediários, que são mostrados automaticamente de acordo com o tempo de espera definido na tela principal. 

A expressão que está sendo executada no momento é destacada em vermelho. Observe na figura 2 que a tabela exibida na caixa de visualização é o resultado do produto cartesiano que aparece em destaque.

O usuário pode pausar ou interromper a execução a qualquer momento. O resultado final pode ser visualizado na figura 4.

  

             Figura 4. Resultado Final.

 

3) Passo-a-passo manual: essa opção é semelhante à anterior, exceto pelo fato de que não obedece um intervalo de tempo entre um passo e outro. O aluno pode avançar ou retroceder quantas vezes quiser na mesma consulta, sem precisar executá-la novamente. Essa interação é feita através dos botões de navegação da tela principal e os resultados intermediários são exibidos na caixa de visualização.

 

Conclusão

 

A principal vantagem do SIMULAR, se comparado às ferramentas citadas no início do artigo, é a exibição passo a passo da construção da consulta. Esse recurso ajuda o aluno no aprendizado da SQL, educando-o de forma que ele possa otimizar consultas com mais facilidade. A ferramenta ainda salva cada comando SQL gerado em um arquivo, logo após a conversão da expressão algébrica.

A desvantagem é que o SIMULAR roda apenas na plataforma Windows, ao contrário das ferramentas citadas, que possuem versões para vários sistemas.

 

Bibliografia

 

GARCIA-MOLINA, H., ULLMAN, J. D., WIDON, J. Implementação de Sistemas de Bancos de Dados. Campus, 2001.

SILBERSCHATZ, A., KORTH, H. F., SUDARSHAN, S. Sistema de Banco de Dados. Makron Books, 1999.

ELMASRI, R.; NAVATHE, S. Fundamentals of Database Systems. Benjamin Cummings, 2000.

 

BOX: Álgebra Relacional

 

As operações da álgebra relacional são divididas em dois grupos: o primeiro inclui o conjunto de operações da teoria dos conjuntos: união, interseção, diferença e produto cartesiano.

O segundo consiste de operações desenvolvidas especificamente para bancos de dados relacionais: seleção, projeção, junção e divisão.

Todas as operações são representadas por um símbolo. A tabela 1 mostra o equivalente SQL para cada um deles.

 

Tabela 1 –Álgebra relacional X SQL.

 

Álgebra Relacional

Definição

SQL

p

Projeção (retorna somente os campos especificados)

SELECT

s

Seleção

WHERE

È,  Ç e -

União, interseção e diferença

UNION, INTERSECT e EXCEPT

?

Renomeia campos e tabelas

Corresponde à renomeação de atributos nas cláusulas SELECT e FROM

 

X

Produto Cartesiano

Corresponde à lista de tabelas em uma cláusula FROM

 

Junção

JOIN

Junção externa à esquerda

LEFT OUTER JOIN

Junção externa à direita

RIGHT OUTER JOIN

Junção externa total

FULL OUTER JOIN

Ù

E

AND

Ú

OU

OR

 

Vejamos alguns exemplos de consultas algébricas:

 

1) “mostrar os dados de todos os funcionários do sexo feminino 

 

ssexo=’F’(funcionário)

 

 O símbolo s (sigma) é usado para denotar a operação de seleção. Essa operação retorna todos os campos. A mesma consulta escrita em SQL seria:

 

select * from funcionário where sexo = ‘F’

 

2) “mostre o nome e o número de todos os funcionários do sexo feminino

 

pnome, numerofuncionário (ssexo=’F’(funcionário))

 

Observe que a projeção é utilizada para limitar a quantidade de campos retornados. A mesma consulta em SQL seria:

 

SELECT nome, numerofuncionario FROM funcionário WHERE sexo=’F’

 

3) Para ilustrar o uso de junções, considere o esquema:

 

Devedor = (NomeDevedor,NumeroEmprestimo)

Emprestimo = (Agencia, NumeroEmprestimo, TotalEmprestimo)

 

A consulta é: “mostrar o nome das pessoas que possuem empréstimo acima de cinco mil reais na agência ‘nosso banco’ “

 

pnomedevedor (stotalemprestimo>5000  Ù agencia=’nosso banco’(devedor       emprestimo))

 

A mesma consulta em SQL poderia ser:

 

SELECT d.nomedevedor

FROM devedor d

  JOIN emprestimo e ON (d.numeroemprestimo=e.numeroemprestimo)

WHERE e.totalemprestimo > 5000

  AND e.agencia=’nosso banco’

  

Referência

 

GGARCIA –MOLINA, H., ULLMAN, J. D., WINDON, J. Implementação de Sistemas de bancos de Dados. Campus, 2001.

 

SILBERSCHATZ, A., KORTH, H. F., DARSHAN, S. Sistema de Banco de Dados. Makron Books, 1999.

 

ELMASRI, R.; NAVATHE, S. Fundamentals of Database Systems. Benjamin Cummings, 2000.

 

 Autor

 

Manoel Pereira junior

(agua@facic.fuom.br)  aluno do quarto ano do curso de Ciência da Computação – FACIC/FUOM – MG.

 

Marinalva Dias Soares

(marinalva@facic.fuom.br) Mestre em Ciência da Computação – USP – São Carlos -, atualmente professora das disciplinas de Engenharia de Software e Banco de Dados na FACIC/FUOM – Formiga, MG.

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?