Você está na página 1de 63

UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CINCIAS EXATAS E NATURAIS CURSO DE CINCIA DA COMPUTAO BACHARELADO

SISTEMA PARA APRENDIZADO DE LGEBRA RELACIONAL E LINGUAGEM SQL

ANDR MARTINS DOS SANTOS

BLUMENAU 2010 2010/2-07

ANDR MARTINS DOS SANTOS

SISTEMA PARA APRENDIZADO DE LGEBRA RELACIONAL E LINGUAGEM SQL

Trabalho de Concluso de Curso submetido Universidade Regional de Blumenau para a obteno dos crditos na disciplina Trabalho de Concluso de Curso II do curso de Cincia da Computao Bacharelado. Prof. Roosevelt dos Santos Junior, Orientador

BLUMENAU 2010 2010/2-07

SISTEMA PARA APRENDIZADO DE LGEBRA RELACIONAL E LINGUAGEM SQL

Por

ANDR MARTINS DOS SANTOS

Trabalho aprovado para obteno dos crditos na disciplina de Trabalho de Concluso de Curso II, pela banca examinadora formada por:

Presidente:

______________________________________________________ Prof. Roosevelt dos Santos Junior, Orientador, FURB ______________________________________________________ Prof. Mauro Marcelo Mattos, Doutor FURB ______________________________________________________ Prof. Marcos Rogrio Cardoso, Especialista FURB

Membro:

Membro:

Blumenau, 9 de dezembro de 2010

Dedico este trabalho a minha famlia e todos os amigos, especialmente aqueles que me incentivaram para realizao deste.

AGRADECIMENTOS

A Deus, pela sade. minha me, Sumara, pelo apoio e pacincia. Aos meus amigos, pelos empurres e cobranas. Ao meu orientador, Roosevelt, por ter acreditado na concluso deste trabalho.

A curiosidade mais importante do que o conhecimento. Albert Einstein

RESUMO

Este trabalho descreve o projeto e o desenvolvimento de uma ferramenta educacional voltada para o ensino de lgebra relacional, permitindo que sejam construdos planos de consulta na forma de rvores de expresso algbricas. Os planos de consultas so transformados em linguagem SQL e podem ser executados nos bancos de dados Oracle XE e MySQL 5.5. O desenvolvimento do trabalho foi realizado utilizando a linguagem Java verso 6 em conjunto como compilador Eclipse. O acesso ao banco de dados foi obtido atravs do driver JDBC. Palavras-chave: Banco de dados. lgebra relacional. Software de ensino.

ABSTRACT

This work shows the design and development of an educational tool focused on the teaching relational algebra concepts, allowing them to be constructed query plans in the form of algebric expression trees. The query plans are transformed into SQL and can run on Oracle Database XE and MySQL 5.5. The development work was performed using the Java version 6 compiler and Eclipse together. Access to the database was obtained through the JDBC driver. Key-words: Database. Relational algebra. Teaching software.

LISTA DE ILUSTRAES

Quadro 1 As operaes unio, interseco e diferena. a) Duas relaes de unio compatveis. b) ALUNO INSTRUTOR. c) ALUNO INSTRUTOR. d) ALUNO

INSTRUTOR. e) INSTRUTOR ALUNO ....................................................... 19

Quadro 2 Exemplo do operador produto cartesiano.............................................................. 20 Quadro 3 Exemplo do operador rebatizar.............................................................................. 21 Quadro 4 Exemplo do operador seleo................................................................................ 22 Quadro 5 Exemplo do operador projeo.............................................................................. 22 Quadro 6 Exemplo do operador juno................................................................................. 23 Quadro 7 Exemplo do operador agrupamento sem funo de grupo (a) e com funo de grupo (b) ................................................................................................................ 24 Quadro 8 Exemplo do operador ordenao ........................................................................... 25 Quadro 9 Exemplo de expresso algbrica............................................................................ 25 Figura 2 Exemplo de rvore de expresso algbrica ............................................................. 26 Quadro 10 Comando select .............................................................................................. 27 Figura 2 rvore de expresso algbrica ................................................................................ 27 Quadro 11 Comando select correspondente ................................................................... 28 Figura 3 - Interface da ferramenta EnsinAR ............................................................................ 29 Figura 4 - Interface da ferramenta iDFQL................................................................................ 30 Figura 5 Diagrama de casos de uso ....................................................................................... 32 Quadro 12 Cenrios do UC01 ............................................................................................... 33 Quadro 13 Cenrios do UC02 ............................................................................................... 33 Quadro 14 Cenrios do UC03 ............................................................................................... 34 Figura 7 Diagrama de pacotes ............................................................................................... 35 Figura 8 Diagrama de classes pacote View............................................................................ 36 Figura 9 Diagrama de classes pacote Controller............................................................ 37 Figura 10 Diagrama de classes pacote Model...................................................................... 38 Figura 11 Diagrama de classes pacote AR ............................................................................ 39 Quadro 20 Mtodo getSchemas........................................................................................ 41 Quadro 21 Mtodo loadTables........................................................................................ 41 Quadro 22 Mtodos genSqlQueryCommand e postOrder.......................................... 42

Quadro 23 Passo 1 da gerao do comando SQL.................................................................. 43 Quadro 24 Passo 2 da gerao do comando SQL.................................................................. 43 Quadro 25 Cdigo fonte referente ao passo 3 ....................................................................... 44 Quadro 26 Passo 3 da gerao do comando SQL.................................................................. 44 Quadro 27 Passo 4 da gerao do comando SQL.................................................................. 45 Figura 6 Diagrama de casos de uso 02 .................................................................................. 45 Quadro 15 Modelo de dados para os casos de uso 5, 6, 7 e 8 ............................................... 46 Quadro 16 Cenrios do UC05 ............................................................................................... 47 Quadro 17 Cenrios do UC06 ............................................................................................... 48 Quadro 18 Cenrios do UC07 ............................................................................................... 49 Quadro 19 Cenrios do UC08 ............................................................................................... 50 Figura 12 Realizar login ........................................................................................................ 51 Figura 13 Apresentao das reas da ferramenta .................................................................. 52 Figura 14 Execuo dos passos 1, 2, 3 e 4 ............................................................................ 53 Figura 15 Execuo do passo 5 ............................................................................................. 54 Figura 16 Execuo dos passos 6, 7, 8, 9 e 10 ...................................................................... 55 Figura 17 Execuo dos passos 11, 12 e 13 .......................................................................... 56 Figura 18 Execuo dos passos 14 e 15 ............................................................................... 57 Figura 19 Resultado do plano de consulta............................................................................. 58 Figura 20 Comando SQL gerado........................................................................................... 59 Quadro 28 Comparativo da ferramenta com os trabalhos correlatos .................................... 60

LISTA DE SIGLAS

BNF Backus-Naur Form GALS Gerador de Analisadores Lxicos e Sintticos IBM International Business Machines JDBC Java Database Connectivity MVC Model View Controller SQL Standard Query Language SGBDR Sistemas Gerenciadores de Bancos de Dados Relacionais SEQUEL Structured English Query Language SDK Software Development Kit UML Unified Modelling Language

LISTA DE SMBOLOS

- unio - interseco - diferena - projeo - seleo - rebatizar - agrupamento - ordenao - produto cartesiano - juno

SUMRIO

1 INTRODUO.................................................................................................................. 15 1.1 OBJETIVOS DO TRABALHO ........................................................................................ 16 1.2 ESTRUTURA DO TRABALHO ...................................................................................... 16 2 FUNDAMENTAO TERICA .................................................................................... 17 2.1 MODELO RELACIONAL ............................................................................................... 17 2.2 LGEBRA RELACIONAL.............................................................................................. 18 2.2.1 Operadores ...................................................................................................................... 18 2.2.2 Unio, interseco e diferena ........................................................................................ 19 2.2.3 Produto Cartesiano .......................................................................................................... 20 2.2.4 Rebatizar ......................................................................................................................... 20 2.2.5 Seleo ............................................................................................................................ 21 2.2.6 Projeo........................................................................................................................... 22 2.2.7 Juno.............................................................................................................................. 23 2.2.8 Operador estendido Agrupamento e Funes Agregadas ............................................... 23 2.2.9 Operador estendido Ordenao ....................................................................................... 24 2.3 EXPRESSES ALGBRICAS ........................................................................................ 25 2.4 RVORES DE EXPRESSES ALGBRICAS .............................................................. 26 2.5 LINGUAGEM SQL .......................................................................................................... 26 2.6 RELAO ENTRE RVORES DE EXPRESSES ALGBRICAS E LINGUAGEM SQL.................................................................................................................................... 27 2.7 TRABALHOS CORRELATOS........................................................................................ 28 2.7.1 EnsinAR .......................................................................................................................... 28 2.7.2 iDFQL ............................................................................................................................. 29 3 DESENVOLVIMENTO.................................................................................................... 31 3.1 ESPECIFICAO ............................................................................................................ 31 3.1.1 Diagrama de casos de uso ............................................................................................... 32 3.1.1.1 UC01 - Realizar login ................................................................................................... 32 3.1.1.2 UC02 Selecionar schema ........................................................................................... 33 3.1.1.3 UC03 Manter arquivo ................................................................................................ 33 3.1.1.4 UC04 Montar rvores de expresso........................................................................... 34 3.1.2 Diagrama de Pacotes ....................................................................................................... 35

