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:
- avaliação léxica e sintática da consulta escrita em álgebra relacional (tarefa semelhante à realizada por um compilador);
- conversão da consulta escrita em álgebra para comandos SQL;
- 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).
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.
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))
Existem três formas de visualizar o resultado desta pesquisa:
- 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.
-
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.
- 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.
Á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:
-
“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’
-
“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'
-
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.