Você está na página 1de 8

EnsinAR: FERRAMENTA DIDTICA 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 converso de expresses escritas em lgebra relacional para a SQL (Structured Query Language). A expresso resultante em SQL ento exibida e executada, e seu resultado apresentado em um grid. A ferramenta dotada de um compilador desenvolvido utilizando-se o GALS (Gerador de Analisadores Lxicos e Sintticos), que converte as expresses de lgebra relacional para SQL, e a execuo das consultas e gerenciamento das relaes e atributos criados durante a utilizao feita atravs 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, Projeo, Seleo, Produto Cartesiano, Juno, Unio, Interseo, Diferena, Incluso, Excluso, Diviso

1 Introduo A lgebra relacional uma linguagem de consultas procedural. Consiste em um conjunto de operaes tendo como entrada uma ou duas relaes e produzindo, como resultado, uma nova relao. usada para manipular relaes em banco de dados relacionais. A algebra relacional possui operaes fundamentais, que so select, project, unio, atribuio, produto cartesiano e nomeao. Atravs das operaes bsicas podem ser definidas novas operaes, nas quais encontramos interseo, juno, diviso, juno natural e atribuio. Uma das aplicaes da lgebra relacional est na formao da SQL (Structured Query Language). A SQL hoje um padro na realizao de consultas em bancos de dados, em razo da sua simplicidade e facilidade de uso. A SQL foi criada originalmente pela IBM, e sua padronizao foi feita pela American National Standards Institute (ANSI) em 1986 e pelo

International Organization for Standardization (ISO) em 1987. Foi revista em 1992 e verso deu-se o nome de SQL-92. Outras revises 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 Jnior como aluno do Curso de Cincia da Computao da FUOM, em Formiga Verde-MG. O EnsinAR vem complementar essa lista, incluindo algumas funcionalidades no presentes nas duas primeiras, e utilizando ambiente de gerenciamento de relaes e realizao de consultas diferentes e com ferramenta livre.

2 Fundamentao Terica

2.1. lgebra Relacional A lgebra relacional uma linguagem de consultas formal, porm procedural. Consiste em um conjunto de operaes tendo como operando uma ou duas relaes e produzindo, como resultado, uma nova relao. Assim sendo a relao resultante pode tornar-se um operando de uma outra operao. As operaes fundamentais na lgebra relacional so seleo, projeo, unio, diferena e produto cartesiano. Alm dessas operaes fundamentais existem algumas outras operaes renomeao, interseo, juno natural, diviso, e atribuio, que so definidas em termos das operaes fundamentais. As operaes seleo, projeo e renomeao so chamadas de operaes unrias, pois operam sobre uma nica relao. As outras trs operaes fundamentais operam um par de relaes e so portanto chamadas de operaes binrias. As operaes de unio , diferena e interseo devem ser compatveis de unio. Tanto os operandos como o resultado das operaes da lgebra relacional so uma relao, portanto o resultado das operaes est suscetvel a ser aplicado a qualquer operao da lgebra.

2.1.1. Operao Seleo A operao seleo retorna um subconjunto de tuplas que satisfaam um determinado predicado, usando a letra grega sigma () para denotar seleo. O predicado aparece subscrito letra . O argumento da relao dado entre parnteses, seguindo o predicado. Para especificar o predicado, pode-se usar operadores relacionais (>, >=, <.<=,=) e conectivos lgicos (,,). 2.1.2. Operao Projeo

A operao projeo usada para obter determinados atributos de uma relao. A operao executada em apenas uma relao e o resultado uma nova relao contendo apenas os atributos especificados, eliminando-se as eventuais duplicidades entre as tuplas. denotada pela letra grega pi () e so listados, subscritos a letra , os atributos exibidos no resultado. O argumento da relao vem a seguir entre parnteses.

2.1.3. Operao Unio A operao de unio cria uma relao partindo de outras duas, levando as tuplas comuns e no-comuns a ambas. Desta forma, aparecero no resultado somente linhas nicas de uma ou outra relao e as informaes duplicadas aparecero somente uma vez. A operao somente possvel caso as relaes de origem possuam compatibilidade de unio, ou seja, possuam o mesmo grau e atributos correspondentes definidos num domnio comum. 2.1.4. Operao Diferena A operao diferena entre conjuntos, denotada por -, permite encontrar as tuplas que esto no primeiro operando, mas no no segundo. A operao de diferena no comutativa. Ela exige que as relaes operandos sejam unio- compatveis.

2.1.5. Operao Produto Cartesiano