3.1.2.1 Pacote View................................................................................................................... 36 3.1.2.2 Pacote Controller.......................................................................................................... 36 3.1.2.3 Pacote Model ................................................................................................................ 37 3.2 IMPLEMENTAO ........................................................................................................ 40 3.2.1 Tcnicas e ferramentas utilizadas.................................................................................... 40 3.2.2 Leitura dos schemas e tabelas ......................................................................................... 40 3.2.3 Gerao dos comandos SQL ........................................................................................... 42 3.2.4 Operacionalidade da implementao .............................................................................. 45 3.2.4.1 UC06 - Recuperar os nomes dos clientes de sexo masculino....................................... 46 3.2.4.2 UC06 - Recuperar os nomes dos clientes que realizaram locao no dia '10/01/2010'. ...................................................................................................................................... 47 3.2.4.3 UC07- Recuperar a quantidade de filmes alugados no dia 11/01/2010........................ 48 3.2.4.4 UC08- Recuperar os clientes que assistiram o filme 'O Poderoso Chefo' mas no assistiram Cidade de Deus. ........................................................................................... 49 3.2.5 Demonstrao da ferramenta........................................................................................... 51 3.3 RESULTADOS E DISCUSSO ...................................................................................... 60 4 CONCLUSES.................................................................................................................. 61 4.1 EXTENSES .................................................................................................................... 62 REFERNCIAS BIBLIOGRFICAS ................................................................................. 63

15 1 INTRODUO

O ensino da linguagem SQL abordado na maioria dos cursos de Cincia da Computao e Sistemas de Informao, conforme pode ser observado abaixo nas diretrizes curriculares destes cursos.
Os tpicos cobertos devem abordar problemas relativos aos dados propriamente ditos (organizao, modelagem, integridade, armazenamento, integrao, distribuio e empacotamento) e aos sistemas de gerenciamento de bancos de dados - SGBD (arquitetura, interfaces, linguagens de interao, processamento de consultas, controle de concorrncia, recuperao, segurana, indexao, gerenciamento de buffers e arquivos). (MINISTRIO DA EDUCAO, 1998, p. 10, grifo nosso).

Em teoria tambm so lecionados os conceitos da lgebra relacional. Consultas construdas em SQL podem tornar-se bastante complexas e combinadas com o alto nvel da linguagem geralmente dificulta a assimilao dos estudantes. Uso da lgebra relacional pode facilitar o aprendizado fornecendo outras maneiras de resoluo e conforme evidenciado por Garcia-Molina, Ullman e Widon (2001, p. 254), Uma das vantagens de usar lgebra relacional que ela torna fcil explorar formas alternativas de uma consulta. Conhecimentos sobre lgebra relacional nos permitem entender a execuo e otimizao de consultas em Sistemas Gerenciadores de Bancos de Dados Relacionais (SGBDR), caracterstica importante apontada por Sumathi e Esakkirajan (2007, p. 72). Em lgebra relacional pode-se especificar consultas utilizando um conjunto de operadores, cada operador possui um smbolo exclusivo e a concatenao de um ou mais operadores sobre uma relao (tabela) formam uma expresso algbrica. Expresses algbricas possuem uma notao bastante abstrata, contudo podem ser representadas graficamente atravs de rvores de expresses. As expresses e rvores de expresses so abordadas e exemplificadas respectivamente nas sees 2.2 e 2.3. Uma alternativa de potencializar o aprendizado seria a unio dos conceitos de lgebra relacional e SQL em uma nica ferramenta. Prope-se ento construir um editor para auxiliar no ensino de lgebra relacional e facilitar a compreenso da linguagem SQL. A ferramenta proposta ser uma opo grfica para a construo de consultas SQL na forma de rvores de expresses. Alm disso, poder contribuir para melhorar o entendimento do funcionamento de um banco de dados. Em sala de aula um software educativo auxilia o professor didaticamente proporcionando resultado rpido e concreto para as questes abordadas. Os alunos interagindo

16 com computador e observando a aplicao prtica da lgebra relacional deixam de levar consigo apenas o conhecimento terico aps o termino da disciplina.

1.1

OBJETIVOS DO TRABALHO

O objetivo deste trabalho disponibilizar um sistema para aprendizado de lgebra relacional e linguagem SQL (Processo bsicos de consulta). Os objetivos especficos do trabalho so: a) disponibilizar um editor grfico para construo de rvores de expresses algbricas; b) realizar a converso das rvores de expresses algbricas em linguagem SQL; c) executar a linguagem SQL nos bancos de dados relacionais Oracle e MySQL.

1.2

ESTRUTURA DO TRABALHO

Este trabalho est estruturado em quatro captulos. O segundo captulo corresponde a fundamentao terica fornecendo base para seu entendimento. O captulo 3 aborda as etapas do desenvolvimento e tambm a especificao da aplicao. Por fim, no captulo 4 apresentado s concluses e as possveis extenses para o mesmo.

17 2 FUNDAMENTAO TERICA

2.1

MODELO RELACIONAL

De acordo com Sumathi e Esakkirajan (2007, p. 67), o modelo relacional utiliza uma coleo de tabelas para representar os dados e os relacionamentos entre esses dados. Tabelas so estruturas lgicas mantidas por um gerente de banco de dados. O modelo relacional composto por trs elementos sendo o primeiro o estrutural, o qual define o banco de dados como uma coleo de relaes. O segundo relacionado integridade dos dados mantido atravs de chaves primarias e estrangeiras e o terceiro referente manipulao dos dados. Dentre as caractersticas do modelo relacional pode-se citar: a) cada linha em uma tabela chamada de tupla; b) cada coluna em uma tabela chamada de atributo; c) a interseco de uma linha com uma coluna deve conter um valor; d) no modelo relacional linhas podem estar em qualquer ordem; e) no modelo relacional colunas podem estar em qualquer ordem; f) por definio todas as linhas em uma tabela so distintas; g) a relao precisa possuir uma chave a qual pode ser um conjunto de atributos; h) para cada coluna de uma tabela deve existir um conjunto de possveis valores chamado de domnio. O domnio contem todos os valores que podem aparecer na coluna; i) j) domnio um conjunto de valores validos para um atributo; o grau de uma relao o numero de atributos (colunas) contidos na relao; relao.

k) a cardinalidade de uma relao o nmero de tuplas (linhas) existentes na

18

2.2

LGEBRA RELACIONAL

Conforme Ramakrishnan (1998, p. 154), lgebra relacional uma das duas linguagens formais de consulta associadas ao modelo relacional. Consultas em lgebra so construdas utilizando uma coleo de operadores. Cada operador aceita uma ou duas relaes como parmetro e retorna uma relao como resultado, esta principal propriedade e torna fcil a composio de consultas complexas. Aplicaes como SGBDRs utilizam a lgebra relacional para representar internamente as consultas SQL construdas por usurios. (GARCIA-MOLINA; ULLMAN; WIDON, 2001, p. 254). Outra caracterstica importante informada por Elmasri e Navathe (2005, p. 106) que a lgebra relacional usada como uma base para desenvolver e otimizar as consultas em SGDBRs.

2.2.1

Operadores

