• Nenhum resultado encontrado

EnsinAR: FERRAMENTA DIDÁTICA PARA O ENSINO DE ÁLGEBRA RELACIONAL

N/A
N/A
Protected

Academic year: 2021

Share "EnsinAR: FERRAMENTA DIDÁTICA PARA O ENSINO DE ÁLGEBRA RELACIONAL"

Copied!
8
0
0

Texto

(1)

EnsinAR:

FERRAMENTA DIDÁTICA PARA O ENSINO DE ÁLGEBRA

RELACIONAL

Ederson Luiz Paes

Resumo

O EnsinAR é uma ferramenta para o apoio do ensino de álgebra relacional e banco de dados. Baseia-se na conversão de expressões escritas em álgebra relacional para a SQL (Structured Query Language). A expressão resultante em SQL é então exibida e executada, e seu resultado é apresentado em um grid. A ferramenta é dotada de um compilador desenvolvido utilizando-se o GALS (Gerador de Analisadores Léxicos e Sintáticos), que converte as expressões de álgebra relacional para SQL, e a execução das consultas e gerenciamento das relações e atributos criados durante a utilização é feita através do gerenciador de Banco de dados SQL Server Express, da Microsoft.

Abstract

The EnsinAR is an instrument for supporting the teaching of the relational algebra in the database. Which relate to the conversion of the algebra symbols for a SQL ( Structured Query Language).The consequence in SQL has been demanded and executed , its result has been demanded and is introduced in one grid. The instrument is endowed for the compiler which has been develop to make use of the GALS (Generator of Analysts Lexicon and Syntactic), that changes into the expressions of the relational algebra for SQL, and execution of the queries and management of attributes created during the used the use is made through of data base management system SQL Served Express, of Microsoft.

Palavras Chave:

Banco de dados, Álgebra Relacional, SQL, Compilador, Projeção, Seleção, Produto Cartesiano, Junção, União, Interseção, Diferença, Inclusão, Exclusão, Divisão

1 – Introdução

A álgebra relacional é uma linguagem de consultas procedural. Consiste em um conjunto de operações tendo como entrada uma ou duas relações e produzindo, como resultado, uma nova relação. É usada para manipular relações em banco de dados relacionais.

A algebra relacional possui operações fundamentais, que são select, project, união, atribuição, produto cartesiano e nomeação. Através das operações básicas podem ser definidas novas operações, nas quais encontramos interseção, junção, divisão, junção natural e atribuição.

(2)

International Organization for Standardization (ISO) em 1987. Foi revista em 1992 e ä versão deu-se o nome de SQL-92. Outras revisões aconteceram em 1999 e 2003.