A operao produto cartesiano permite combinar informaes de duas relaes quaisquer. No resultado para cada tupla da primeira relao haver a combinao com todas as tuplas da segunda relao ou vice-versa. 2.1.6. Operao Renomeao A operao renameao, representada pela letra minscula grega rho (), permite renomear uma relao com outro nome, permitindo desta forma o uso desta como primeiro operando (nome original) e segundo operando (nome alternativo) de uma operao binria, ou viceversa. Desta forma, o resultado apresentar o nome qualificado do primeiro e segundo operandos. Permite tambm renomear atributos. 2.1.7. Operao de Interseo A relao criada pela operao interseo ser o resultado de todas as tuplas que pertenam a ambas as relaes presentes na operao. A operao de interseo usa o smbolo entre os nomes das relaes envolvidas. Ela comutativa, isto , r s equivalente a s r. Porm, no uma operao fundamental e no imprime maior poder lgebra relacional. Simplesmente mais conveniente escrever r s que r (r s). Exige que as relaes operandos sejam unio-compatveis. 2.1.8. Operao Juno A operao de juno utilizada para combinar tuplas de duas relaes que atendam o predicado de juno especificado partindo dos atributos comuns a ambas. O resultado conter os atributos das duas relaes que esto participando da juno. A operao de extrema importncia em bancos de dados relacionais, pois atravs dela que permitida a realizao de relacionamentos.

2.1.9. Operao Juno Natural A operao juno natural uma operao binria que permite combinar as operaes de seleo e produto cartesiano dentro de uma nica operao. A operao de juno natural gera como resultado uma relao composta por todos os atributos da primeira relao mais os atributos da segunda relao, exceto aqueles usados na clusula de juno. A clusula de juno determinada implicitamente pela igualdade dos atributos comuns das duas relaes. O resultado apresentado no repete as colunas em comum, ou seja, apresenta todas as colunas da primeira relao mais as colunas da Segunda relao no usadas na juno. 2.1.10. Operao Diviso Dadas duas relaes R e S, com grau m e n respectivamente, esta operao apresentar como resultado uma relao com grau (m-n). A operao de diviso, 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 projeo de todos os atributos da primeira relao exceto aqueles presentes no divisor. No um operao bsica da lgebra relacional, podendo ter o resultado obtido por uma combinao das operaes bsicas. 2.2. Structured Query Language (SQL) Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas linguagens destinadas sua manipulao. O Departamento de Pesquisas da IBM, desenvolveu a SQL como forma de interface para o sistema de BD relacional denominado SYSTEM R, incio dos anos 70. Em 1986, o American National Standard Institute ( ANSI ), publicou um padro SQL. Numerosos Sistemas Gerenciadores de Banco de Dados suportam a linguagem SQL. A SQL estabeleceu-se como a linguagem padro de banco de dados relacional. Embora existam diversas verses, com algumas diferenas entre elas, a estrutura da SQL se mantm inalterada desde a sua criao. 2.2.1. As partes da linguagem SQL A linguagem SQL pode ser dividida nas seguintes partes: Data Definition Language (DDL) (Linguagem de Definio de Dados): A SQL DDL fornece comandos para definio e modificao de esquemas de relao, remoo de relaes e criao de ndices. Os principais comandos que fazem parte da DDL so: CREATE, ALTER e DROP; Data Manipulation Language (DML) (Linguagem de Manipulao de Dados). A SQL DML inclui uma linguagem de consulta baseada na lgebra relacional e no clculo relacional. Compreende tambm comandos para inserir, remover e modificar tuplas em um banco de dados. Os comandos bsicos da DML so: SELECT, INSERT, UPDATE e DELETE; Data Control Language (DCL) (Linguagem de Controle de Dados). o conjunto de comandos que fazem o cadastramento de usurios e determina seu nvel de privilgio

para os objetos do banco de dados. Os principais comandos so: GRANT, REVOKE e TRIGGER; Transactions control (Controle de Transaes). A SQL inclui comandos para especificao do incio e fim das transaes (ROLLBACK e SAVEPOINT). Diversas implementaes permitem o trancamento explcito de dados para o controle de concorrncia (COMMIT).

2.3. Linguagens Formais e Compiladores O processo de compilao de um programa passa por duas partes: a anlise e a sntese. A parte da anlise divide o programa-fonte nas partes constituintes e cria uma representao intermediria do mesmo. A de sntese constri o programa-alvo desejado, a partir da representao intermediria. Das duas, a sntese requer as tcnicas mais especializadas. A anlise do programa-fonte dividida em trs fases: Anlise lxica; Anlise sinttica; Anlise semntica; Gerao de cdigo.

3. EnsinAR: Ferramenta Didtica 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.

.
Expresso em lgebra Relacional Compilador Expresso em SQL SGBD

Expresso em SQL

Figura 1 Diagrama de Funcionamento da Ferramenta 3.1. Mdulo Compilador Ao receber um comando em lgebra relacional, a ferramenta o coloca como entrada em um compilador. O comando passa pelos analisadores lxico, sinttico e semntico, e se passar por essa fase realizada a sua converso para SQL. Para o desenvolvimento do compilador usou-se o Gerador de Analisadores Lxicos e Sintticos (GALS), desenvolvido por Carlos Eduardo Gesser como trabalho de concluso de curso de Cincias da Computao. (GESSER, Carlos Eduardo. GALS: Gerador de Analisadores Lxicos e Sintticos. UFSC, 2003). Durante o desenvolvimento a gramtica