Em relao s operaes utilizadas na lgebra relacional, pode-se defini-las em dois grupos. Um grupo inclui as operaes derivadas da teoria dos conjuntos da matemtica, quais sejam: unio, interseco, diferena e produto cartesiano. O outro grupo compe as operaes desenvolvidas diretamente para os SGBDRs, como seleo, projeo, juno, rebatizar e diviso. (ELMASRI; NAVATHE, 2005, p. 107). Existem ainda os operadores classificados como estendidos ou adicionais como ordenao, funes de agrupamento e agregao. Nas sees subseqentes so apresentados os operadores. Inicialmente so abordados tradicionais, na seqncia os desenvolvidos para SGBDRs e em seguida os que compreendem a lgebra relacional estendida.

19 2.2.2 Unio, interseco e diferena

Elmasri e Navathe (2005, p. 110) descrevem que os operadores unio, interseco e diferena na lgebra relacional clssica tm seu funcionamento igual ao da teoria dos conjuntos da matemtica. Estas so operaes binrias, isto , cada uma aplicada a duas relaes e so definidas da seguinte forma: a) unio: o resultado desta operao, indicada por R S, uma relao que inclui todas as tuplas que esto em R, ou em S, ou em ambas, R e S. As tuplas repetidas so eliminadas; b) interseco: o resultado desta operao indicada por R S, uma relao que inclui todas as tuplas que esto em ambas, R e S; c) diferena: o resultado desta operao indicada por R - S, uma relao que inclui todas as tuplas que esto em R, mas no esto em S. O Quadro 1 demonstra um exemplo de cada uma das operaes. a)
ALUNO PN Susan Ramesh Johnny Barbara Amy Jimmy Ernest UN Yao Shah Kohier Jones Ford Wang Gilbert INSTRUTOR PNOME John Ricardo Susan Francis Ramesh UNOME Smith Browne Yao Johnson Shah

b)

PN Susan Ramesh Johnny Barbara Amy Jimmy Ernest John Ricardo Susan Francis Ramesh

UN Yao Shah Kohier Jones Ford Wang Gilbert Smith Browne Yao Johnson Shah

c)

PN Susan Ramesh

UN Yao Shah

d)
PN Johnny Barbara Amy Jimmy Ernest UN Kohier Jones Ford Wang Gilbert

e)
PNOME John Ricardo Francis UNOME Smith Browne Johnson

Fonte: Elmasri e Navathe, 2005 (2005, p. 112).

Quadro 1 As operaes unio, interseco e diferena. a) Duas relaes de unio compatveis. b) ALUNO INSTRUTOR. c) ALUNO INSTRUTOR. d) ALUNO INSTRUTOR. e) INSTRUTOR
ALUNO

20 Quando qualquer uma das trs operaes for utilizada deve-se tambm respeitar a regra de compatibilidade da unio, ou seja, as duas relaes devem ter o mesmo nmero de atributos e estes devem ser do mesmo tipo.

2.2.3

Produto Cartesiano

Segundo Elmasri e Navathe (2005, p. 112) a operao Produto Cartesiano referenciada pelo smbolo , a mesma tambm atua sobre duas relaes, contudo no necessria a compatibilidade da unio para sua utilizao. Sua funo combinar as tuplas de duas relaes na forma combinatria, desta forma o resultado de R S uma relao Q que ter a soma dos atributos de R e S e o nmero de tuplas igual a quantidade de tuplas de
R

multiplicada pela quantidade de tuplas de S. O Quadro 2 demonstra um exemplo deste


Seja a relao R (a,b) : a 1 2 Seja a relao S (d,e) : d 1 2 O resultado de R S : a 1 1 2 2 b Joo Joo Marcos Marcos d 1 2 1 2 e Maria Claudio Maria Claudio e Maria Claudio b Joo Marcos

operador.

Quadro 2 Exemplo do operador produto cartesiano

2.2.4

Rebatizar

A operao Rebatizar ou rename tem como objetivo rebatizar o nome de uma relao, ou os nomes de seus atributos. Esta tcnica pode auxiliar o uso das operaes como Unio e Juno evitando incompatibilidade de operadores e ambigidade em nomes de atributos. Pode-se aplicar a operao Rebatizar de trs maneiras, sendo elas, S(R),

21
(b1,b2,b3...,bn)(R)

ou S(b1,b2,b3...,bn)(R), onde smbolo (rho) indica a

operao rebatizar, S, o nome da nova relao, e b1,b2...,BN so os novos nomes dos atributos. A primeira expresso rebatiza apenas a relao, a segunda, apenas os atributos da relao R, e a terceira, a relao e seus atributos. (ELMASRI; NAVATHE, 2005, p. 110). O Quadro 3 demonstra um exemplo deste operador.
Seja a relao R (a,b,c) : a b c 1 Joo 20 2 Marcos 21 3 Maria 23 O resultado de (cdigo,nome,idade) (R): cdigo nome idade 1 Joo 20 2 Marcos 21 3 Maria 23 Quadro 3 Exemplo do operador rebatizar

2.2.5

Seleo

O operador Seleo tem como objetivo selecionar um determinado conjunto de tuplas de uma relao respeitando uma condio de seleo. Pode ser visualizada como uma diviso de uma relao em dois conjuntos, aquele conjunto que satisfaa a condio e apresentado, e o conjunto que no satisfaz a condio e descartado. A especificao da operao Seleo tem o formato <condio de seleo> (R) onde smbolo (sigma) indica a operao, e a condio de seleo uma expresso booleana definida a partir dos atributos da relao R. Verifica-se que R no seu formato mais simples diretamente o nome de uma relao do banco de dados, contudo pode ser uma expresso de lgebra relacional cujo resultado uma relao. (ELMASRI; NAVATHE, 2005, p. 107). O Quadro 4 demonstra um exemplo deste operador.

22
Seja a relao R (a,b,c) : a b c 1 Joo 20 2 Marcos 21 3 Maria 23 O resultado de a > 20 (R): a b c 1 Marcos 21 1 Maria 23 Quadro 4 Exemplo do operador seleo

2.2.6

Projeo

O operador Seleo tem como objetivo selecionar um determinado conjunto de atributos (colunas) de uma relao. Pode ser visualizado como uma diviso dos atributos em dois conjuntos, um com os atributos necessrios para a realizao da operao, e outro, com os descartados. A especificao da operao Projeo segue o formato <lista de atributos> (R) onde, o smbolo (pi) indica a operao e, a lista de atributos, informa quais colunas devem ser apresentadas entre aquelas da relao R. Verifica-se que R no seu formato mais simples diretamente o nome de uma relao do banco de dados, contudo pode ser uma expresso de lgebra relacional cujo o resultado uma relao. (ELMASRI; NAVATHE, 2005, p. 109). O Quadro 5 demonstra um exemplo deste operador.
Seja a relao R (a,b,c) : a 1 2 3 O resultado de a,b (R): b c Joo 20 Marcos 21 Maria 23

a b 1 Joo 2 Marcos 3 Maria Quadro 5 Exemplo do operador projeo

23 2.2.7 Juno Theta

A operao Juno Theta utilizada para combinar tuplas relacionadas em duas relaes dentro de uma tupla nica. Pode ser definida por um Produto Cartesiano seguido de uma Seleo. A especificao da operao Juno Theta segue o formato R <condio de juno>
S

onde, o smbolo indica a operao e, a condio de juno, informa quais colunas devem

ser levadas em considerao na combinao das tuplas de R e S. Apenas as tuplas que satisfazem a condio de juno so apresentadas no resultado. Verifica-se que R no seu formato mais simples diretamente o nome de uma relao do banco de dados, contudo pode ser uma expresso de lgebra relacional cujo resultado uma relao (ELMASRI; NAVATHE, 2005, p. 114). O Quadro 6 demonstra um exemplo deste operador.
Seja a relao R (a,b,c) : a 1 2 3 Seja a relao S (d,e) : d 1 2 3 e Vendas Desenvolvimento Recursos Humanos b Joo Marcos Maria c 2 2 3

O resultado de R r.c == s.d S: a b 1 Joo 2 Marcos 3 Maria

c 2 2 3

d 2 2 3

e Desenvolvimento Desenvolvimento Recursos Humanos

Quadro 6 Exemplo do operador juno

2.2.8

Operador estendido Agrupamento e Funes Agregadas

Para agrupar tuplas de uma determinada relao tendo como base seus atributos foi definida uma operao que indicada pelo smbolo (gama), a qual tambm fornece suporte a funes de agregao. A especificao desta operao segue o formato <atributos de agrupamento>

24
<lista de funo> R,