Poucas ferramentas implementam a algebra relacional. Entre elas encontram-se duas gratuitas, a LEAP (http://leap.sourceforge.net) e a dbTools (http://www.cc.gatech.edu/computing/Database/dbTools/), e o Simular, desenvolvido por Manoel Pereira Júnior como aluno do Curso de Ciência da Computação da FUOM, em Formiga Verde-MG. O EnsinAR vem complementar essa lista, incluindo algumas funcionalidades não presentes nas duas primeiras, e utilizando ambiente de gerenciamento de relações e realização de consultas diferentes e com ferramenta livre.

2 – Fundamentação Teórica

2.1. Álgebra Relacional

A álgebra relacional é uma linguagem de consultas formal, porém procedural. Consiste em um conjunto de operações tendo como operando uma ou duas relações e produzindo, como resultado, uma nova relação. Assim sendo a relação resultante pode tornar-se um operando de uma outra operação.

As operações fundamentais na álgebra relacional são seleção, projeção, união, diferença e produto cartesiano. Além dessas operações fundamentais existem algumas outras operações – renomeação, interseção, junção natural, divisão, e atribuição, que são definidas em termos das operações fundamentais.

As operações seleção, projeção e renomeação são chamadas de operações unárias, pois operam sobre uma única relação. As outras três operações fundamentais operam um par de relações e são portanto chamadas de operações binárias. As operações de união , diferença e interseção devem ser compatíveis de união.

Tanto os operandos como o resultado das operações da álgebra relacional são uma relação, portanto o resultado das operações está suscetível a ser aplicado a qualquer operação da álgebra.

2.1.1. Operação Seleção

A operação seleção retorna um subconjunto de tuplas que satisfaçam um determinado predicado, usando a letra grega sigma (σ) para denotar seleção. O predicado aparece subscrito à letra σ. O argumento da relação é dado entre parênteses, seguindo o predicado. Para especificar o predicado, pode-se usar operadores relacionais (>, >=, <.<=,=) e conectivos lógicos (∧,∨,¬).

2.1.2. Operação Projeção

(3)

2.1.3. Operação União

A operação de união cria uma relação partindo de outras duas, levando as tuplas comuns e não-comuns a ambas. Desta forma, aparecerão no resultado somente linhas únicas de uma ou outra relação e as informações duplicadas aparecerão somente uma vez. A operação somente é possível caso as relações de origem possuam compatibilidade de união, ou seja, possuam o mesmo grau e atributos correspondentes definidos num domínio comum.

2.1.4. Operação Diferença

A operação diferença entre conjuntos, denotada por -, permite encontrar as tuplas que estão no primeiro operando, mas não no segundo. A operação de diferença não é comutativa. Ela exige que as relações operandos sejam união- compatíveis.

2.1.5. Operação Produto Cartesiano

A operação produto cartesiano permite combinar informações de duas relações quaisquer. No resultado para cada tupla da primeira relação haverá a combinação com todas as tuplas da segunda relação ou vice-versa.

2.1.6. Operação Renomeação

A operação renameação, representada pela letra minúscula grega rho (ρ), permite renomear uma relação com outro nome, permitindo desta forma o uso desta como primeiro operando (nome original) e segundo operando (nome alternativo) de uma operação binária, ou vice-versa. Desta forma, o resultado apresentará o nome qualificado do primeiro e segundo operandos. Permite também renomear atributos.

2.1.7. Operação de Interseção

A relação criada pela operação interseção será o resultado de todas as tuplas que pertençam a ambas as relações presentes na operação. A operação de interseção usa o símbolo ∩ entre os nomes das relações envolvidas. Ela é comutativa, isto é, r ∩ s é equivalente a s ∩ r. Porém, não é uma operação fundamental e não imprime maior poder à álgebra relacional. Simplesmente é mais conveniente escrever r ∩ s que r – (r – s). Exige que as relações operandos sejam união-compatíveis.

2.1.8. Operação Junção

(4)

2.1.9. Operação Junção Natural

A operação junção natural é uma operação binária que permite combinar as operações de seleção e produto cartesiano dentro de uma única operação. A operação de junção natural gera como resultado uma relação composta por todos os atributos da primeira relação mais os atributos da segunda relação, exceto aqueles usados na cláusula de junção. A cláusula de junção é determinada implicitamente pela igualdade dos atributos comuns das duas relações. O resultado apresentado não repete as colunas em comum, ou seja, apresenta todas as colunas da primeira relação mais as colunas da Segunda relação não usadas na junção.

2.1.10. Operação Divisão

Dadas duas relações R e S, com grau m e n respectivamente, esta operação apresentará como resultado uma relação com grau (m-n).

A operação de divisão, simbolizada por ÷, é usada nas consultas nas quais se exige que todos os valores dos atributos do divisor estejam presentes no dividendo. Produz como resultado a projeção de todos os atributos da primeira relação exceto aqueles presentes no divisor. Não é um operação básica da álgebra relacional, podendo ter o resultado obtido por uma combinação das operações básicas.

2.2. “Structured Query Language” (SQL)

Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas linguagens destinadas à sua manipulação. O Departamento de Pesquisas da IBM, desenvolveu a SQL como forma de interface para o sistema de BD relacional denominado SYSTEM R, início dos anos 70. Em 1986, o “American National Standard Institute” ( ANSI ), publicou um padrão SQL.

Numerosos Sistemas Gerenciadores de Banco de Dados suportam a linguagem SQL. A SQL estabeleceu-se como a linguagem padrão de banco de dados relacional. Embora existam diversas versões, com algumas diferenças entre elas, a estrutura da SQL se mantém inalterada desde a sua criação.

2.2.1. As partes da linguagem SQL

A linguagem SQL pode ser dividida nas seguintes partes:

• “Data Definition Language” (DDL) (Linguagem de Definição de Dados): A SQL DDL fornece comandos para definição e modificação de esquemas de relação, remoção de relações e criação de índices. Os principais comandos que fazem parte da DDL são: CREATE, ALTER e DROP;

• “Data Manipulation Language” (DML) (Linguagem de Manipulação de Dados). A SQL DML inclui uma linguagem de consulta baseada na álgebra relacional e no cálculo relacional. Compreende também comandos para inserir, remover e modificar tuplas em um banco de dados. Os comandos básicos da DML são: SELECT, INSERT, UPDATE e DELETE;

(5)

para os objetos do banco de dados. Os principais comandos são: GRANT, REVOKE e TRIGGER;

• “Transactions control” (Controle de Transações). A SQL inclui comandos para especificação do início e fim das transações (ROLLBACK e SAVEPOINT). Diversas implementações permitem o trancamento explícito de dados para o controle de concorrência (COMMIT).

2.3. Linguagens Formais e Compiladores

O processo de compilação de um programa passa por duas partes: a análise e a síntese. A parte da análise divide o programa-fonte nas partes constituintes e cria uma representação intermediária do mesmo. A de síntese constrói o programa-alvo desejado, a partir da representação intermediária. Das duas, a síntese requer as técnicas mais especializadas. A análise do programa-fonte é dividida em três fases:

• Análise léxica; • Análise sintática; • Análise semântica; • Geração de código.

3. EnsinAR: Ferramenta Didática para o Ensino de Álgebra Relacional

A ferramenta é composta de um compilador, que recebe comandos em álgebra relacional, converte em SQL e apresenta o resultado da consulta, gerado por um gerenciador de banco de dados. A figura 1 apresenta um diagrama que representa o funcionamento da ferramenta.

.

Figura 1 – Diagrama de Funcionamento da Ferramenta

3.1. Módulo Compilador

Ao receber um comando em álgebra relacional, a ferramenta o coloca como entrada em um compilador. O comando passa pelos analisadores léxico, sintático e semântico, e se passar por essa fase é realizada a sua conversão para SQL.

Para o desenvolvimento do compilador usou-se o Gerador de Analisadores Léxicos e Sintáticos (GALS), desenvolvido por Carlos Eduardo Gesser como trabalho de conclusão de curso de Ciências da Computação. (GESSER, Carlos Eduardo. GALS: Gerador de Analisadores Léxicos e Sintáticos. UFSC, 2003). Durante o desenvolvimento a gramática

(6)

passou por inúmeras alterações para melhor se adaptar à execução das operações da álgebra relacional e inclusão de operações da álgebra não previstas para implementação na proposta inicial do projeto. A partir da gramática gerou-se os procedimentos de análise léxica, sintática e semântica em linguagem Java, para serem usados em ambiente de desenvolvimento.

O compilador realiza duas passadas sobre as instruções executadas. A primeira serve para verificar a existência de atributos e relações, e suas informações auxiliam a análise semântica na verificação de erros.

2.2. Interface de Manipulação de Relações

Para a execução de comandos em álgebra relacional, é preciso que anteriormente sejam criadas relações. Para isso, desenvolveu-se uma interface que possibilita ao usuário as opções de criar e visualizar as relações. As relações são criadas em forma de tabelas do gerenciador de banco de dados Microsoft SQL Server Express. Para acessar o banco de dados, instalou-se o gerenciador na máquina onde desenvolveu-se o projeto e o acesso ao banco de dados pela ferramenta feito através de driver ODBC.

Na figura 2 é mostrada a interface de manipulação das relações, onde é possível selecionar uma relação e visualizar seus atributos, com seus respectivos nome e tipo, além de permitir que as relações sejam apagadas do banco de dados usado pela ferramenta. Essas informações sobre as relações e os atributos são armazenadas em duas tabelas chamadas

Relações e Atributos, respectivamente.

Figura 2 –Interface para Visualização das Relações

2.3. Interface de Execução das Consultas em Álgebra Relacional

(7)

correspondente à operação. As relações e os atributos disponíveis para as consultas estão disponíveis em dois comboboxes e seus nomes pode ser copiados para o prompt de execução.

Internamente no analisador, cada operação entrada através dos símbolos é convertida em uma palavra, que será o token a ser relacionado. Ao se iniciar a execução, o comando em álgebra relacional é convertido em SQL pelo compilador, e não apresentando nenhum erro léxico, sintático ou semântico, o comando em SQL é exibido ao usuário, executado pelo gerenciador de banco de dados e seu resultado é exibido na tela.

Entre os erros semânticos previstos na análise semântica do comando em álgebra relacional, pode-se citar atributo ou relação inexistente, incompatibilidade de união, interseção, diferença ou junção entre os operandos e incompatibilidade entre atributos e valores em operações de comparação.

Figura 3 – Interface de Execução das Consultas

3. Conclusões

Os objetivos propostos no início do desenvolvimento da ferramenta foram alcançados. O EnsinAR será baste útil nas aulas das disciplinas de bancos de dados dos cursos de Ciências da Computação e Sistemas de Informação, pois os sistemas de bancos de dados relacionais não permitem ao usuário manipular os dados em nível de álgebra. Assim sendo, auxiliará no aprendizado tanto da álgebra relacional como no uso de bancos de dados relacionais, uma vez que esses usam a SQL como linguagem de execução de consultas, e por sua vez a SQL tem como uma de suas bases a álgebra relacional.

(8)

de forma a tentar explorar todas as possíveis combinações dos comandos da álgebra relacional e a sua conversão para a SQL.

4. Referências Bibliográficas

1. Silberschatz, Abraham; Kort, Henry F. e Sudarshan, S. Sistema de Banco de Dados. Makron Books, São Paulo. 3 ed. 1999. p. 69-100, 109-144.

2. Aho, Alfred V.; Sethi, Ravi e Ullman, Jeffrey D. Compiladores, Princípios, Técnicas e Ferramentas. LTC, Rio de Janeiro. Original: inglês.. p. 1-4.

3. Furtado, Olinto José Varela. Transparências das aulas de Linguagens Formais e Compiladores. Departamento de Informática e Estatística, Curso de Bacharelado em Ciências da Computação, UFSC. Cap. 1.

4. Rezende, Ricardo. Álgebra Relacional – Parte I. Linguagem de Consulta Formal. SQL Magazine. Disponível em: < http://www.sqlmagazine.com.br/Colunistas/RicardoRezende/04_AlgebraRelacional_P1.a sp> Acesso em 24 nov. 2004.

5. Rezende, Ricardo. Álgebra Relacional – Parte II. Linguagem de Consulta Formal. SQL Magazine. Disponível em: < http://www.sqlmagazine.com.br/Colunistas/RicardoRezende/04_AlgebraRelacional_P2.a sp> Acesso em 24 nov. 2004.

6. Cocco, Adriana Pereira. A Linguagem SQL.

<http://main.unicruz.edu.br/~adriana/bd/aula11.html> Acesso em 27 maio 2005.

7. Cocco, Adriana Pereira. A Linguagem SQL.

<http://main.unicruz.edu.br/~adriana/bd/aula12.html> Acesso em 27 maio 2005.

8. Elmastri, Ramez; Navathe, Shamkant B. Sistemas de Banco de Dados – Fundamentos e Aplicações. 3 ed.LTC Editora, Rio de Janeiro, [19-?], p.174-230.

9. Pereira Júnior, Moacir; Soares, Marinalva Dias. Uma Ferramenta para Simulação de Consultas em Álgebra Relacional. Revista SQL Magazine, [s.l.], 2003, p. 14-16.

10. DbTools 2000. <http://www-static.cc.gatech.edu/computing/Database/dbTools/ > Acesso em fevereiro 2007.

11. “LEAP RDBMS, An educational relational database management system” <http://main.unicruz.edu.br/~adriana/bd/aula12.html> Acesso em fevereiro 2007.

12. DEITEL, H.M.; DEITEL, P.J. Java Como Programar. 4 ed. Bookman, Porto Alegre, 2003. 1386 p.

13. Compiladores. <

Referências

Documentos relacionados

tabela.nome_colula. Optou-se então por construir um template que expressa um comando SQL, e com o auxílio de uma pilha o mesmo é preenchido durante a visitação da

2) Buscar o nome e o endereço dos pacientes que não residem na Rua I.. 3) Mostre todos os médicos que não preencheram a data

UNIP – SBD – Álgebra Relacional – Prof.Antonio A.Palladino Notamos que como nossa operação é um produto cartesiano temos como resultado o produto das linhas das duas tabelas,

Apesar de não se tratar de ferramenta para aprendizagem de álgebra relacional, por ser já utilizada pelos autores no ensino e aprendizagem de banco de dados, serviu

Para obter os alunos que não têm inscrições basta fazer a diferença entre o conjunto completo de alunos e o conjunto de alunos que têm alguma inscrição.. Ou seja, se retirarmos do

Disponibilizar um editor gráfico para construção de árvores de expressões algébricas.. Fazer a conversão das árvores de expressões algébricas em

de software, Qualidade de software; Banco de dados relacional: Modelo de dados relacional: conceitos, álgebra de relações, dependência funcional e formas normais.. Sistema

A ferramenta EasyRA, desenvolvida na linguagem Java, ´e composta de um m´odulo compilador, que tem como entrada as express˜oes em ´algebra relacional ou consultas SQL dependendo do