Artigo SQL Magazine 6
Revista: SQL Magazine 6

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 e a 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).

Arquitetura básica do SIMULAR
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.

Tela principal do simular
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))
Tabelas de exemplo
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.

    Resultado Final
    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.

Á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
Junção JOIN
_|X| Junção externa à esquerda LEFT OUTER JOIN
|X|_ Junção externa à direita RIGHT OUTER JOIN
_|X|_ Junção externa total FULL OUTER JOIN
Ù E AND
Ú Ú 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.