em que <atributos de agrupamento> uma lista de atributos da

relao R, e <lista de funo> uma lista de pares (<funo> <atributo>). Para cada par, <funo> permitida uma das funes matemticas de agrupamento como SOMA(SUM),
MEDIA(AVERAGE), <atributo> MXIMO(MAX), MNIMO(MIN), CONTAR(COUNT)

seguido pelo

da relao definida por R (ELMASRI; NAVATHE, 2005, p. 119). O Quadro 7

demonstra um exemplo deste operador.


Seja a relao R (a,b,c) : a 1 2 3 4 a) O resultado de c (R): c 20 21 23 b) O resultado de c count(b) (R): c b 20 2 21 1 23 1 Quadro 7 Exemplo do operador agrupamento sem funo de grupo (a) e com funo de grupo (b) b c Joo 20 Marcos 21 Maria 23 Carlos 20

2.2.9

Operador estendido Ordenao

Para realizar a ordenao ou classificao de tuplas de uma determinada relao tendo como base seus atributos foi definida uma operao que indicada pelo smbolo (tau). A especificao desta operao segue o formato <lista de atributos> R, em que
<lista de atributos>

uma lista de atributos da relao R indicando a ordem de

classificao que ser aplicada (GARCIA-MOLINA; ULLMAN; WIDON, 2001, p. 269). O Quadro 8 demonstra um exemplo deste operador.

25
Seja a relao R (a,b,c) : a 1 2 3 4 O resultado de b (R): a 3 4 1 2 b Andr Carlos Joo Marcos c 24 20 20 21 b c Joo 20 Marcos 21 Andr 24 Carlos 20

Quadro 8 Exemplo do operador ordenao

2.3

EXPRESSES ALGBRICAS

Conforme apresentado por Elmasri e Navathe (2005, p. 106, grifo do autor), Uma sequncia de operaes de lgebra relacional forma uma expresso de lgebra relacional cujos resultados tambm sero uma relao que representa o resultado de uma consulta de banco de dados (ou solicitao de recuperao). Um exemplo simples de uma expresso de lgebra relacional apresentado no Quadro 9. Neste exemplo foram utilizados dois operadores, a seleo() e projeo (). A seleo tem como objetivo remover linhas de uma relao e a projeo remover colunas.
Seja a relao StarsIn (title,year,starName) : title year starName A caada 1996 Laurence Fishburn A Vida Bela 1997 Roberto Benigni A negociao 1998 Samuel L. Jackson O resultado da expresso algbrica starName ( year = 1996 ( starName,year ( StarsIn))) : starName Laurence Fishburn Quadro 9 Exemplo de expresso algbrica

O fluxo de execuo de uma expresso inicia no comando mais interno. Considerando o exemplo do Quadro 9, processado
starName, year(StarsIn)

ou seja realizada a

projeo das colunas starName e year sobre relao StarsIn. A partir deste resultado, em seguida efetuado o comando
year

= 1996 que consiste na seleo das linhas onde year

igual a 1996. Por fim realizada a projeo da coluna starName.

26

2.4

RVORES DE EXPRESSES ALGBRICAS

Podemos combinar vrios operadores da lgebra relacional em uma expresso aplicando um operador ao(s) resultado(s) de um ou mais operadores diferentes. Desse modo, como para qualquer lgebra, poderemos representar a aplicao de diversos operadores como uma rvore de expresses. As folhas dessa rvore so nomes de relaes, e cada um dos interiores identificado por um operador que faz sentido quando aplicado (s) relao(es) representadas por seu filho ou filhos. (GARCIA-MOLINA; ULLMAN; WIDON, 2001, p. 269, grifo nosso).

Um exemplo de rvore de expresso algbrica apresentado na figura 2 o mesmo corresponde expresso algbrica abordada na seo anterior.

Fonte: Garcia-Molina, Ullman e Widon (2001, p. 373).

Figura 2 Exemplo de rvore de expresso algbrica

2.5

LINGUAGEM SQL

Conforme Ramakrishnan (1998, p. 181), SQL a linguagem de banco de dados mais utilizada comercialmente. Foi originalmente desenvolvida pela International Business Machines (IBM) e inicialmente chamada de Structured English Query Language (SEQUEL) ou linguagem de pesquisa em ingls estruturado, sendo projetada como uma interface para um sistema experimental de um banco de dados relacional. SQL uma linguagem de banco de dados abrangente. A mesma possui comandos para definio, consultas e atualizao. Assim, o comando select e sua declarao bsica,

27 conforme Elmasri e Navathe (2005, p. 157), tem a forma apresentada no Quadro 10.
SELECT <lista de atributos> FROM <lista de tabelas> WHERE <condio> ; onde: <lista de atributos> uma lista com os nomes dos atributos cujos valores sero recuperados; <lista de tabelas> uma lista com os nomes das tabelas que sero necessrias para a realizao da consulta; <condio> uma expresso condicional que identifica quais linhas devem ser recuperadas.
Fonte: adaptado de Elmasri e Navathe (2005, p. 157).

Quadro 10 Comando select

2.6

RELAO ENTRE RVORES DE EXPRESSES ALGBRICAS E LINGUAGEM SQL

As rvores de expresso algbricas definem o plano lgico de consulta que o SGBDR executar, sendo assim as rvores de expresso tem relao direta com o comando select da linguagem SQL (GARCIA-MOLINA; ULLMAN; WIDON, 2001, p. 353). Como abordado por Ramakrishnan (1998, p. 154), a linguagem SQL uma forma especializada de realizar consultas ao SGBDR enquanto consultas em lgebra relacional descrevem passo a passo como ser o procedimento de execuo para atender a uma determinada pergunta. Na Figura 2 apresentada uma rvore de expresso algbrica e no Quadro 11 uma consulta correspondente construda na linguagem SQL.

Fonte: Garcia-Molina, Ullman e Widon (2001, p. 377).

Figura 2 rvore de expresso algbrica

28
SELECT YEAR, MAX(BIRTHDATE) FROM STARSIN,MOVIESTAR WHERE STARNAME = NAME GROUP BY YEAR; Quadro 11 Comando select correspondente

2.7

TRABALHOS CORRELATOS

Em relao a softwares voltados ao ensino de lgebra relacional possvel encontrar trabalhos acadmicos e artigos com esta finalidade. Dentre eles, foram estudados dois. O primeiro, EnsinAR (PAES, 2007), uma ferramenta didtica para o ensino de lgebra relacional e o segundo, iDFQL (APPEL; TRAINA JUNIOR, 2004), uma ferramenta de apoio ao processo de ensino-aprendizagem da lgebra relacional baseado no construcionismo.

2.7.1

EnsinAR

Paes (2007, p. 1) afirma que EnsinAR baseia-se na converso de expresses escritas em lgebra relacional para a linguagem SQL. A expresso resultante em SQL ento exibida e executada. Este trabalho no permite a construo de rvores de expresso algbricas. Para realizar a converso da expresso algbrica para linguagem SQL, o autor desenvolveu um compilador utilizando o Gerador de Analisadores Lxicos e Sintticos (GALS). O compilador tem como entrada a expresso algbrica, analisa lexicamente e sintaticamente o comando e, passando com sucesso, gera o cdigo SQL. Esta ferramenta no possibilita a leitura de um esquema de banco de dados para escolher uma determinada relao. O usurio precisa primeiramente criar as tabelas atravs da prpria aplicao. Aps esta atividade, pode realizar a construo das expresses algbricas.

29

Fonte: Paes (2007, p. 16).

Figura 3 - Interface da ferramenta EnsinAR

A Figura 3 demonstra o uso da ferramenta EnsinAR. Pode-se identificar a expresso algbrica criada no topo da tela e, logo abaixo, o resultado da execuo no banco de dados. O comando SQL gerado a partir da expresso esta apresentado na mensagem no centro da tela.

2.7.2

iDFQL

O principal objetivo de iDFQL, segundo Appel e Traina Junior (2004), combinar o uso de cones para representar os operadores da lgebra relacional e diagramas de fluxo para representar a consulta. Este trabalho apresenta suporte construo de diagramas equivalentes a rvores relacionais, porm, operadores como agregao e ordenao que so amplamente utilizados na linguagem SQL no so suportados. A ferramenta iDFQL modificou operadores da lgebra relacional que necessitam de parmetros para sua execuo, desta forma foram desenvolvidos dois novos operadores