passou por inmeras alteraes para melhor se adaptar execuo das operaes da lgebra relacional e incluso de operaes da lgebra no previstas para implementao na proposta inicial do projeto. A partir da gramtica gerou-se os procedimentos de anlise lxica, sinttica e semntica em linguagem Java, para serem usados em ambiente de desenvolvimento. O compilador realiza duas passadas sobre as instrues executadas. A primeira serve para verificar a existncia de atributos e relaes, e suas informaes auxiliam a anlise semntica na verificao de erros.

2.2. Interface de Manipulao de Relaes Para a execuo de comandos em lgebra relacional, preciso que anteriormente sejam criadas relaes. Para isso, desenvolveu-se uma interface que possibilita ao usurio as opes de criar e visualizar as relaes. As relaes so 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 mquina onde desenvolveu-se o projeto e o acesso ao banco de dados pela ferramenta feito atravs de driver ODBC. Na figura 2 mostrada a interface de manipulao das relaes, onde possvel selecionar uma relao e visualizar seus atributos, com seus respectivos nome e tipo, alm de permitir que as relaes sejam apagadas do banco de dados usado pela ferramenta. Essas informaes sobre as relaes e os atributos so armazenadas em duas tabelas chamadas Relaes e Atributos, respectivamente.

Figura 2 Interface para Visualizao das Relaes

2.3. Interface de Execuo das Consultas em lgebra Relacional A figura 3 mostra a interface de execuo das consultas. Para escrever os comandos da lgebra relacional, que usam letras gregas, adaptou-se uma fonte j existente do Windows, substituindo alguns caracteres por essas letras. Para cada operao da lgebra relacional associou-se um boto, que ao ser pressionado escreve no prompt de execuo o smbolo

correspondente operao. As relaes e os atributos disponveis para as consultas esto disponveis em dois comboboxes e seus nomes pode ser copiados para o prompt de execuo. Internamente no analisador, cada operao entrada atravs dos smbolos convertida em uma palavra, que ser o token a ser relacionado. Ao se iniciar a execuo, o comando em lgebra relacional convertido em SQL pelo compilador, e no apresentando nenhum erro lxico, sinttico ou semntico, o comando em SQL exibido ao usurio, executado pelo gerenciador de banco de dados e seu resultado exibido na tela. Entre os erros semnticos previstos na anlise semntica do comando em lgebra relacional, pode-se citar atributo ou relao inexistente, incompatibilidade de unio, interseo, diferena ou juno entre os operandos e incompatibilidade entre atributos e valores em operaes de comparao.

Figura 3 Interface de Execuo das Consultas

3. Concluses
Os objetivos propostos no incio do desenvolvimento da ferramenta foram alcanados. O EnsinAR ser baste til nas aulas das disciplinas de bancos de dados dos cursos de Cincias da Computao e Sistemas de Informao, pois os sistemas de bancos de dados relacionais no permitem ao usurio manipular os dados em nvel 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 execuo de consultas, e por sua vez a SQL tem como uma de suas bases a lgebra relacional. O desenvolvimento da ferramenta tambm alcanou o objetivo proposto de aprimorar conhecimentos nas reas de compiladores em virtude da necessidade de criao de uma gramtica para reconhecimento dos comandos da lgebra relacional e o desenvolvimento do compilador, e de banco de dados, em virtude da necessidade de execuo de consultas

de forma a tentar explorar todas as possveis combinaes dos comandos da lgebra relacional e a sua converso para a SQL. 4. Referncias Bibliogrficas

1. Silberschatz, Abraham; Kort, Henry F. e Sudarshan, S. Sistema de Banco de Dados. Makron Books, So Paulo. 3 ed. 1999. p. 69-100, 109-144. 2. Aho, Alfred V.; Sethi, Ravi e Ullman, Jeffrey D. Compiladores, Princpios, Tcnicas e Ferramentas. LTC, Rio de Janeiro. Original: ingls.. p. 1-4. 3. Furtado, Olinto Jos Varela. Transparncias das aulas de Linguagens Formais e Compiladores. Departamento de Informtica e Estatstica, Curso de Bacharelado em Cincias da Computao, UFSC. Cap. 1. 4. Rezende, Ricardo. lgebra Relacional Parte I. Linguagem de Consulta Formal. SQL Magazine. Disponvel 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. Disponvel em: < http://www.sqlmagazine.com.br/Colunistas/RicardoRezende/04_AlgebraRelacional_P2.a sp> Acesso em 24 nov. 2004. 6. Cocco, Adriana Pereira. A Linguagem <http://main.unicruz.edu.br/~adriana/bd/aula11.html> Acesso em 27 maio 2005. 7. Cocco, Adriana Pereira. A Linguagem <http://main.unicruz.edu.br/~adriana/bd/aula12.html> Acesso em 27 maio 2005. SQL.

SQL.

8. Elmastri, Ramez; Navathe, Shamkant B. Sistemas de Banco de Dados Fundamentos e Aplicaes. 3 ed.LTC Editora, Rio de Janeiro, [19-?], p.174-230. 9. Pereira Jnior, Moacir; Soares, Marinalva Dias. Uma Ferramenta para Simulao 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. < http://www.dca.fee.unicamp.br/cursos/EA876/apostila/HTML/node37.html > Acesso em fevereiro 2007

Você também pode gostar