30 chamados respectivamente de Condio e Lista de Atributos. A funo da operao Condio permitir a entrada de regras para que os operadores de juno e seleo possam ser executados. J o operador Lista de Atributos, define um conjunto de colunas para a operao de projeo. A separao da condio de execuo e atributos dos operadores torna a rvore de expresses mais legvel como um todo.

Fonte: Appel e Traina Junior (2004, p. 10).

Figura 4 - Interface da ferramenta iDFQL

A Figura 4 demonstra o uso da ferramenta iDFQL. Pode-se identificar a rvore de expresses criada na tela principal, logo abaixo, o comando SQL gerado e o resultado da execuo no banco de dados na tela a frente.

31 3 DESENVOLVIMENTO

Este captulo descreve as etapas do desenvolvimento da aplicao. So abordados os requisitos, a especificao e o desenvolvimento do mesmo, apontando as tcnicas utilizadas. Por fim, so apresentados os resultados obtidos. Os requisitos apresentados abaixo se encontram classificados em Requisitos Funcionais (RF) e Requisitos No Funcionais (RNF). O sistema dever: a) permitir a construo de rvores de expresso algbricas utilizando drag-and-drop (RF); b) suportar os operadores: Unio, Diferena, Projeo, Seleo, Juno Theta, Produto Cartesiano, Agrupamento/Agregao e Reordenao (RF); c) permitir salvar e editar as rvores construdas (RF); d) transformar as rvores em comandos SQL padro (RF); e) permitir conexo com os bancos de dados Oracle XE e MySQL 6.0 (RF); f) listar as relaes de schemas do banco em que esta conectado (RF); g) executar e apresentar o resultado dos comandos SQL gerados nos bancos de dados Oracle e MySQL (RF); h) utilizar a linguagem de programao Java (RNF); i) utilizar o ambiente de programao Eclipse (RNF).

3.1

ESPECIFICAO

A especificao deste trabalho foi desenvolvida utilizando o diagrama de casos de uso e o diagrama de classes da Unified Modelling Language (UML) , a ferramenta utilizada para a elaborao foi o Enterprise Architec.

32 3.1.1 Diagrama de casos de uso

A Figura 5 demonstra os casos de uso. Nas sees seguintes os mesmos so detalhados atravs de seus respectivos cenrios.

Figura 5 Diagrama de casos de uso

3.1.1.1

UC01 - Realizar login

Este caso de uso descreve como o usurio realizar o login na aplicao. Os dados para o login so referentes conexo com o SGBDR escolhido. O Quadro 12 descreve seus cenrios.

33 UC01 - Realizar login A ferramenta deve estar instalada 1. O usurio aciona a aplicao. 2. O sistema apresenta a tela login. 3. O usurio seleciona o banco informa o nome do banco, usurio e senha e aciona o boto conectar. 4. O sistema realiza a conexo com o banco de dados. 5. O sistema apresenta a mensagem "Conexo realizada com sucesso". No passo 4, caso no for possvel realizar a conexo o sistema exibe a mensagem : Os dados informados para login esto incorretos.". Aplicao conectada ao banco de dados selecionado
Quadro 12 Cenrios do UC01

Pr-condio

Cenrio Principal

Exceo Ps-condio

3.1.1.2

UC02 Selecionar schema

Demonstra como o usurio seleciona um schema do SGDBR conectado. Permite que as relaes possam ser acessadas e utilizadas na confeco das rvores de expresses algbricas. O Quadro 13 descreve seus cenrios. Prcondio Cenrio Principal Exceo Pscondio UC02 Selecionar schema O usurio deve ter executado o UC01. 1. O usurio seleciona um schema na aplicao. 2. O sistema carrega as tabelas na Lista de Relaes. No passo 2, caso no exista tabelas no schema selecionado o sistema apresenta a mensagem "No existem tabelas no schema escolhido". Tabelas carregadas na Lista de Relaes.
Quadro 13 Cenrios do UC02

3.1.1.3

UC03 Manter arquivo

O objetivo desse caso de uso manter os arquivos gerados pela ferramenta. O Quadro 14 descreve seus cenrios.

34 UC03 Manter arquivo O usurio deve ter executado o UC01. Pr-condio 1. O usurio acessa o menu Arquivo e seleciona a opo "Salvar". Cenrio 2. O usurio informa o diretrio e o nome para o arquivo e Principal aciona o boto Ok. 3. O sistema salva o arquivo no diretrio escolhido. 1. No passo 1 do cenrio principal o usurio seleciona a opo "Abrir" do menu "Arquivo". 2. O usurio seleciona o arquivo desejado e aciona o boto "Ok". Cenrio 3. O sistema carrega o arquivo. Alternativo 4. O usurio acessa o menu Arquivo e seleciona a opo "Salvar". 5. O fluxo retorna para o passo 2 do cenrio principal. No passo 2 do cenrio principal, caso o arquivo j foi salvo Exceo em diretrio o sistema no apresenta a tela e atualiza o arquivo. No passo 3 do cenrio alternativo, caso o arquivo selecionado seja invlido o sistema apresenta a mensagem : "O Exceo 1 arquivo escolhido no pode ser carregado pois possui formato invlido". O fluxo retorna para o passo 2. Arquivo salvo no diretrio escolhido. Ps-condio
Quadro 14 Cenrios do UC03

3.1.1.4

UC04 Montar rvores de expresso

O UC04 detalhado atravs dos casos de uso UC05, UC06, UC07 e UC08 apresentados na seo 3.2.4 Operacionalidade da implementao.

35 3.1.2 Diagrama de Pacotes

Esta seo apresenta a arquitetura da aplicao representada atravs do diagrama de pacotes (Figura 7). O desenvolvimento da ferramenta foi baseado no padro MVC (Model View Controller). Conforme a metodologia do MVC, a aplicao composta pelos pacotes Model, View e Controller o pacote Resource comum aos demais pacotes este por sua vez possui classes de constantes, arquivos de configurao e mensagens.

Figura 7 Diagrama de pacotes

36 3.1.2.1 Pacote View

O pacote View agrupa as classes referentes a interface grfica da aplicao, a figura 8 demonstra o diagrama de classes.

Figura 8 Diagrama de classes pacote View

As classes com prefixo Gui seguido de um valor numrico so responsveis pelo desenho das telas, as classes com ps-fixo Action so responsveis pelas aes executadas. A classe AbstractAction define mtodos abstratos para padronizar as classes Action. A classe Gui01 a principal interface da aplicao e composta pela classe
JPanelDrawing. JPanelDrawing

disponibiliza uma rea de desenho onde sero construdas

as rvores de expresso algbricas.

3.1.2.2

Pacote Controller

O pacote Controller contem as classes utilitrias que responsveis por executar tarefas especificas invocadas pelo pacote View. A Figura 9 demonstra o diagrama de classes.

37

Figura 9 Diagrama de classes pacote Controller

A classe DataBaseManager responsvel pelo acesso ao banco de dados, possui mtodos para execuo de consultas e para retornar informaes do banco a qual esta conectado. A classe RelationaAlgebraController tem como objetivo agrupar tarefas relativas a lgebra relacional como exemplo a verificao de compatilidade de unio e criao de operadores como interseco e projeo. Por fim a classe SqlGenerator tem a finalidade realizar a gerao de comandos de consulta na linguagem SQL.

3.1.2.3

Pacote Model

O pacote Model possui as classes de modelo conhecidas como javaBeans e so utilizadas pelos pacotes View e Controller a figura 10 apresenta seu diagrama de classes.

38

Figura 10 Diagrama de classes pacote Model

A classe Schema representa um esquema de banco de dados que por sua vez composto por tabelas, as tabelas so representas pela classe Table e as colunas de cada tabelas so representadas pela classe Column. A classe QueryModel representa a estrutura de um comando de consulta SQL. Para expressar o resultado de uma consulta SQL realizada utilizada a classe
ResultSetModel.

O pacote Model possui um pacote interno chamado AR, esse contem os tipos de objetos relacionados a lgebra relacional a Figura 11 apresenta o diagrama de classes correspondente.

39

Figura 11 Diagrama de classes pacote AR

A classe abstrata RelationalAlgebraComponent determina os mtodos base para os operadores da lgebra relacional, a estruturao em rvore tambm de sua responsabilidade portanto essa classe possui duas associaes consigo que representam respectivamente os filhos da esquerda e direta. As classes UnaryOperator e BinaryOperator representam as operaes unrias e binrias, cada uma possui mtodos de controle para poltica de alocao de filhos na estrutura, ambas herdam de RelationalAlgebraComponent . Por fim cada operao representada pelo seu tipo correspondente como por exemplo a classe Projection que identifica a operao (projeo) classificada como operao unaria portanto herda de UnaryOperator.

40 3.2 IMPLEMENTAO

A seguir so mostradas as tcnicas e ferramentas utilizadas e a operacionalidade da implementao.

3.2.1

Tcnicas e ferramentas utilizadas

Para a implementao deste trabalho foi utilizada a linguagem de programao Java verso 6. O compilador para a edio do cdigo fonte foi o Eclipse verso 3.2. O acesso aos SGBDRs suportados pela ferramenta foi implementado utilizando o driver JDBC (Java Database Connectivity).

3.2.2

Leitura dos schemas e tabelas

A classe DatabaseManager responsvel pelas operaes realizadas no banco de dados, antes de realizar a leitura dos schemas necessrio realizar a conexo utilizando o mtodo getConnection. Aps a conexo conseguida o mtodo getSchemas pode ser invocado e realizara a leitura dos schemas o Quadro 20 demonstra seu cdigo fonte. A interface DatabaseMetaData utilizada na linha 91 implementa pelo fornecedor do do driver JDBC, a mesma define mtodos para leitura da estrutura do banco do qual esta conectado e no caso da conexo com o banco Oracle, a instancia da classe retornada pelo mtodo getMetaData especifica para o mesmo. Para realizar a leitura dos schemas do banco Oracle o mtodo getSchemas da interface DatabaseMetaData invocado, j para o banco MySQL o mtodo getCatalogs foi chamado, isso ocorre pelo fato de que o MySQL no trabalha com o conceito de schemas para agrupar suas tabelas e sim catlogos.

41

Quadro 20 Mtodo getSchemas

Para carregar as tabelas de um determinado schema ou catalogo o mtodo loadTables da classe DatabaseManager invocado, o Quadro 21 apresenta seu cdigo.

Quadro 21 Mtodo loadTables

42 O mtodo getTables (linha 134) responsvel por buscar o conjunto de tabelas de cada schema, para isso o mesmo recebe como parmetro o nome do schema ou catlogo e tambm um filtro types para retornar somente objetos do tipo tabela. Os mtodos getTables, getSchemas ou getCatalogos fornecidos pela interface
DatabaseMetaData

possuem como retorno uma classe chamada ResultSet que representa

uma estrutura de linhas e colunas. Para recuperar os dados de um ResultSet deve-se realizar uma iterao sobre o mesmo, sendo que, cada iterao representa uma linha que contem um conjunto de colunas, e para adquirir o valor de cada coluna pode-se utilizar o mtodo
getString

passando como parmetro o nome da coluna desejada, a linha 139 apresenta a

iterao sobre o ResultSet rsTables.

3.2.3

Gerao dos comandos SQL

A gerao dos comandos SQL acontece em duas fases: 1. Visitao da rvore em ps-ordem alimentando um modelo de query; 2. Recuperao do comando atravs do modelo. A classe SqlGenerator responsvel pela gerao dos comandos SQL, a mesma executa a primeira fase da gerao atravs do mtodo genSqlQueryCommand. O mtodo
genSqlQueryCommand

recebe como parmetro o nodo do qual se deseja gerar o cdigo, esse

nodo considerado o raiz da rvore e a partir dele iniciado o processo de gerao, o quadro 22 apresenta o trecho do cdigo.

Quadro 22 Mtodos genSqlQueryCommand e postOrder

O modelo (template) de query representado pela classe QueryModel, sua funo consiste em receber as informaes adquiridas na visitao da rvore e organiz-los conforme a sintaxe do comando de consulta SQL. Para melhor demonstrar o algoritmo de gerao ser realizado um passo a passo com uma rvore de expresso de exemplo. Cada passo ser detalhado descritivamente e conter

43 um quadro de apoio com a rvore de exemplo utilizada e o estado da pilha. O quadro 23 representa o inicio do algoritmo, conforme o varredura em ps-ordem o primeiro n visitado a relao LOCACAO L, para este tipo de nodo criado um modelo M de consulta SQL, e ao mesmo aplicado a relao LOCACAO L, o modelo M empilhado.

M
Quadro 23 Passo 1 da gerao do comando SQL

O prximo n visita a relao CLIENTE C, novamente criado um modelo M1 e aplicado ao mesmo a relao CLIENTE C, M1 empilhado. O Quadro 24 demonstra o passo.

M1 M
Quadro 24 Passo 2 da gerao do comando SQL

O prximo n visitado o operador produto cartesiano, como trata-se de um operador binrio os modelos M e M1 so desempilhados (linhas 317 e 318 do Quadro 25), neste momento realizada uma fuso entre os modelos, a fuso consiste em atribuir ao modelo M todo o modelo M1 isso possvel pois pode-se representar em uma nica consulta SQL o produto cartesiano entre duas tabelas. O modelo M empilhado (linhas 317 e 318 do Quadro 30), o Quadro 26 contextualiza o passo 3.

44

Quadro 25 Cdigo fonte referente ao passo 3

M M := M1, M empilhado.
Quadro 26 Passo 3 da gerao do comando SQL

O prximo n visitado o operador projeo, desempilhado o modelo M e atribudo a projeo ao mesmo, o modelo M novamente empilhado. O Quadro 27 contextualiza o passo 4.

45

M
Quadro 27 Passo 4 da gerao do comando SQL

Neste momento identificado que nodo atual a raiz da rvore, ento desempilhado o modelo M e invocado o mtodo getSqlCommand do mesmo. O mtodo getSqlCommand responsvel por recuperar todos os atributos que o modelo recebeu durante a varredura da rvore e montar o comando SQL. Para garantir que os comandos SQL gerados rodassem nos bancos de dados Oracle e MySQL o mtodo getSqlCommand respeita a sintaxe defina na norma SQL ANSI 92.

3.2.4

Operacionalidade da implementao

Esta seo apresenta a operacionalidade da ferramenta desenvolvida atravs de um estudo de caso. A figura 6 especifica os casos de uso utilizados para teste.

Figura 6 Diagrama de casos de uso 02

46 Nas sees seguintes cada caso uso detalhado atravs de seus respectivos cenrios, cada um possuir uma ps-condio que determina o resultado da execuo da rvore de expresso gerada. Para melhor entendimento foi utilizado um modelo de dados apresentado no Quadro 15.
FILME CODIGO NOME 1 Em nome da Rosa 2 O Exterminador do Futuro 3 Titanic 4 Cidade de Deus 5 O Poderoso Chefo LOCAO_FILME CODIGO_LOCACAO CODIGO_FILME 1 1 1 2 2 3 3 5 4 4 4 4 5 5 2 3 LOCAO DATA_INICIO DATA_FIM 10/01/10 12/01/10 10/01/10 11/01/10 10/01/10 11/01/10 11/01/10 14/01/10 11/01/10 12/01/10 CLIENTE NOME Joo Maria Jos Miguel Marco

CODIGO 1 2 3 4 5

SEXO M F M M M

CODIGO 1 2 3 4 5

CODIGO_CLIENTE 1 2 3 4 1

Quadro 15 Modelo de dados para os casos de uso 5, 6, 7 e 8

3.2.4.1

UC06 - Recuperar os nomes dos clientes de sexo masculino.

O quadro 16 descreve os cenrios do caso de uso 05.

47 UC05 - Recuperar os nomes dos clientes de sexo masculino O usurio deve ter executado o UC01. Prcondio 1. O usurio insere a relao CLIENTE na a rea de edio. 2. O usurio insere os operadores Seleo e Projeo. 3. O usurio efetua a ligao da relao Cliente com o operador Seleo. 4. O usurio informa a condio de seleo : SEXO = 'M'. Cenrio 5. O usurio efetua a ligao do operador Seleo com o Principal operador Projeo. 6. O usurio informa o atributo NOME para efetuar projeo. 7. O usurio aciona o boto executar. No passo 4 o usurio no informa condio de seleo, o sistema apresenta a mensagem " necessrio informar a condio Exceo de seleo.", o fluxo retorna para o passo 4. O sistema deve apresentar a seguinte relao como resultado: Pscondio
NOME Joao Jos Miguel Marco

Quadro 16 Cenrios do UC05

3.2.4.2

UC06 - Recuperar os nomes dos clientes que realizaram locao no dia 10/01/2010.

Demonstra como o usurio realiza a construo de uma rvore de expresso para recuperar os nomes dos clientes que realizaram locao no dia 10/01/2010. O Quadro 17 descreve seus cenrios.

48 UC06 - Recuperar os nomes dos clientes que realizaram locao no dia '10/01/2010'. Pr-condio O usurio deve ter executado o UC01. 1. O usurio insere as relaes LOCACAO e CLIENTE para a rea de edio. 2. O usurio insere os operadores Seleo,Projeo e Juno. 3. O usurio efetua a ligao da relao LOCACAO com o operador Seleo. 4. O usurio informa a condio de seleo : DATA_INICIAL : '10/01/2010'. 5. O usurio efetua a ligao do operador Seleo com o operador Juno. Cenrio 6. O usurio efetua a ligao da relao CLIENTE com o Principal operador Juno. 7. O usurio informa a condio de juno 'c.codigo = l.cod_cliente'. 8. O usurio efetua a ligao do operador Juno com o operador Projeo. 9. O usurio informa o atributo NOME para efetuar a projeo. 10. O usurio aciona o boto executar. No passo 4 o usurio no informa condio de seleo, o sistema apresenta a mensagem " necessrio informar a condio de Exceo seleo.", o fluxo retorna para o passo 4. Exceo 2 No passo 7 o usurio no informa condio de juno, o sistema apresenta a mensagem " necessrio informar a condio de juno.", o fluxo retorna para o passo 7. O sistema deve apresentar a seguinte relao como resultado: Ps-condio
NOME Joao Maria Jos

Quadro 17 Cenrios do UC06

3.2.4.3

UC07- Recuperar a quantidade de filmes alugados no dia 11/01/2010.

Demonstra como o usurio realiza a construo de uma rvore de expresso para recuperar a quantidade de filmes alugados no dia 11/01/2010. O Quadro 18 descreve seus cenrios.

49 UC07- Recuperar a quantidade de filmes alugados no dia 11/01/2010. O usurio deve ter executado o UC01. Pr-condio 1. O usurio insere as relaes LOCACAO e LOCACAO_FILME para a rea de edio. 2. O usurio insere os operadores Seleo, Agregao e Juno. 3. O usurio efetua a ligao da relao LOCACAO com o operador Seleo. 4. O usurio informa a condio de seleo : DATA_INICIAL : '11/01/2010'. 5. O usurio efetua a ligao do operador Seleo com o Cenrio operador Juno. Principal 6. O usurio efetua a ligao da relao LOCACAO_FILME com o operador Juno. 7. O usurio informa a condio de juno : 'l.codigo = lc.cod_locacao'. 8. O usurio efetua a ligao do operador Juno com o operador Agregao. 9. O usurio informa a funo COUNT e como parmetro o atributo codigo. 10. O usurio aciona o boto executar; No passo 4 o usurio no informa condio de seleo, o sistema apresenta a mensagem " necessrio informar a condio Exceo de seleo.", o fluxo retorna para o passo 4. Exceo 2 Exceo 3 No passo 7 o usurio no informa condio de juno, o sistema apresenta a mensagem " necessrio informar a condio de juno.", o fluxo retorna para o passo 7. No passo 9 o usurio no informa a funo COUNT, o sistema apresenta a mensagem " necessrio informar a funo de agrupamento.", o fluxo retorna para o passo 9. O sistema apresenta a relao como resultado:
COUNT(codigo) 4

Ps-condio

Quadro 18 Cenrios do UC07

3.2.4.4

UC08- Recuperar os clientes que assistiram o filme 'O Poderoso Chefo' mas no assistiram Cidade de Deus.

Demonstra como o usurio realiza a construo de uma rvore de expresso para recuperar os clientes que assistiram ao filme 'O Poderoso Chefo' mas no assistiram Cidade de Deus. O Quadro 19 descreve seus cenrios.

50 UC08- Recuperar os clientes que assistiram o filme 'O Poderoso Chefo' mas no assistiram Cidade de Deus. Pr-condio O usurio deve ter executado o UC01. 1. O usurio insere a relao LOCACAO_FILME e os operadores seleo e projeo para a rea de edio. 2. O usurio efetua a ligao da relao LOCACAO_FILME com o operador seleo. 3. O usurio informa a condio de seleo : CODIGO_FILME = 4. 4. O usurio efetua a ligao do operador seleo com o operador projeo informando a coluna CODIGO_LOCACAO como parmetro do mesmo. 5. O usurio realiza novamente os passo de 1 a 4 criando uma segunda rvore substituindo a condio de seleo do passo 3 para : CODIGO_FILME = 5. 6. O usurio insere a operao diferena. 7. O usurio efetua a ligao da primeira e da segunda rvore com a operao diferena. 8. O usurio insere a relao LOCACAO e o operador juno theta na rea de edio. Cenrio 9. O usurio realiza a ligao do operador diferena com o Principal operador juno theta. 10. O usurio realiza a ligao da relao LOCACAO com o operador juno theta e informa a condio de juno l.codigo_locacao = l1.codigo. 11. O usurio insere a relao CLIENTE e o operador juno theta na rea de edio. 12. O usurio realiza a ligao do operador juno theta inserida no passo 8 com a juno theta inserida no passo 10. 13. O usurio realiza a ligao da relao CLIENTE com a juno theta inserida no passo 11 e informa a condio de juno l1.codigo_cliente = c.codigo. 14. O usurio insere o operador projeo na rea de edio. 15. O usurio realiza a ligao do operador juno theta inserido no passo 11 com o operador projeo informando a coluna NOME como parmetro do mesmo. 16. O usurio aciona o boto executar. No passo 3 o usurio no informa condio de seleo, o sistema apresenta a mensagem " necessrio informar a condio de Exceo seleo.", o fluxo retorna para o passo 3. No passo 10 ou 13 o usurio no informa condio de juno, o sistema apresenta a mensagem " necessrio informar a condio de juno.", o fluxo retorna para o passo origem da exceo. O sistema deve apresentar a seguinte relao como resultado: Ps-condio
NOME Jos

Exceo 2

Quadro 19 Cenrios do UC08

51

3.2.5

Demonstrao da ferramenta

Para a demonstrao do funcionamento ser construda uma rvore de expresso respeitando os passos do caso de uso UC08- Recuperar os clientes que assistiram o filme O Poderoso Chefo mas no assistiram Cidade de Deus. Inicialmente o usurio deve realizar o login na aplicao informando qual o banco desejado, o endereo do mesmo (IP e Porta), o nome do esquema de tabelas no caso do banco MySQL, usurio e senha. A Figura 12 demonstra o login na aplicao.

Figura 12 Realizar login

Realizado o login a aplicao carrega as tabelas e libera os botes para construo das rvores de expresso a Figura 13 apresenta as reas da ferramenta e os principais botes.

52

Figura 13 Apresentao das reas da ferramenta

Aps a conexo realizada o usurio pode comear a formular o plano de consulta para o problema proposto no UC08. Deve-se ento realizar os seguintes passos: a) Passo 1: inserir a relao LOCACAO_FILME e os operadores seleo e projeo na rea de edio; b) Passo 2: efetuar a ligao da relao LOCACAO_FILME com seleo; c) Passo 3: informar a condio de seleo : CODIGO_FILME = 5; d) Passo 4: efetuar a ligao do operador seleo com o operador projeo informando a coluna CODIGO_LOCACAO como parmetro do mesmo. Para inserir os operadores e relaes na rea de desenho o usurio deve clicar sobre o operador ou relao desejado, arrastar e soltar dentro da rea de desenho. Para os passos que consistem em efetuar ligao entre os operadores deve-se anteriormente ativar o boto ligao no topo do editor a Figura 14 apresenta a execuo dos procedimentos 1, 2, 3 e 4. o operador

53

Figura 14 Execuo dos passos 1, 2, 3 e 4

O prximo passo (5) consiste em realizar novamente os passo de 1 a 4 criando uma segunda rvore substituindo a condio de seleo do passo 3 para CODIGO_FILME = 4. A Figura 15 demonstra a execuo do passo 5.

54

Figura 15 Execuo do passo 5

Os prximos procedimentos consistem em: a) Passo 6: inserir a operao diferena; b) Passo 7: efetuar a ligao da primeira e da segunda rvore com a operao diferena; c) Passo 8: inserir a relao LOCACAO e o operador juno theta na rea de edio; d) Passo 9: realizar a ligao do operador diferena com o operador juno theta; e) Passo 10: realizar a ligao da relao LOCACAO com o operador juno theta e informa a condio de juno l.codigo_locacao = l2.codigo. A Figura 16 demonstra a execuo dos passos 6, 7, 8, 9 e 10.

55

Figura 16 Execuo dos passos 6, 7, 8, 9 e 10

Conforme a sequncia os prximos passos consistem em : a) Passo 11: inserir a relao CLIENTE e o operador juno theta na rea de edio; b) Passo 12: realizar a ligao do operador juno theta inserida no passo 8 com a juno theta inserida no passo 10; c) Passo 13: realizar a ligao da relao CLIENTE com a juno theta inserida no passo 11 e informa a condio de juno l1.codigo_cliente = c.codigo. A Figura 17 demonstra a execuo dos passos 11, 12 e 13.

56

Figura 17 Execuo dos passos 11, 12 e 13

Finalizando a construo da rvore deve-se : a) Passo 14: inserir o operador projeo na rea de edio; b) Passo 15: realizar a ligao do operador juno theta inserido no passo 11 com o operador projeo informando a coluna NOME como parmetro do mesmo. A Figura 18 demonstra os passos 14 e 15.

57

Figura 18 Execuo dos passos 14 e 15

Por fim o usurio aciona o boto executar, a Figura 19 apresenta o resultado do plano de consulta e a Figura 20 a consulta SQL gerada.

58

Figura 19 Resultado do plano de consulta

59

Figura 20 Comando SQL gerado

60 3.3 RESULTADOS E DISCUSSO

Os resultados obtidos pela ferramenta foram satisfatrios. A mesma apresentou boa funcionalidade e usabilidade, de fcil uso no o sendo necessria grande capacitao para seus usurios. Permite que sejam construdas rvores complexas conforme evidenciado no estudo de caso. Em relao aos conceitos da lgebra relacional a aplicao trabalha com a metodologia nomeada lgebra sobre sacolas (conjuntos mltiplos), ou seja, duplicatas no so removidas como na lgebra relacional clssica. A gerao da linguagem SQL feita realizando uma varredura na rvore construda e com o apoio de uma pilha e um template (modelo) de consulta SQL, os detalhes da gerao so apresentados na seo 3.2.3. O uso de uma BNF (Backus-Naur Form) no foi adotado pelo motivo de que a entrada dos dados no de forma textual e sim como uma estrutura em rvore. Outro fator determinante que a sintaxe para construo de expresses algbricas ou rvores de expresses a concatenao sucessiva de operadores partindo-se de uma relao. No existem regras que definem, por exemplo, se um operador pode ou no ser ligado a outro. Os testes realizados na ferramenta visaram principalmente a coerncia do resultado das consultas SQL em relao s rvores de origem. Em relao aos trabalhos correlatos o Quadro 28 demonstra um comparativo dos mesmos com este trabalho. IDFQL rvores de expresses algbricas Expresses algbricas Manter arquivos Acesso a tabelas de diversos schemas lgebra Estendida Sim No Sim No No EnsinAr No Sim No No No Ferramenta Sim No Sim Sim Sim

Quadro 28 Comparativo da ferramenta com os trabalhos correlatos

61 4 CONCLUSES

Durante o desenvolvimento do trabalho foram adotadas algumas estratgias para implementar o gerador SQL. Inicialmente foi construda uma gramtica no Gerador de Analisadores Lxicos e Sintticos (GALS) para validar expresses algbricas e gerar o cdigo, contudo seria necessria a converso da rvore para uma expresso na forma textual, e na fase semntica realizar um reagrupamento da expresso levando em considerao a prioridade dos operadores para depois realizar a gerao do cdigo, em decorrncia desses motivos esse mtodo no foi utilizado. Partiu-se ento para varredura direta na rvore gerando uma consulta externa para cada operador, desta forma o comando SQL gerado expressava exatamente a rvore de expresso construda. Esta tcnica quando aplicada a rvores muito extensas gerava comandos SQL ilegveis e ocorriam erros de colunas com nome duplicados mesmo utilizando a sintaxe
tabela.nome_colula.

Optou-se ento por construir um template que expressa um comando SQL, e com o auxlio de uma pilha o mesmo preenchido durante a visitao da rvore de expresso, esta tcnica apresentou bons resultados e qualidade dos comandos, entretanto no foi possvel garantir uma gerao de qualquer rvore construda pelo fato de que no existe restrio ou sintaxe para construo das rvores de expresso, porm, a linguagem fim SQL possui sintaxe, sendo assim alguns tipos de construes utilizando operadores binrios aps o operador unio podem gerar consultas SQL no funcionais. Em relao aos objetivos inicialmente propostos a maioria foi atendido. Ficou parcialmente realizada a gerao dos comandos SQL. O presente trabalho fornece uma ferramenta de apoio ao ensino da lgebra relacional permitindo aos usurios formular planos de consulta atravs de rvores de expresses algbricas. A aplicao gera consultas em linguagem SQL a partir das rvores de expresso, desta forma pode-se comparar um determinado plano de consulta em lgebra relacional com uma consulta correspondente em linguagem SQL. Propicia tambm melhor entendimento da maneira com que os SGBDRS realizam a recuperao de dados. No mbito da educao, uma ferramenta que possibilite uma forma diferenciada de viso para resolver problemas e assimilar assuntos como lgebra relacional e linguagem SQL agregam sem dvida maior qualidade e desempenho no ensino. Durante o desenvolvimento, foram adicionados os operadores juno a esquerda e

62 juno a direita aumentando assim o nmero de operadores inicialmente propostos.

4.1

EXTENSES

Ficam como sugestes para trabalhos futuros os seguintes itens: a) disponibilizar os operadores rebatizar, atribuio, juno natural e interseco; b) disponibilizar suporte a expresses de lgebra relacional; c) incluir uma interface que realize a converso de comandos SQL em rvores de expresses; d) aprimorar a entrada de dados para os operadores, realizar validaes para os nomes de colunas informados e condies de juno e seleo.

63 REFERNCIAS BIBLIOGRFICAS

APPEL, Ana P.; TRAINA JUNIOR, Caetano. iDFQL: uma ferramenta de apoio ao processo de ensino-aprendizagem da lgebra relacional baseado no construcionismo. In: WORKSHOP SOBRE EDUCAO EM COMPUTAO, 6., 2004, Vitria. Anais Eletrnicos Vitria: SBC, 2004. No paginado. Disponvel em: <http://bibliotecadigital.sbc.org.br/bibliotecadigital/download.php?paper=47>. Acesso em: 20 mar. 2010. ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de banco de dados. 4. ed. So Paulo: Pearson Addison Wesley, 2005. GARCIA-MOLINA, Hector; ULLMAN, Jeffrey D.; WIDOM, Jennifer. Implementao de sistemas de bancos de dados. Traduo Vandenberg D. de Souza. Rio de Janeiro: Campus, 2001. MINISTRIO DA EDUCAO. Diretrizes curriculares dos cursos da rea de computao e informtica. [Porto Alegre], [1998?]. Disponvel em: <http://www.inf.ufrgs.br/ecp/docs/diretriz.pdf >. Acesso em: 27 mar. 2010. PAES, Enderson L. EnsinAR: ferramenta didtica para o ensino de lgebra relacional. 2007. 151 f. Trabalho de Concluso de Curso (Curso de Cincia da Computao) - Departamento de Informtica e Estatstica, Universidade Federal de Santa Catarina, Florianpolis. Disponvel em: <http://projetos.inf.ufsc.br/projetos.php?busca=sim&titulo=&autor=Ederson+Luiz+Paes&res p=&orientacao=&curso=&disciplina=&semestre_busca=&concluido_busca=&keywords=>. Acesso em: 31 mar. 2010. SUMATHI, S; ESAKKIRAJAN, S. Fundamentals of relational database management systems. Springer, 2007. Disponvel em: <http://books.google.com.br/books?id=RjnNA0GW0wsC&printsec=frontcover#v=onepage& q&f=false>. Acesso em: 24 out. 2010.

RAMAKRISHNAN, Raghu. Database management systems. Boston: WCB McGraw-Hill, 1998.