fabio leite floriani construtor de consultas...

78
FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS PARA BAN COS DE DADOS MYSQL CURITIBA 2003

Upload: nguyenkhanh

Post on 10-Nov-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

FABIO LEITE FLORIANI

CONSTRUTOR DE CONSULTAS PARA BAN COS DE DADOS MYSQL

CURITIBA2003

Page 2: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

FABIO LEITE FLORIANI

CONSTRUTOR DE CONSULTAS PARA BAN COS DE DADOS MYSQL

MonogrOifia aprescntada como requisito parcialconcludo do Curso Superior de Processamento deDOIdos dOl.Universidade Tuiuti do Parana.

Orientadora: ProfeSSOfa Giulliana Martins de SouzaVicentin

CURITIBA2003

Page 3: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

FABIO LEITE FLORIANI

CONSTRUTOR DE CONSULTAS PARA BANCOS DE DADOS MYSQL

Disserta,~o aprovada como requisito parcial para a obten,ao do grau deTecn610go no Curso Superior de Processamento de Dados da Universidade Tuiutido Parana, pel a comiss~o farmada pelos professores:

Orientadora Prof.:! Giulliana Martins de Souza VicentinUniversidade Tuiuti do Parana

Prof.;l: Fairus ManfroiUniversidade Tuiuti do Parana

Prof': Elaini Simoni AngelottiUniversidade Tuiuti do Parana

ProF: Evandro Alberto ZattiUniversidade Tuiuti do Parana

Curitiba, 20 de Novembro de 2003.

Page 4: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

SUMARIO

LlSTA DE FIGURAS............. .. iii1. INTRODU<;:AO. .. 11.1. OBJETIVO GERAL.... . 11.2. OBJETIVOS ESPECIFICOS. .. 22. REVISAO DA LlTERATURA 32.1. Visao e Manipula<;ao c10s Dados .42.2. Linguagens de Banco de Dados .. 42.2.1 Linguagem de Defini<;ao de Dades 52.2.2 Linguagem de Manipula<;ao de Dados .. 52.2.3 Linguagem de Controle de Dados.. .. 52.3. Modelo Entidade-Relacionamento 52.3.1. Conjunta de Enlidades.. .. 62.3.2. Atributas.. .. 62.3.3. Conjunta de Relacianamentos 73. ARQUITETURA MySQL.. .. 113.1 Campara<;aa cam a MySOL 3.23 .. 113.2 Tipe de Tabelas . . 113.2.1. Tabala InnoDB .. 123.3 Transa,Oes.. 133.4. Pad roes Ulilizados na MySQL .. 134. LlNGUAGEM SQL 154.1 Tipes de Camandos SOL 154.1.1. Camandas DDL.. .. 164.1.1.1. Camanda Create 164.1.1.2. Camanda Drop.... .. 174.1.1.3. Camanda Aller.. .. 184.1.2. Camandas DML.. .. 194.1.2.1. Camanda SELECT 204.1.2.2. Consultas Envolvendo Relacionamentos ntre Tabelas 234.1.2.2.1. Camanda INNER JOIN.. .. 244.1.2.2.2. Camanda OUTER JOIN.. .. .. .. . .. 244.1.2.2.1. Camando STRAIGHT JOIN 254.1.2.2.2. Camanda NATURAL JOIN.. .. 254.1.1.3. SubCansulias.. . .. 254.1.1.4. Camanda U liON.. . .. 264.1.1.5. Camando INTERSECT .. 274.1.1.6. Camanda EXCEPT 274.1.2. Camanda INSERT.. 274.1.3. Camanda UPDATE.. .. 284.1.4. Comando DELETE... . .. 294.1.5. Transa<;Oes.... .. 295. METODOLOGIA.............. .. 315.1.Cancep<;aa do Prajcta 315.2.Esluda Bibliografico sobre 0 Assunla.. .. 315.3.Canfec<;aa da iVlanografia.. 315.4.Desenvalvimento do Protiltipa.. 31

iii

Page 5: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

6. CONSTRU<;AO DA FERRAMENTA.... .. 356.1. Servidor MySQL.. 366.2. Menu Principal ................................• ................•.. 376.3. Gerador de Consultas . 386.4. SOL Window.. . . 386.5. Resultados da Pesquisa.. . 406.6. Diferenya no uso de Ferramentas 417. TESTES I VALlDA<;6ES................. . 467.1. Erros internas 110 desenvolvimellto 467.2. Interface corn 0 usuario.. . 467 .3. Teste das Sinta.es dos comandos Sal gerados pelo prot6tipo 477.4. Testes de Erro de conexao com 0 servidor 477.5. Testes de instala,ao do prot6tipo 487.5.1. Run-time Visual Basic 6.0.. . 487.5.2. Biblioteca de Acesso a Banco de Dados (Active Data Objects) 487.5.3. MyODBC 3.51.. . 497.5.4. Servidor com a MySOL.. . 497.6. Testes do prot6tipo.. . 497.7. Como instalar.. . 50B. CRONOGRAMA................... . 519. CONClUSAO..................... . 52REFERENCIAS .. . 5411. ANEXOS . 5511.1. ANEXO I.. .. 5511.2. ANEXO 11....................... .. 5611.3. ANEXO III.. 5611.4. ANEXO IV . 5611.2 ANEXO V. .. 6311.3 ANEXO VI..................... . 7711.4 ANEXO VII...................................... . 7B

Page 6: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

LlSTA DE FIGURAS

Figura 1 - Diagrama E-R .. ............................• . 6Figura 2 - Relacionamento Um-para-Um.. . 8Figura 3 - Relacionamento UIl1-para-rnuitos '" 9Figura 4 - Relacionamento muitos-para-Um 9Figura 5 - Relacionamento Muitos-para-Muitos 10Figura 6 - Visao Geral do Prot6tipo - Vis~o do Usuario 35Figura 7 - Visao Geral do Prot6tipo - Visao da Constru,ao do Aplicativo 36Figura 8 - Tela de Conexao com Banco de Dados MySQl 37Figura 9 - Menu Principal do Prot6tipo 38Figura 10 - Tela do Gerador de Consultas 39Figura 11 - Tela do SQl Window 40Figura 12 - Tela de Resultados da Pesquisa 41Figura 13 - Manipulac;ao de Dados no Console MySQl 42Figura 14 - Manipular;iio de dados com 0 MySQl Constructor 43Figura 15 - Mensagem de erro exibida ao usuaria 57Figura 16 - Testes executados COI1l 0 prot6tipo 59Figura 17 - ANEXO VI - Tela de criac;iio I um instalador at raves do 'Package andDeployment WizarrF. 64

Page 7: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

RESUMO

o principal objetivo deste trabalho e 0 desenvolvimento de urn Construtor deConsultas para Banco de Dados MySQL, onde esta ferramenta deve proporcionar aoDesenvolvedor facilidade e rapidez no desenvolvimento de consultas no MySQl.Para isla fcram estudados as conceitos de Banco de Dados e a Iinguagem SOL. 0usa da ferramenta proporcionou maior facilidade na execu9a.o das tarefas, rapidez

ao acesso das informayOes, tornando uma ferramenta estavel e segura para abstrairdados, dispensando a usa da interface nativa, pobre em recursos.

Todo 0 estudo abordado contribui para 0 meio acad~mico servindo comorefer~ncia no estudo de conceitos de Bancos de Dados, arquitetura do Banco deDados MySQL relacionais, sendo esse uma ferramenta gratuita.

Sao propostos estudos futuros para 0 Banco de Dados MySQL visandoabordar as novas caracteristicas, para que a ferramenta possa atender asnecessidades do usuario com novos m6dulos desenvolvidos no futuro.

vi

Page 8: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

l.INTRODUc;:AO

Atualmente a maiaria das ferrarnentas tentarn facilitar 0 gerenciamento,porem poucas abrangem a abstra9~o de dados, S8 preocupando mais com 0

gerenciamento do sistema de banco de dadas. Cad a ferramenta passui enfoquesdiferentes urna das Qutras, enquanto algumas favorecem 0 trabalho com dadas,Qutras com 0 gerenciamento de tabelas e colunas e usuarios do banco, ou seja S8

preocupando com a seguranya. A maioria desses aplicativos requerem licenc;asapesar de usa rem um banco de dados aberto.

Conforme cHadD aeirna, este estudo tern como objetivo minimizar a trabalhode desenvolvimento de consultas baseadas nos comandos SQL (Structured Query

Language) para 0 Banco de Dados MySOL, sendo tambem uma refer~ncia a quemdeseja estudar as conceitos de banco de dadas, visando disponibilizar de urnaferramenta gratuita pela politica GPL (Anexo I).

LL OBJETIVO CERAL

o objetivo desse projeto e 0 desenvolvimento de um prot6tipo Construtor deConsultas SOL para 0 Banco de Dados MySOL sendo feito 0 estudo desse banco dedados a fim de prop~r uma ferramenta grarica e gratuita que facilite a manipulac;~odo Sistema, proporcionando facilidade no aces so aos seus recursos com 0 intuito dediminuir as esforc;:osno desenvolvimento de consultas a banco de dados paraaproveitar as caracteristicas e vantagens disponiveis no MySQL.

L2, OBJETIVO ESPECIl'iCO

o objetivo especifico e 0 desenvolvimento de um prot6tipo que disponibilizeao usuario abstrac;~ode dados atraves de consultas do tipo SOL oompativeis com 0

Bancos de Dados MySOL. Com isso, as vantagens s~o de abstrair dados semconhecer a sintaxe de comandos na maiaria das vezes; a substitui9~O da interfacenativa pobre em recurSQS, sendo ainda uma interface texto; rapidez na execuC;:3o deconsultas entre outras vantagens de menor relevancia.

Sera necessaria urn estudo sabre os conceitos da implementac;ao de bancosde dados, as tecnicas utilizadas para a constrUl;ao do banco de dados MySOL

(Comandos SOL, estrutura de dados, indices, relacionamentos), e os conceitos

Page 9: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

envolvidos para a implementa9~o das tecnicas. Tais conceitos n~o saoapenas aplicados ao MySQL, sendo tambem utilizados em qualquer gerenciador debanco de dados atualmente. 0 projeto possibilita otimizar 0 tempo de constru9ao deuma query (consulta) criando consultas baseadas nos conceitos SOL 92

conseqOentemente baseados (ou nao) em relacionamentos entre tabelas (comcomandos via comandos Inner Join, And, WI/ere, etc), aonde 0 prot6tipo retorna 0(5)comando(s) SOL que 0 programador/DBA especificar atraves da interface grarica doprojeto.

o estudo foi baseado na analise da literatura (Iivros , Internet, etc.) a respeitode banco de dados e suas tecnologias. Na seqO~nciaser'!!o estudada Linguagens deBanco de Dados, estruturas de arquivos e disposi0es de entidadesIrelacionamentos, abordados em sistema de banco de dad as, as diferentes tecnicasde implementa9~a, a importancia na escolha e gerenciamento de estruturas fisicas e

16gicas. Este estudo visa adquirir conhecimento para elaborac;ao de uma ferramentaque possa se adequar ao banco de dados, proporcionando rapidez e efici~ncla na

administra9ao e abstra9ao de dados.

Page 10: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

2. REVlS'-\O DA LTTl;RATURA

Os Sistemas Gerenciadores de Banco de Dados sao basicamente umrepositorio de dados com a finalidade de armazenar informa<;oes com apossibilidade de recupera<;ao dessas, cruzamentos de informa<;oes para que sepossa fazer analises, comparac;oes, etc.

Como um padrao, um Sistema Gerenciador de Banco de Dados (SGBD) e umconjunto de programas/rotinas que gerenciam acessos as informay6es. 0 principalobjetivo e fornecer um sistema praticQ, rapido e eficiente de recupera9aO e

armazenamento de informa<;Oes.(BURBELLO , 2002)

Sistemas Gerenciadores de Banco de Oados sao projetados para mantergrande volume de informayOes, de forma eficiente permit indo que estes dadospermane<;am armazenados com seguran<;:a. Urn sistema de banco de dados oferececomo servic;o, a garantia de seguran<;a das informa<;:Oes armazenadas contraquaisquer problemas que possam surgir com a sistema, deve ainda impedir atentativa de acessos nilo autorizados. Com a complexidade do sistema edeterminado urn grande conjunto de tecnicas para uma boa administra9ao(SILBERSCHATZ, 1999).

Alguns dos problemas que podem ser solucionados com 0 usa de um sistemagerenciador de banco de dados sao descritos abaixo : (SILBERSCHATZ, 2000)

Inconsistencia e re umlancia de dados: No decorrer do tempo, podemocorrer de varias copias dos dados serem armazenadas em lugaresdiferentes e quando atualizados nem sempre todas serao atualizadas,aumentando os custos de armazenamento e causando a inconsist~ncia

dos dados.

• Dificuldade de acesso aos dados: a sistema de processamento dearquivos nao atemla as necessidades de recupera<;aodas informa<;6esdemodo eficiente. au seja, quando 0 sistema foi projetado, nao foi prevista

tal recupera<;aode dados.

• Isolamento de dados: as dados podem estar armazenados em varios

arquivos e em diferentes formatos causando dificuldades na recuperattaodas informa<;Oes.

Page 11: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

Problemas de Integridade: Os valores dos dados armazenados em um

banco de dados devem satisfazer certas restri90es para manuten9ao da

consistlmcia. 0 problema da integridade e assegurar que os dados nobanco de dados estejam corretos. Um exemplo de falta de integridade e

uma informac;;:rio S8 referenciar a informaC;ao de outro arquivD que por suavez nao existe.

• Problemas de atornicidade: Urn sistema computacional sujeito a falhasmedmicas au eletricas que possam deixar de realizar uma operayao parcompleto. E essencial para a consist{!ncia dos dados que a operay:io seja

efetuada par completa, deve ser atOmica.

• Anomalias no aces so concorrente: Atualizac;oes simult~neas pod em

diminuir 0 desempenho de urn banco de dadas. Em casas de atualiz8c;Oesconcorrentes em que uma atualiz8C;;aO esta concorrendo com Dutra

atualiz8c;:io, hi! grandes possibilidades de resultar em inconsist~ncia,e 0

sistema deve tratar as acessos concorrentes.

• Problemas de seguranya: Definif(oes de restriC(6es de seguranf(a ou regrasa serem verificadas sempre que houver uma tentativa de acesso a dadosnao autorizados. A manutenf(ao dos dados no banco de dados, deve serefetuada apenas pelo usuario que tem a permissao de manipular, ou seja,um usuario deve ter est rita mente autorizac;ao para executar tais tarefas,

nao havendo necessidade de 0 usuario ter aces so ha varias informa0esque nao Ihe interessa, tamanda dincil garantir a efetividade das regras de

seguranc;a para todo 0 sistema

A maioria dos SGBD solucionam os problemas apresentados acima com 0

objetivo de organizar todos os dados que precisam ser armazenados e extrafdos

posteriormente.

2.1. VISAO E MA~Il'LlLAc,:AO DOS DADOS

Um SGSD e urn conjunto de arquivos e programas, relacionados entre si,formando um sistema que permite ao usuario rapidez na recupera<;:ao dasinforma90es proporcionando efici~ncia na realiza9ao das tarefas. 0 SGBD

proparciona ao usuario uma vis~o abstrata dos dados, isto e, a usuario final nao

Page 12: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

precisa saber detalhes do armazenamento e reCUpera9aO de informac;oes de um

banco de dados.

2.2. L1NCUACENS DE IlANCO DE DADOS

Um sistema de banco de dados possui 3 tipos de linguagens paramanipulayao de tabelas e lIsuarios, as quais, uma consiste em especificar edescrever os objetos do banco de dados como sao percebidos pelo usuario, e outra

para suportar a manipula,ao au processamento de consultas e atualiza,Oes(SILBERSCHATZ, 1999).

2.2.1. L1NCUACENS DE DEfINI(;:AO DE DADOS

Data Definition Language (DOL) s uma linguagem que especifica umconjunto de defini,6es para constituir um bancc de dados. Esta linguagem trabalhadiretamente com 0 dicionario de dados ou diretorio de dados. Quando compilado, 0

resultado e armazenado em urn conjunto de tabelas no dicionario de dados.

Urn dicionario de dados em urn Sistema de Banco de Dados e um arquivo quecontsm dados a respeito de dados (me/adado). Antes que qualquer dado sejarnodificado, este arquivo de sistema e consultado. Esta linguagem define 0 metodode acesso e as detailles de implementa,ao usados pelo banco de dadosnormalmente sao ocultados dos usuarios (SILBERSCHATZ, 1999).

2.2.2. LlNCUACENS DE ~IANIPULA<;:AO DE DADOS

Esta linguagem e responsavel pel a manipulac;ao dos dados no sistema.

Entende·se par manipula,ao de dados:

A recuperayao das informac;6es.A insen;ao de novas inforrnac;6es.A remaC;8a de informac;6es.A modifica,ao das informay6es.

Os comandos da serie DML (Data Manipulation Language), destinados acansultas, inserc;Oes, exciusOes e alterayOes em um au mais registros de uma au

Page 13: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

rnais tabelas de maneira simultanea, com 0 objetivo de facilitar 0 aces so ou amanipulac;ao dos dados. Como exemplo de comandos da cia sse DML temos os

comandos Select. Inselt, Update e Delete.

2.2.3L1NGUAGENS DE CONTROLE DE DADOS

Uma subclasse de comandos DML. a DCL (Data Control Language). dispOe

de comandos de controle como Grant e Revoke. Usada para 0 controle de acessos atabela.

2.3.1VI0DELO ENTIDADE-REL\CIONAMENTO

Nesse modelo de banco de dados. objetos (entidades. etc) do mundo real sao

representadas dentro de urn banco de dados. Esse modelo e amplamente utilizadopois representa mais simples mente e corn eficacia a imporlancia do dado. Saoseparados em: Conjunto de entidades. conjunto de relacionamentos e atributos.

Registros alocados em tabelas (entidades). podem tambem ser chamados de

TUPLA e cad a coluna sera chamada de A TRIBUTO. 0 conjunto de valores possiveis

de serem assumidos por um atributo. e intitulado de DOMINIO.

2.3.1.CONJUNTOS DE ENTIDADES

Conjunto de Enticlacles e urna abstra9ao de algo existente no mundo real que

pode ter alguma relac;ao com os outros objetos. Um conjunto de entidades abrange

entidades que comparlilham os mesmos atributos, os quais pod em ser usado narelac;ao entre ambos (entidades).

2.3.2.ATRlBUTOS

~ uma ou mais propriedades de uma entidade. ou seja. sao informac;oes que

a caracterizam. 0 conjunto dos atributos de urna entidade formam urn registro.

(BURBELLO •2002)

Os Atributos podem ser :

Page 14: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

- Simples au compostos, caracterizando atributo simples quando 0 valor nao

pode ser dividido, ao contra rio de atributo composto onde pode ser divido em partes.

Exemplo: 0 atributo nome, que pode ser dividido em pre-nome, sobrenome, etc.

- Monova/orados ou multiva/orados : caracterizando monovalorado quando

independente do valor n~o implicara na caracteristica do registro, assim, atributos

multivalorados dependendo do valor, podera caracterizar 0 registro. Exemplo: a

entidade funcionarios em que atributo dependente, pod era assumir mais de urn

valor. Atributos podem ter valores nulos, onde nao foi definido algum valor para 0

atributo.

- Derivado: que pode depender de outros atributos para receber seu valor.Exemplo : urn atributo que receba parte de urn atributo agrupada com outro atributocitado na Figura - 1:

Ond·::

~.F:!(I"'.S.f~.""":IItih"'IV~~(;~r~~~tofT'OaUn;~t

I fUfotilMoriO I. R~,_mll urn:! eniiJJj, '1'" p»luh1riOl Mlibo.il()s

~ ."",~.""-,,",-.~""',""'~•...•....

Figura - 1 Diagrama E-R:

Nesse exemplo, 0 atributo Seguro Social da entidade funcionario

refere-s8 ao valor do atributo NLJmero de Registro da entidade empresa,

sendo esse atributo parte do atributo Seguro Social quando 0 valor desse

atributo e preenchido.

Page 15: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

2.3.3. CONJUNTOS DE RELACIONAMENTOS

E uma ligac;ao entre duas ou varias entidades, ou seja, as entidades podem

S8 relacionar entre si, como par exemple as entidades ernpresa e funcionario ande

urn au mais atributos de cada entidade S8 relaciona com Dutra, conforme mostrados

na Figura 2.

Urn banco de dados relacional deve respeitar algumas restric;Oes como 0 acardinalidade. A cardinalidade e ulil para descrever os conjuntos de

relacionamentos, mostrando rnais clara mente a reJaC;8o entre as entidades. As

cardinalidades podem ser como cHadD abaixo:

- Um para urn: ande uma entidade em A esw associada no maximo a uma

entidade em B, e a entidade em B esla associada no maximo a uma entidade

em A, citado na Figura 2.

~U~rl0

tlomo: So"'"Endereco COI1tMReceberCidadic ContasPo'IQMEstado Clien\o:s

T"""" Producao

'0> Produtos

C", Orc.'lmento5IncEst f.Jol:~iI(:aI

CO' 5ennm:s.,irro , E!!oqui

Crollo Em;JresalOEmail5en~OitcIlnicio

Libera

Figura 2- Relacionamento Um-para-Um

Exemplo: Urn registro em Oados pode estar relacionado somente a urn Login,

aonde 0 atributo EmpresalO e unico, sendo somente relacionado a um registro em

Dados.

- Urn para muitos: uma entidade em A esla associada a varias entidades em

B e uma entidade em B esta associada a uma entidade de A no maximo, mostrado

na Figura 3.

Page 16: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

u:>tCt>ceOO'In~EK'"..t.ibtt

~.x!"l;l~I),at61iJ.:I...•.T~"«oIfllta:hTipcPe..,..

\'~~fr~1~1;t"$lidirO"C<IffiI<rto

""I'hlt~""V..-.c:irnI<'(ol--V.l!:;11

"""V~'r;oE.OltIlf*)!¥i!wEJlIINCod>iI)_~'wndld••.

""""'"

I

J

.:J

Figura 3. - Relacionarnento Um-pam-muitos

Exemplo: Uma nota fi cal asta relacionada com varios itens da nota fiscal, au

seja a entidade NotaFjsca/ esta r lacionada a NotaFiscal_ltens e varios Itens com a

Nota Fiscal.

- Muitos para lim: uma entidade em A esta associada em uma entidade de B

no maximo e uma entidade de B Esta associada varias da entidade A, como citado

na Figura 4.

Page 17: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

I .,--

"'"~ =::.::.I ~=ob

, ••••Jr:.&ud.

''''-...•....,~.f""-a

.'"n~~~.V••••.t:ll',trU

'n''''''.!oijone.. ••..-c,~l;i"

~''''''''JI:''V<n("'....-~~lV""" •.,,>r\\':V.-If!

".; ••:'....I!r.~(~_ ••••I'dIJ!<

<<;<f"'~

10

Figura 4 - Relacionamento Muitos-para-Um

Exemplo: Os itens de uma nota fiscal estao relacionados com uma nota fiscal,

au seja, a entidade NataFiscaUtens esta relacianada a NataFisca/.

- Muitos para muitos: uma entidade em A esta associ ada a varias entidades

em B e uma entidade em B esta associada em varias da entidade A, como citado na

Figura 5.

II '""

,,13

I 'Iumero do Pedido C6digo do Cliente C6dioo do Fundonirio~- 10000 fRAt 1$II,;H=i---- 10001 MEREPf--I 10002 FOLKO

Um pedido iCha ...e pnmilria dG label.a pe.didOSpode lerdiversol l:ha'/e ptlmana daprodutos .. I I~bela Produlo~

llumer(J do Pedido CodaRD do ProtJuto Pre!;o Unitirio

I- I 1l\Oll1 r 2S R$H~I

~ ~~ ~ :~~!10002 25 RS14PO I

I ". e cadO! produto pode ap.Hecer em diver,os pedidOS.

RtJ4,oO IRj!1,2!j

odioo do Produ1o lIome do Produto15 N\JNu("~ NUIl-Nou!]:It C

:i5 Gumb~r (iwnmib8Ic!wn

::;'1Pre 0 Uni1irio

Page 18: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

II

Figura 5 - Relacionamento Muitos-para-Muitos

Exemplo: Itens de pedidos relacionados a produtos. A entidade Pedidos estarelacionado a Produtos atraves da tabela 'Detalhes do Produto"

As cardinalidades pcdem afetar a coloca,ao dos atributos nosrelacionamentos. As cardinalidades ajudam a posicionar as atributos nas entidades,dando uma visao mais clara dos relacionamentos entre entidades.

Page 19: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

12

3. ARQUITETURA ~IYSQL

o SGBD MySQL e estruturado no Modelo L6gico com base em Registros.Trabalha com conjunto de tabelas que pod em se relacionar entre si.

Existem vfuios tipos de dad os que podem ser usados para representar 0

armazenamento dados. Estes tipos de dados podem ser: (BURBELLO,2002).

- Numericos: (Tinyinl, Small/nl, Mediumlnl , Inl, Inleger, Biglnl , Floal:

Double, Double Precision, Real. Decimal, Numeric).

- Data: Dale, Dalelime . Timeslamp, Time. Year

- Caracteres: String , Char, Varchar, TinyB/ob , TinyTexl , B/ob , Texl:,

MediumB/ob. MediumTexl , LongB/ob, LongText:, Enum ,Set:

3.3. TRANSA(.OES

o MySQL incorporou essa caracleristica a partir da versao 3.23 ,sendoalualmente na versao 4.0 definida como do lipo /nnoDB como padrao para 0 Bancode Dados. Definidas por dois lipos de labelas. Tabelas que trabalham comtransa9()es seguras e tabelas com transa<;6es nao seguras. Elas serao descritasposteriormente.

Para 0 usa efetivo de transa<;6es, s~o definidos dais comandos para iniciar efinalizar transa<;Oes , que sao os comanctos ~commir e ~rollback" e tern como fun<;ao,efetivar a atualiza<;ao dos dados au desfazer a atualiza<;ao respectivamente. NoMySQL existe uma variavel de sislema que indica se as transa<;Oesirao depender docomando commil ou rol/back. Esla variavel quando 0 MySQL e instalado, estaconfigurada para as transa<;6es n~o dependerem do comando commit, e efetivandoas atualizaC;:Oes em tempo real. Para que as transa<;Oes finalizem dependendo docomando commit au rollback, deve-s8 configurar a variavel de sistema auto-commitpara manual, assim, a tranS89~o pode ser finalizada com 0 comando commit para

efetivar as atualiz8<;oes ou com 0 comando rollback para desfazer as atualiza908s.(BURBELLO, 2002)

Page 20: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

\3

3.2. npos DE TABELAS

o MySQL possui dois conceitos de classifica,ao de tabelas: as tabelas detransa,oes nao seguras e de transa,aes seguras. Este tipo de classifica,ao permiteescolher se as aplica,aes que 0 banco ira servir sao transa,aes atOmicas queprecisam de uma certificac;:ao que tal tranS8yaO foi concluida com sucesso.

Por questaes de implementa,ao na versao 4.0 do MySQL. sera atribuida~nfase a tabela do tipo Inno08, pois a mesma e considerada padrao no MySQL,conseqOentemente a mais utilizada.

Porem esta implementac;~o tern urn custo maior de tempo. Oesta maneira,aplicac;oes que nao precisam suportar transaC;Oes seguras, tern a vantagem de 58rmais rapida (YARGER.1999).

Ao criar uma tabela, e necessaria escolher a tipo de tabela, e aplar portabelas por tipo de transa,ao:

- transa,6es nao seguras: essas tabelas devem ser do tipo HEAP, ISAM,MERGE e MyISAM.

- transa,6es seguras: Devem ser do tipo 808, Inno08 ou GEMINI. Essestipos de tabelas cilados possuem implementa,aes diferentes, possibilitando aousuario escolher a melhor tabela que sua aplica<;:"iaprecisar. Assim, quando 58projeta a cria,ao de uma tabela, pode-se dizer qual tipo de transa,ao, esta tabela irasuportar (AXMARK, 2001).

Tabelas "seguras" sao mais lentas, mas n~o gravam completamente as dadosenquanto a transay80 nao for efetuada completamente, podendo ser recuperada aestado integro do banco de dados atraves de c6pias de seguran,a definido emLogs, por exemplo. A op,ao de usar 0 comando rollback e necessaria quandodeterminada candi<;ao nao eo satisfeita. sendo necessaria desfazer as atualizac;!3esque a transac;ao estava executando. Tabelas com transa9!3es unao seguras"possuem vantagens, permitem melhor performance do sistema de banco de dados,ocupam menos espac;o em disco e usam menos mem6ria para atualizac;6es. Essetipo de questionamento eo uti I quando se constroem consultas do tipo INSERT ouUPDATE.

Page 21: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

14

3.2.1. TABELAS TNt'100B

Tabelas do tipa l"noDB loram desenvolvidas para trabalhar com grande

volume de dados. E 0 tipo de tabela paciraa a partir do MySQL 4.0, nao sendo

necessaria configurar 0 Banco de Dado para seu uso. E mais uma OP930 dos tiposde tabelas que trabalham com lransac;O s seguras. 0 seu desenvolvimento fal

baseado no banco de dados Oracle. Tabelas do tipo InnoDB sao armazenadas em

urn espayo de tabels denominado Tablespace. Na tab/espace sao armazenados osdados e as indices, que pod em consistir em diversos arquivos. Esta arquitetura ebern diferente dos Qutros tipcs d ta!Jelas como My/SAM que sao armazenados emarquivos separados.

Para a criac;ao de tabelas, ao disparar 0 cornando, a sistema adicionara noespac;:o de tabelas (tBblespace) a arquivo de dad as no qual esta configurado 0

arquivo my.cnf e criara um arquivo com extensao .FRM que define a tabela.

3A. PADROE UTILIZADOS NO .\IYSQL

o SGSD MySQL luncio"a corn padrao da linguagem ANSI SQL-92, pacem

possui algumas excect6es nas decJara~Oes que requerem conhecimento dalinguagem e possui extensOes incillsas nas vers6es do MySQl recentementelanc;adas (AXMARK, 2001). Essas exceC;Oes pod em ser percebidas como. par

exemplo:

Os tipos de dad as como Me(fivmlnl, Set, Enum, Blob e Text;

Os atributos do tipo Auto Incremento, Null e Unsigned;

Os names dos Objetos do b nco (11Ollle, tabelas, campos) sao case-

sensifi' e flO MySQL no qLlal 0 sistema operacional tern diferenc;a em letrasmaiusculas e minusculas;

o comando de op ra9~oLike pode ser usado em tipo de dados numerico;o usa do comando Rename para alterar 0 nome de tabelas;

As declara~Oes para reparar, otimizar, checar e analisar tabelas;o operadar que possibilita 0 u a d comentlJrios;

Operadores 16gicas que podell1 ser substituidos pelos operadorss 16gicos

da Lingllagem de Prograrnaya c;o usa de varii'IVeis nas declara~Oes SQl;

o uso de comandos para concatena"ao de valores;

Page 22: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

15

Nao necessitar colocar lodos as names de colunas em uma declaraC;3oque possui a clausula Group By;

o usa de especificar a ordem do resultado na Cli3usula Group By;

Os comandos aeirna n~o fazem parte do ANSI SOL 92, mas aD iniciar 0

MySQL, e possivel fazer com que tenha 0 comportamento em modo ANSI. Bastainiciar com a OPC;30 -ansi e 0 sistema interpretara as declarac;Oes padrao ANSI.Porem algumas mudanc;as irao ocarrer, como 0 comando de concatenayao que saodiferentes entre 0 padrao ANSI e 0 MySQL. A opera,ao " (aspas duplas) queidentifica urn au mais caracteres. 0 tipo de dados Real sera urn sinonimo para 0 tipo

de dados Float aD inves do sin6nimo Double entre Qutras caracteristicas (AX MARK,

2001).

Alem disso, 0 MySQL nao possui Stored Procedures, Triggers (gatifhos) erelacionamentos implementados no pr6prio SGBD, sendo que 0 aplicativo deveefetuar a re1893o. Todas as questOes citadas nao foram implementadas devido abaixa performance se embutidas ao MySQL. A implementa,ao de Stored

Procedures, Triggers sera lan<;adana verseo estavel do MySQL 5.0.

3.1. COMPARA<;:Ao COM A VERS..\.O 3.23

A principal mudan,a para a versao 4.0 do MySQL , Ii 0 suporte nativo e agoratambem padrao as tabelas InnoOB. Ate a versao 3.23 eram usadas tabelas do tipoMyISAM. Com as tabelas InnoDB , 0 MySQL adquire a funcionalidade dastransa<;Oes,travamento par registro, e chaves estrangeiras. Entre as mudan<;as,tambem podemos citar:

A possibilidade de campos do tipo AUTO_'NCREMENT (auto incremento);Full- Text Search, para pesquisas em grandes campos do tipo TEXT;

A possibilidade do uso da clausula UNION;

Excluir mais de uma tabela corn 0 comando DELETE;A biblioleca libmysqlc/, sendo essa uma biblioteca contendo todo 0 engine

para manipula,ao do banco de dados ,A possibilidade de uso da clausula GRANT para permitir acesso aosobjetos do Banco de Dados, com novas op,oes;Variaveis dintlmicas do servidor, permitindo alterar suas configuray6es

sem parar 0 servi<;o;Replica,ao com outros servidores MySQL;

Page 23: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

Mudan<;as em seu c6digo visando a melhor performance do SGBD;

16

Page 24: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

17

4 - L1NGUAGEM SQL

Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos,foram criadas linguagens destinadas a sua manipula<;1io.0 Departamento dePesquisas da IBM desenvolveu a linguagem SQL como forma de interface para 0

sistema de BD relacional denominado SYSTEM R, inicio dos anos 70. Em 1986 0American National Standard Institute ( ANSI ), publicou um padrao SQL. A SQLestabeleceu-se como linguagem padn~o de Banco de Dadas Relacional. (SURJAN,2002)

Conforme descrito anteriormente, a linguagem SOL apresenta uma serie de

comandos que permitem a defini<;aodos dados, chamada de DOL (Data Definition

Language), composta entre outros pelos comandos Create, que e destinado acria<;ao do Banco de Dados, das Tabelas que 0 compoe, alem das rela<;Oesexistentes entre as tabelas. Como exemplo de comandos da classe DOL temos oscomandos Create, Alter e Drop. (SURIAN ,2002)

Os comandos da serie DML (Data Manipulation Language), destinados aconsultas, insery6es, exclusao e alterayoes em urn ou mais registros de uma oumais tabelas de maneira simultanea. Como exemplo de comandos da classe DMLtemos os comandos Select, Insett, Update e Delete. (SURIAN ,2002)

A DCL (Data Control Language), dispoe de comandos de controle como Grant

e Revoke. (SURIAN ,2002)

A Linguagem SQL tem como grandes virtudes sua capacidade de gerenciarindices, sem a necessidade de controle individualizado de indice corrente, algomuito comum nas linguagens de manipulayao de dados do tipo registro a registro.Outra caracteristica muito importante disponivel em SOL e sua capacidade deconstruc;ao de yis6es, que sao forrnas de yisualizarmos os dados na forma delistagens independente das tabelas e organiza<;ao16gicados dados. (SURIAN,2002)

Uma caracteristica interessante na linguagem SQL e a capacidade desuportar transac;oes, depois de iniciar uma seqOe!nciade atualizaC;Oes.Os comandosCommit e Rollback sao responsaveis por estas facilidades.

Page 25: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

18

4.1. T1POS DE COMANDOS SQL

A principia. as camandas SOL sao divididas em 3 categorias: as Camandas

DOL, DML e DCL.

4.1.1. COMAN DOS DDL

Os camandas DOL ( Data Definition Language) definem as estnuturas das

tabelas que irao comportar as dados que serao manipulados pela DML.

4.1.1.1. COMAN DO CREATE:

Este comando permite a criayao de tabelas, indices e 0 proprio banco dedados.

Este comando cria a banco de dados aonde ficarao armazenadas as tabelas.

a) Comanda Create para Bancos de Dados:

Sintaxe:CREATE DATABASE < nome_db >;

Exemplo:

CREATE DATABASE leste;

b) Camando Create para Tabelas:

Este comando cria uma label a dentro de urn banco de dadas.

Sintaxe:CREATE [TEMPORARYj TABLE < nome_tabela >

( name_atributo1 < tipa > [ NOT NULL],

name_alributa2 < tipo > [ NOT NULL ],

nome_atributa N < tipo > [ NOT NULL 1 ) ;Aande:

nome_table· indica a nome da tabela a ser criada.nome_atributo ~ indica 0 nome do campo a ser criado na tabela.

Page 26: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

19

tipo - indica a defini,ao do tipo de atributo integer(n), char(n),

real(n,m), date ... ).

n- numero de digitos au de caracteres1Tl- numero de casas decimaisPRIMARY KEY (nome_.campo, ... ) - Cha.e primaria;

KEY [nome_illdice] (nome_campo ... ) - Chave;

INDEX [Ilome_indic ••] (l1ome_campo .... ) - Indice para a tabela;

UNIQUE [INDEX] [nome_indice] (110mB_campo, ... ) -Indice unico;

FULLTEXT [INDEX] [illdice] (110m _campo .... ) - Pesquisa par textos lon90s;

FOREIGN KEY - Faz illtegridade referencial a outra tabela com 0

mesmo tipo de c 011'0.

Exemplo: defini~o cia Tabela FuncionariosCREATE TABLE Funcionarios (cod-func INTEGER.

Nome CHAR(50J ..

cod-dep CHAR(3).

FOREIGN KEY (cod-dep)

REFERENCES Departamentos (cod-dep)

)

cJ Comando Create para indices:

Crie um indiee dentro de urne tabeJa para agilizar a pesquisa dentro damesma.

Sintaxe:CREATE [ullique] INDEX <campo> ON <Fullcionarios> [«campo> asc)];

Onde:

<campo> - Eo campo que ..e des ja criar 0 indice;[«campo> <ase> <dec»] - Aonde asc ordena alfabeticamente e dec ordena

descrescente.

E.emplo:

CREATE unique INDEX cod-func ON Funcionarios cod-func asc);

Page 27: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

20

~.1.1.2. COMANDO DROP

Este comando elimina a definic;:ao da tabela, seus dados e referemcias.

Sintaxe:DROP [DATABASE) [INDEX) [TABLE) < nome_tabela >;

Exemplo:

Apagar a tabela "Funcionarios"'DROP TABLE EMP;

Apagar 0 Banco de Dados 'teste'

DROP DATABASE teste;

4.1.1.3. CO~IANDO ALTER

Esle comando permite inserirleliminar atributos nas tabelas ja existentes.

Sintaxe:ALTER TABLE < nome_tabela > <tipo> (

nome_atributo1 < tipo >

nome_atributoN < Opo >[NOT NULL),

[ NOT NULL) ) ;

<Tipos>:ADD [CAMPO] create_definition [FIRST I AFTER nome_campo]

ADD [CAMPO] (create_definition, create_definition ... )

ADD INDEX [indice] (nome_campo )

ADD PRIMARY KEY (nome_campo )

ADD UNIQUE [indice] (nome_campo )

ADD FULL TEXT [indice] (nome_campo ... )

ADD [CONSTRAINT symbol] FOREIGN KEY [indice] (nome_campo, .. )

[campo_referencia]

ALTER [CAMPO] campo {SET DEFAULT literal I DROP DEFAULT}

CHANGE [CAMPO] campo_antigo create_definition

[FIRST I AFTER nome_campo]

MODIFY [CAMPO] create_definition [FIRST I AFTER nome_campo]

DROP [CAMPO] col_name

DROP PRIMARY KEY

Page 28: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

21

DROP INDEX indiceRENAME [TO] nova_tabelaORDER BY col

N~o existe nenhurn comanciO SQl que perrl1ita eliminar algum atributo deuma relar;ao ja definida. Assim caso voc6 desejar eliminar uma chave primariadevidamente referenciada em Dutra tabela como chave estrangeira, ao inves de

obter a eliminar;:ao do campo, obtera apenas um erro.

Alem do comando DROP que podera eliminar uma tabela e suas rela"Oes,tambem podemos criar uma r la,ao que tenile os atributos que se deseja, copiar-sea relayao 8ntiga sobre a nova e apagando·se ent~o a relac;;~oque originalmentedesejavamos eliminar.

Exemplo:Adicionar 0 campo "DEP-SALA" a tabela Funcionarios:ALTER TABLE Funcionarios (

ADD DEPSALA DECIMAL (,10,2) );

Adicionar 0 campo "nacionalidade" a tabela ';Funcionarios" corn 0 valor padrao"portuguesa'"ALTER TABLE Funcionarios

ADD COLUM~I nacionalidade VARCHAR(15)DEFAULT 'portuguesa'

Remover 0 campo ~nacionalidade"da tabela "Funcionarios":ALTER TABLE Funciomirios DROP COLUMN nacionalidade

4,L2, CO~IANDO: D~IL

Os comandas DML sao: Abslreytla de dados, exelus~o, inser9aO eatualizactao. Sao os comandos que trabalham com a manutenQ80 dos dados.

Abstra9ao: A Abslra,ao de dadas oecrre com a eomando SELECT

disponibilizando as informa90es contidas ern uma ou rna is tabelas (entidades). Naversao 4.0 do MySql fo; incluso 0 usa de sub-consultas (consultas dentro de umaconsulta).

Page 29: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

22

Exclusao: A exclusao de dados ocorre atraves do comando DELETE

podendo ser parametrizado para seu usa;

Inclusao: A inclus~o de dados ocorre alraves do comando INSERT, devendo

ser parametrizado para que tenha 0 efeita desejado.

Atualiza~ao: A atualiza<;ao de dados ocorre atraves do comando UPDA TE,

devendo ser parametrizado para que tenha 0 eteita desejado.

Os comandos SQL quando forem parametrizados, deve ser usado com as

operadores 16gicos de compara~~o descritos abaixo:

Operadores 16gicos

operador significadoigual a

maior que>= maior que ou igual a

menor quemenor que ou igual a

like para procurar per valores especificados dentro da clausulausando a caracter (%).

A seguir, segue a rela9~o dos principais comandos Sal, sendo padronizadosno sistema ANSI 92, as quais sao necessarios para a abstra<;ao de dados de

entidades.

4.1.2.1. CO~IANDO SELECT

Sintaxe:SELECT <Tipo> <Campos> <Arquivos> FROM <Tabelas> [as] <LIMIT [rows»

[where <condi<;oes>] [order by <campo>] [FOR UPDATE I LOCK IN SHAREMODE]]

Select e 0 comando de pesquisa;<Tipo>[STRAIGHT_JOIN]: Forca para a MySQL juntar as tabelas na ordem em que

foram declaradas na consulta;

Page 30: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

23

[SOL_SMALL_RESUL TJ: Usado para performance. para poucos registros;

[SOL_BIG_RESULTJ: Coloca em tabela temporaria visando performance para

grande numera de registras;[SOL_BUFFER_RESUL TJ: Coloca 0 resultado em uma tabela temporaria.

para nao travar a tabela original;

[SOL_CACHE] SOL_NO_CACHEJ: Faz cach~ da consulta;

[SOL_CALC_FOUND_ROWSJ Retorna 0 numero de registros;

[HIGH_PRIORITYJ: Usado para performance. para pequenas consultas;

[DISTINCT I DISTINCTROW ] ALL]: Exclui registros duplicados ou nao (ALL).

<Campos>: sao as atributas as serem exibidos na pesquisa, separadas parvirgula (,).Para e xibir t oelos 0 s campos de todas as tabelas, deve-se colocar urn

asterisco (') no lugar;

<Arquivos>:[INTO (OUTFILE ] DUMPFILE) 'arquivo' op<;oes_exportar]

Usado para carregar dados de urn arquivo (LOAD) e salvar as dados da

consulta em um arquivo (DUMP)

<Tabelas>: sao os nomes das tabelas (entidades) que serao usadas na

pesquisa. tambem separados par virgula (.).

<LIMIT [rows]>' Retarna um numero Maximo de registros especificada.<as> : Sao apelidos que podem ser atribuidos as tabelas. tam bern conhecido

como Alias;

[WHERE <condi<;ao> ]: Utilize a clausula WHERE para quiser fazer urn filtro

par uma determinada condi<;80;

[ORDER BY <campo>]: A clausula ORDER BY sera utilizada caso seja

necessaria que a tabela seja ardenada par algum atributo;

[GROUP BY <campo>]:GROUP BY e opdonal. Valores de resumo sao

omitidos se nao houver qualquer fun,ao aggregate SOL na instru<;8o SELECT. Os

valores Null nos campos GROUP BY sao agrupados e nao omitidos. No entanto. as

valores Null nao sao avaliados em qualquer [un,ao aggregate SOL. Use a clausula

WHERE para excluir linhas que voce nao quer agrupadas e use a clausula HAVING

para filtrar as registros ap6s eles terem sido agrupadas;

Page 31: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

[HAVING <campo> =<> "valor"):HAVING e semelhante a WHERE, que

determina quais registros s~o selecionados. Depois que as registros sao agrupados

com GROUP BY, HAVING delermina quais regislros sao exibidos;

[<campo> BETWEEN "valor" AND "valor"): Eo usado para agrupar registros

com um intervalo de valores, como por exemplo. datas.

[FOR UPDATE I LOCK IN SHARE MODE)) . Bloqueia as registros retornados

em casa de atualiza9~o.

Obs.:

Pode haver mais de uma condi,ilo em qualquer lugar que utilize where (como

Select, Delete, update, etc). Nesse casa e necessaria incluir a expresstiobooleana (AND (e), OR (au) );

Para exibir dados (tuplas) de uma labela que nao esteja em outra, inelua

<Campo> NOT IN <Tabela>. as valores de <Campo> que estiverem em

<Tabela> nao ser~o e)(ibidos.

Oulras fun,Oes de pesquisa SOL silo:

Sum «Campo», efetua uma soma de todos as valores encontrados em urnatributo especificQ, vale apenas para campos numericos.;

Avg «Campo», para obter a media arilmetica desse campo de todos as

regislros na labela;

Extract (Day IMonth I Year from <Campo», para descobrir a dialmes/ano de

uma dala qualquer;

Min / Max «Campo», que exibe qual e 0 menar au maior valor do atributo

especificado;

<Campo>: Dec lAse, efelua a ordenayilo da labela em ordem Decrescenle ,

au Crescenle (Asc). Deve-se usar com a op,ilo ORDER BY.

Page 32: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

25

Exemplos:

1. Encontre 0 nome dos client s e seus numeros de emprestimo para todosas c1ientes que possuem um empr' stimo m alguma agencia.

SELECT distinct nome_cliente, T.numero_amprestimoFROM devedor as T, ernpnlstimo as SWHERE T.numero_emprestimo =S.numero_emprestimo

2. Encontre todos as vendas efetuadas e seus cJientes:

SELECT • FROM Clientes. Venelas WHERE (Vendas.CodClienteClientes.CodClienteJ ORDER BY Nom

3. Encontra todos os itens (10 estaque e as agrupe com quantidade > 100 ecom 0 nome com as iniciais "BOS"

SELECT CategorialD. Sum(UnidadesNoEstoqueJ FROM Produtos GROUPBY CategorialD having Sum(UnidadesNoEstoque) > 100 AND LIKE "BOS"';

4. Achar 0 numero do ernpresUmo dos emprestimos com total entre 90,000 e100,000 (isto e, = 90,000 and = 100.000)

SELECT numero_empr stimo FROM emprestimoWHERE total between 90000 and 100000

5. Encontre a nome dos eli !ltes e sel.ls nlJlTIeros de emprestimo para todosas clientes que poSSU-9murn empr stimo m alguma agencia.

SELECT distinct nome_cliente, T.numero_emprestimoFROM devedor AS T. emprestirno AS SWHERE T.numera_em restimo =S.numero_emprestimo

6. Encontre a nome de todos as clientes cuja rua contenha a substring 'Main'.

SELECT nome_clienteFROM clienteWHERE rua_cliente LIKE '%Main%'

Page 33: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

16

7. Encontre a media dos saldos em contas na agencia Hauer.

SELECT avg (saldo)

FROM contas

WHERE nome_agenda = 'Haue~

4,1.2,2, CONSULTAS ENVOL\,E:'<DO RELACIONAMENTOS ENTRETABELAS

Na clausula From pode-s8 especificar uma !ista de tabelas a seremrelacionadas, lembrando que essas tabelas tem que haver algum atributo em comum

para efetuar a consulta.

Exemplos:

1. Buscar 0 nome dos medicos com consulta marcada para 0 dia 13 deNovembro de 2002:

SELECT nome

FROM Medicos, Consultas

WHERE data = '11/13/02'

AND Medicos.codm = Consultas.codm

As variaveis de tupla pod em ser associadas a cada tabela declarada na

cl,;usula From equivale a r novo_nome_rela<;ao(nome_rela<;:lo) na algebra relacional

2. Encontre 0 nome e 0 numero de emprestimo de todos as clientes quepossuem urn emprestimo na agencia 'Hauer'

SELECT distinct nome_cliente,devedor.numero_emprestimo

FROM devedor,emprestimoWHERE devedor,numero_emprestimo =emprestimo.numero_emprestimoAND nome_agenda = 'Hauer'

Page 34: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

4.1.2.2.1. COMANDO INNER JOIN

Junyao de 2 tabelas at raves da satisfayao de um ou mais predicados entreatributos de cada urna das tabelas

Sintaxe:

SELECT lista_atributos

FROM nome_tabela1 [INNER] JOIN nome_tabela2 ON

nome_tabela1.nome_atributo1 predicado nome_tabela2.nome_atributo2

[{and/or nome_tabela1.norne_atributo n predicadonome_tabela2.nome_atributo nl]

Os nomes das tabelas sao concatenados aos atributos de junc;c3o no resultado

da consulta, par exemplo: buscar 0 nome dos medicos com consulta marcada para 0

dia 13 de Novembro de 2002

SELECT nome

FROM Medicos INNER JOIN Consultas

ON Medicos.codm = Consultas.codm WHERE data = '11/13/02'

4.1.2.2.2. COMANDO OUTER JOIN

Esse camanda separa colun8s de cleterminadas tabelas, podendo ser com osseguintes par~metros:

-left {outer] join: realiza a jlln<;~o, mantendo no resultado as tuplas da tabela aesquerda que nao se relacionam com as tuplas da tabela a direita

- right {outer] join: mesmo principia do left join, porem para as tuplas da tabela

a direita

Page 35: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

18

Sintaxe:

SELECT lista_atributos

FROM nome_tabela1 left I right [OUTER] JOIN nome_tabela2 ON

nome_tabela1.nollle_atributo1 predicado nome_tabela2.nome_atributo2[{and/or nome_tab ta1.nome_atributo n predicadonome_tab la2.nome_atributo n}]

4.1.Z.2.3. STR..\lGHT_,IOlN

E igual a clausula JOIN, sendo sua (mica diferenCY8e iniciar a consulta com atabela da esquerda e depois a direita.

Ex. : <tabela> STRAIGHT_JOIN <tabela'l~

4.1.2.2.4. NATUR.<I.L .JOIN

Eo igual a clausula LEFT JOIN, FiiGI'iT JOIN, sendo a sua diferen,a nao

necessitar usar a clausula USING, mostrando tooas os campos em ambas tabelas,mesmo que repetidos.

Ex. : <tabela> NATURAL [LEFT [OUTER]] JOIN <tabela1>

4.1.1.3. SUBCONS 'LTA

Subconsulta: forma alternativa de. expressar consultas envolvendorelacionarnentos entre tabelas.

ClllUsulas para tratamento de subconsultas: IN. ANY, ALL, EXISTS

Clausula ANY: Permite outras formas de c0tl1para9~o elemento-conjunto:

= any (subconsulta)

> any (subconsulta)

< any (subconsulta)

< > any subconsulla)

Examplo 1: buscar 0 nome de todos os funcionarios, exceto 0 mais idoso

Page 36: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

29

SELECT nome

FROM Funcionarios

WHERE idade < ANY(SELECT idade

FROM Funcionarios)

Clausula ALL: A condi9ao deve ser salisfeita para todos os elementos de urn

conjunto:

= all (subcollsulta)

> all (subconsulta)

< all (subconsulta)

< > all (subconsulta)

Exemple 2: buscar 0 nome dos funcionarios que recebem salarios superioresaos salarios pagos no departamento contabil

SELECT nome

FROM Funcionarios

WHERE salario > ALL(SELECT salario

FROM Funcionarios

WHERE departamenlo = 'conlabil')

Clausula [NOT] EXISTS: exists (suIJConsul/a) : Executa caso a condi9~0 seja

verdadeira na subconsulta;

Exemplo 3:

SELECT nome

FROM Medicos

WHERE exists (select'

FROM consultas

WHERE data = '11/13/02'

AND codm = Medicos.codm)

4.1.1.4. COiVlANDO U.'IIOi\

Podemos eventualmente unir duas lin has de consultas simplesmenteutilizando a palavra reservada UNION.

Sintaxe:

Page 37: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

30

(SELECT ... ) UNION (SELECT ... );

Exemplo 1:

(SELECT' FROM Emp WHERE EmpNume > 10)Union(SELECT' FROM Emp WHERE DepNume > 10);

Exemplo 2:

Encontre todos os clientes que possuarn um emprestimo, uma conta ouambos:

(SELECT nome_cliente FROM dep sitante)

UNION

(SELECT nome_cliente FROM dev dor)

~.1.I.5. INTERSECT

Retorna a intersey:'lo entre 2 consuUa

Exemplo 1:

Encontre todos os dentes que possuelTl ambos lima conta e urn emprestimo:

(SELECT nome_clients FROM depositante )

INTERSECT

(SELECT name_clients FROM devedor)

~.1.1.6.EXCET'T

Acha a dileren,a entre as 2 consultas.

Exemplo 1:

Encontre todos os clientes que possuem lima conta mas nao possuem

emprestimo;

Page 38: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

31

(SELECT nome_cliente FROM depositante)

EXCEPT

(SELECT nome_cliente FROM devedor )

4.1.2. CO~'IANDO INSERT

Insere dados dentro de uma tabela.

Sintaxe:

INSERT INTO <Tipo> <Tabela> «Campo 1>, <Campo 2>, ... , <Campo N»

VALUES«Valor 1>, <Valor 2> ..... <Valor N» [ON DUPLICATE KEY UPDATEcarnpo=expressao , ... ]

Insert into e a comando de inser,ao de dados;

<Tipo>:

[LOW_PRIORITY I DELAYED]: 0 processo e executado somente quando

todos as usuarios que estejam conectados a tabelas ([eitura) a abandonem, casacontrario 0 comando ficara em espera.

[IGNORE] : Ignora chave prirnaria ou valores unicos.

«Campo 1>. <Campo 2>, .. " <Campo N» sao os atributos que terl!o seus

dados informados, sendo opcional, case voce necessite incluir dados em tod05 oscampos, comando assume automaticamente.

Os valores ap6s values devem obrigatoriamente ser do mesmo tipo do seucampo respectivD e estar entre aspas, exceto atributos do tipo data e numero.

[ ON DUPLICATE KEY UPDATE campo = expressao, .. ] : Caso 0 campo

inserido cause duplicidade na hara da inser~ao, executa a comando UPDATE eexecuta a atualiza,ao do campo desejado.

Ex: INSERT INTO table (a.b,c) VALUES (1,2,3)

ON DUPLICATE KEY UPDATE c=c+1;

Obs:

Page 39: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

32

A q uantidade d e i tens em values deve s er i gual a 0 de campos e e star e msuas respectivas posi90es (um campo para um valor).

Exemplo:

INSERT INTO Clientes (Nome, Idade, Telefone, Endere~o) VALUES ('J080',

'35', '234-5678', 'Beco dos Afogados, n·. 13')

4,1.3, COIVIANDO UPDATE

Atualiza dados de uma au mais tabelas.

Sintaxe:

UPDATE [lOW_PRIORITY] [IGNORE] <Tabela> SET <campo 1 = expresseo

1>, ... , <campo N = express80 N> ]WHERE <condi~6es>] [LIMIT registros]

Update e a comando de edi~ao;

(LOW_PRIORITY]: 0 processo e executado somente quando todos as

usuarios que estejam conectados a tabelas (Ieitura) a abandonem, casa contrario 0

comando ficara em espera.

(IGNORE] : Ignora cllave prima ria au valores [micas.

<campo = expressao> e 0 valor que deve ser passado para determinadocampo;

(LIMIT] Limita a numero de registros a atualizar.

Obs:

Use a cl~l.Usula where para atualizar uma tupla ou urn conjunto de tup/as, anao ser que queira alterar todos as registros da tabela.

Exemplo:

UPDATE Clientes SET Telefone

Rica~os' WHERE Nome = 'J08a'

'000-0000', Endereyo 'Mansao dos

Page 40: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

))

4.1.4. COi\IANDO DELETE

Apaga registros de uma ou mais tabelas.

Sintaxe:

DELETE FROM [LOW_PRIORITY][QUICK]<Tabela> [WHERE <condi,ao>]

[LOW_PRIORITY]: 0 processo e executado somente quando todos osusuarios que estejam conectados a tabelas (Ieitura) a abandonem, casa contrario 0

comando ficara em espera.

[QUICK] : Apaga os registros rnais rapidamente. mas nao refaz indices.

Obs:

Use a clausula where para excluir uma tup/a ou um conjunto de [up/as, a naoS8r que queira alterar lodos as registros da tabela.

Exemplo:

DELETE FROM Clientes WHERE Nome = 'Joao'

o comando acima ira excluir todos os registros que tenham 0 valor "Joao" nocampo "Nome"

4,1.5. TRANSA<;:OES

Muitas vezes gostarfarnos que determinado processo, casa fosse abortadopor qualquer motivo, pudesse ser inteiramente cancelado. Imaginemos por exemplourn usuario digitando um pedido. Imaginemos ainda que 0 sistema passa reservar

cada item solicitado de maneira "on line", ou seja ao mesma tempo em que estoudigitando a quantidade 0 sistema jil "empenI1e" uma quantidade equivalente noestoque. Imaginemos ainda que 0 sistema deve cancelar todas as operac;Oes seapenas urn des itens nao puder ser atendido, seria urn grande problema, case naopudessernos anular todos as processos a partir de determinada condi9ao.

Exemplo:

Page 41: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

Esse exemplo inicia uma transa<;ao e caso 0 numero de registros seja maior que20, cancela a transa,aD.

begin transaction;delete from emp where salaria > 500;

if SQL_RECORDCOUNT > 20 THEN;

ROLLBACK TRASACTlON;

elseCOMMIT;

endif;

end transaction;

Page 42: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

Jj

5. METODOLOGIA

o procedimento metodologico desse projeto se separa em 4 partes:

Concep,ao do pruje.t ;Estudo bibliogri!fico sobre 0 aSswlto:Confect;ao da monografia:Desenvolvimento do prot6tipo.

5.1. CONCEP<;:AO DO PROJETO:

Esse projeto visa otend r a lima necessidade de ProgramadoreslDBA, no quese refere a uma ferramenta que para abstra~ao d e i nforrna,Oes de um Banco deDados com eficacia e dinamica, send que sua concep9ao e conceder umaferrarnenta gratuita. que possa eX9cutar ssa tarefa.

5.2. ESTUDO BTBLTOGRAFTCO SOBRE 0 ASSUNTO:

Foi efetuado lim estudo sobre a Ban' d Dados MySOL, sua estrutura, seufuncionarnento para que S8 possa desenvo!ver a ferramenta citada acima, sendopara isso necessario entender a sua arquitetura, a/em de conceitos e 0

funcionamento da linguagem SOL (Structured QlielY Language), pelo qual sera feitaa abstra,ao dos dados existentes no Banco de Dados. 0 objetivo e estudar todos osconceitos de SOL aplicados ao SGBD MySOL

5.3 CONFEC<;:;i.O DA MONOGRAFIA:

Essa fase do projeto nee ssaria para a documenta9~o do projeto, no qualconstara todo 0 processo de desenvolvimento do projeto, alem de um estudo sabrea arquitetura da Linguagem SQL alem do Banco de Dado. MySOL.

Nessa fase, tarnbem sao desenvolvidos os diagrarnas, especificamente os

Diagramas de Telus inicialm nte, a vis:io do prot6tipo na visao do usuario e doaplicativo.

Page 43: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

36

5.-1DESENVOLVIMENTO DO I'ROTOTIPO:

o prot6tipo tem como sua prioridade extrair informa<;Oes de banco de dados

MySQL como mencionado, de acordo com 0 material apresentado para a pesquisa.o desenvolvimento do prot6tipo e baseado nos conceitos apresentados durante arevisao da literatura, e tendo como base a arquitetura MySQL estudada e a

linguagem SOL no padrao ANSI 92. Tambem foram estudados softwares que tem

essa ferramenta embutida em sua implementa<;:a.o, como 0 Microsoft Access e 0

Microsoft SOL Server. A Implernenlac;ilo compreendera as seguintes tarefas:

Criac;ilo e remoC;ao de bancos de dados (Via Comandos SOL);

Criac;ao e remoC;ao de tabelas em bancos de dados (Via Comandos SOL);

InserC;ao, edic;ilo e remoc;ao de campos de tabelas (Via Comandos SOL);

Inser<;:ao e remo<;:ao de indices e chaves primarias de tabelas (ViaComandos SOL);

Inserc;ilo, remoc;ilo e atualizac;ilo de dados de tabelas (Via Comandos

SOL);

Interface Grafica com 0 usuEuio para a criac;:ao de consultas ao Banco deDados.

De acordo com 0 material estudado, a implementa<;:ao e constituida com basenos conceitos importantes de extrayao de dadas, resultando em facilidade eagilidade no processo. Sao analisadas tambem, outras ferramentas de diferentesbancos de dados disponiveis hoje, que servem como fonte de informa<;Oes para 0

aperfeic;oamento do prot6tipo proposto. Ferrarnentas que dispOem de recursos para

executar suas tarefas respectivas a sua estrutura de banco de dados.

Foram analisadas as seguintes ferramentas:

- Microsoft SOL SeIVer Enterprise Manager e Microsoft Access: queapresentam grande poder d e gerenciamento e f acilidade n a e xecU9aO de tarefas,construC;ilo de consultas;

De acordo com 0 apresentado , essas ferramentas fazem 0 gerenciamento dobanco de dados e a Abstra<;ilo de dados de seus sistemas respectivos, sendo

necessaria a mesma estrutura ao MySQL.

Page 44: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

37

o prot6tipo e proposto com caracteristicas diferentes dos ja. apresentadospara MySQL. Basicamente 0 Gerenciador sera dividido em 4 modulos, as quais saodivididos em:

SOL Window DispOe de uma interface em comandos SOL para ausuario digitar suas pr6prias consultas, sendo passivel ter e gravar ascomandos em arquivos no formata texto a qualquer momenta que

precisar, facilitando a execuyc30 de comandos Sal frequentementeexecutados. Esse modulo recebe as consultas geradas pela modulo"Gerador de Consultas SOL".

Gerador de canSl/ltas SQL Uma ferramenta grilfica que auxilia 0

Programador/DBA a c riar consultas sem p raticamente a necessidade d eusaf a linguagem Sal, mas de prefer~ncia, tendo conhecimento damesma para 0 melhor entendimento da cri8C;:8o e execuyao de umaconsulta baseada em SOL.

Servidor MySOL : Esse m6dulo tem a funyao de eretuar a conexAo com 0

servidor MySOL, sendo de extrema importAncia para 0 prot6tipo. Devemser informados 0 host, usuario, senha e banco de dados que serAoutilizados para executar os com;andos Sal.

Resultados d a P esquisa: Esse modulo tem a fun<;ao de reeeber osdados retornados pelo servidor MySOL quando e executada uma consultano mesmo. Interage com 0 modulo "SQl Window", pois 0 mesmo reeebe a

instruyao SOL e faz a execur;ao da instruyao. Caso a instruyao sejaineorreta, 0 prot6tipo mastra a mensagem de erro da exeeu<;ao dainstruyao SOL.

A ferramenta escolhida para implernentar;ao, foi 0 Microsoft Visual Basic 6.0,

pais, sendo uma linguagem que trabalha em ambiente Microsoft Windows e pelagrande facilidade e flexibilidade de implementa<;ao utilizando os reeursos que 0

Microsoft Windows dispOe.

A plataforma a ser utilizada e a Microsoft Windows 2000 pela car~ncia degerenciadores de bancos de dados MySOL nesta plataforma. Pois apesar do MySOLser projetado para Sistemas Operacionais Unix e Linux, sua utiliza<;ao em AmbientesWindows tem crescida bastante.

Page 45: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

JS

A versao do banco de clados MySQL sera a 4.00.13 para ambienteoperacional Windows. As versOes do MySQL estao classificadas por tres numeros.o primeiro numera indica 0 formato de armazenamento de tabelas; 0 segundonumera indica 0 nivel de desenvolvimento, que pode ser estavel au emdesenvolvimento, ou seja, nojo estavel: jEt 0 terceiro numera indica as atualiza90esdo nivel de desenvolvimento. A escolha da versao a ser trabalhada no prot6tipo e aultima verseo disponivel no momento. Porern ja existam Qutras versoes em fase de

desenvolvimento, mas nao esteveis, par issa a escolha de uma versao homologada.A implementa~~o estara disponivel para utiliza~ao nas versOes4.00.12 e 4.00.13 doMySQL. Qutras versOes podem n~o vir a funcionar corretamente par possiveis

mudan~as na arquitetura do banco de dados.

Para a implementa~ao, sera utilizado um a interface ADO (Active Data

Objects), responsavel pela conexao ODBC e OLEDB, aonde e possivel fazer aconexao com 0 Banco de Dados MySQL, sendo necessario para essa conexao 0

driver MyODBC 3.51, no qual 0 Visual Basic 6.0 faz referencia no prot6tipo.

Os produtos gerados pelo projeto silo: Diagramas de Telas, manual dousuario no forma to HTML, e os demais diagramas que a metodologia adotada exigir.

Page 46: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

39

6. CONSTRU<;:Ao DA FEHRAM ENTA:

A constru<;ao da ferramenta baseia-se em uma ferramenta de programa<;ao

grafica, sendo usada no desenvolvimento do prot6tipo, a ferramenta Microsoft Visual

Basic 6.0.

Inicialmente 0 MySQL foi projetado para Ambientes Operacionais Unix e

Linux. Mais tarde devido a necessidade, 0 MySQL foi projetado para plataformas

Windows. A plataforma a ser u tilizada pelo prot6tipo e 0 Microsoft Windows 2 000

pela maiaria dos usuarios usarem esse ambiente.

o prot6tipo pade conectar-se tanto a servidores Linux, Unix quanta a

servidores Windows, sendo sua interface desenvolvida para 0 ambiente Windows.

Nas figuras 6 e 7 , e mostrado como foi estruturado 0 prot6tipo para 0

entendimento de como 0 prot6tipo funciona.

hlySQL SOL Constructor - Vlsao do Usuario

SfrYic!or MySQLEfe(uJ (l ccneAJO (('TI I) $eMdor MySQL

Cll;!.mc 0 modulo "Menu Pnncipar

MOdulo M~r.u PrincipelAmbiente do prot6tipo

Chama Modulo GerCtdorSQL I Servidor MySOL f Gerador Consutas SOl

SOL WindowDlgite 0 titulo l:!qul

Gerodor Constllr,l$ SOLInterface Geradore dOs comi:ln,jo~ SOL

Resut.Jdos da Pesqul".,E)(ibe 0' resultados de urn comando SOL executildO

CMma mOdutJ "Re!;ultados 01 Pesquita"

Figura 6 Visao Geral do Prot6tipo - Visao do Usuario

Conforme a Figura 6. cada quadro e a divisao do m6dulo do prot6tipo, junto

com suas func;Oes a executar.

Page 47: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

40

hlySOL. SOl Comtructor· Vl~30 C.JConltrur;io dO;.pltcatiYQ

"',(Qoee Driver

Inleri3ce AOO·OOBC com 0 OrNer MyOD:3C

m,mCi2rI);)S

InlCllllz~ ApliC~IMl)llIciall:') Cil"e cConecO.Cl1

:ubm;:lInOCh.;;mJl a mOdulQ frmSl!!"VIocr

IWl5efllc.lor.tnn

C/larn3 maculo IrmMenL!Pnnclp~

ctu~m ••cl~ne cCon=:t,:ro,Ci, e lretCao t'JoCl!J"regl~nCO,~tJO:urel)aT:lOeI33

SOL Window

CIiJITl:t 0 rrmSQLD3do~,l'rm

ReStJt.lCOSC:;IPI ••.•'lL!11O)

ch;1lm.a!lnse CI.'onCDO SlJtC"rreQ,......,laresElC.~o'''':l10~~D:lCOn''-l1t>3nl!tel~

Figura 7 Visao Geral do Prol6tipo - Visao da Construc;ao do Aplicativo

Conforme a Figura 7. cad a quaclro compoe suas respectivas fun9~es,

incluindo as chamadas a classe clsConexao e seus metodos e a chamada a outros

m6dulos que compOem a prot6tipo.

6.1. SERVIOOR MYSQL:

Esse modulo deve efetuar a conexao com a banco de dados MySQL. Pela

sua interface e permits escolher 0 servidor de banco de dados, efetuar a

autentica9~o no servidor, e escolher 0 banco de dados a ser usado. Esse m6dulo ecarregado antes do menu principal, pois ele e a primeira interface entre 0 usuario do

prot6tipo e 0 banco de dados (Figura 8).

Como em muitos casos 0 prot6tipo estara instalado na propria maquina

servidor,o mesmo disponibiliza os comanclos Hlocalhosr , ~root".

Page 48: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

.,

"local host" : E 0 nome do servidor MySQL, sendo "local host" aponta para a

propria maquina ande esta instalado 0 prot6tipo.

"root" . E 0 usuario administrador padrao do MySQL. Possui direitos sobre

todos as bancos no servidor, sendo esse normalmente usado para esse tipo de

conexao.

l·'.AI 1

t>.

I-I

( __ SOL

'"1-----:1_~:'"- --i -r:~\llHlZrolU. ~ 1«•..•." I

!.:;... ••••({)~~..i,l'!(! ~~,--~~i:::.,1

--- -_-.iJ ,f!. I

,/,,1 /J. .oJ~.:.4l et:a~~ d ~jt·"""",,1~mf"·t' ..·10,t,o~h"·!9"ir.t...I~(H'A~··..It'>H'I'4l ...1 ~~<.i·rrv ::C(r)'

Figura 8 - Tela de Conexao com Banco de Dados MySQL

6.2. MENU PRINCIPAL:

Esse m6dulo e responsavel pelo ambiente grilfico do prot6tipo, sendo

disparado 0 modulo desejado atraves de sua interface. Tern a fun((ao de gerenciar

(carregar, finalizar) os m6dulos (Figura 9).

Page 49: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

Figura 9 - Menu Principal do Prot61ipo

6.3. GERADOR DE CON ULT,\S:

Esse modulo consiste em exib;r as tabelas pertencentes ao banco, ascomandos SOL disponiveis p ra 0 uso com 0 b,lncO de dados MySOl. as camposdas tabelas seiecionadas para a consulta, e a parametrizay~o da consulta, ondepodem ser colocados as regras para a exe lIC;ao da consulta.

TOO05 as comandos SQl estao separacios por seu objetivo, sendo essesDel. DDl e DML. Ainda e.istem as furwoes usadas dentro dos comandos DMl. queesUia separados em "Fun~(5es" .

Ap6s selecionados campos. tabelas, tipo de instru<;ao SOL. executa-se 0

procedimento "G rar Coman a SOL", onde 0 mesma interpreta a solicitac;ao dousuario do prot6tipo e coloca a instru<;M SOL no modulo "SOL Window" 0 mesmoe mostrado na Figura 10.

Page 50: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

43

Figura 10. Tela do Gerador de Consultas

6.4. SQL WINDOW:

Esse modulo recebe a consulta SOL gerada pelo modulo "Gerador Consultas

SQLH, recebida a consulta, a rnesma pode ser executada para exibir 0 resultado no

modulo ··Resultados da Pesquisa" (Figura 11).

Page 51: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

1l~1I1~1I

Figura 11. Tela do SaL Window

6.5. RESULTADOS D~ I'ESQUI.~A:

Esse modulo respons8v I peia exibi~aodos dados fornecidos pelo modulo"SOL Wil1dow", s€lldo esse a saida dos r slIltados da consulta em video. 0 mesmae mostrado na Figura 12.

A ideia inicia! do prot6tipo e gerar comandos SQL para serem usados emseIVidores MySQL, sendo essa ideia 0 nllel 0 do prot6tipo. Para isso forarnanalisados varios passos de como a linguagem de programaytio interagiria com 0

servidor MySaL. Coneluiu-se enta 0 uso de Iliblioteca "Iibmysql.dll", pertencente aoMySQL. a qual faz a interface do aplicativo com 0 se",idor de banco de dados. Como tempo de irnplantayao da I ibliot ca, e 111 seus testes, a mesma n~o retornava osval ores desejados peto sistema, exigindo um conhecimento profundo de como fo;programado 0 MySQL (C++), endo S5im lima ferramenta que atrasaria 0

desenvolvimento do projeto.

Page 52: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

45

Efetuando-se uma nova analise, foi aprovada a interface ODBC do MySOLcom 0 nome de "MyODBC", na versao 3.51, por ser a interface ODBC padraohomologada pela MySOL AB, corpora,ao respol1savel pelo MySOL. 0 ODBC e urnpadrao de aces so a banco de dadas, fazendo a interface de urn aplicativo com 0banco de dados, isso tambem se aplica a outros SGBD do mercado. Com essaferramenta, consegui-se abter a interiace para executar os comandos Sal noservidor. Apos essa fase parte-se para a fase final do prot6tipo, pois 0 mesmo ja

tinha uma interface e 0 seu nucleo rodando basicamente. Com isse, podemos

ajustar os comandos SOL para sua execu980 no servidor, sendo 0 prot6tipo 0criador dos comandos atraves de sua interface, que interage com 0 usuario final doprototipo.

b:'- ". '"

rtEWKisOL

:t1ofe('"NIJ.'~AIIJAt.RU~ :'!::'I Ii! .fil)AGL'ILHEPIm.1A In Ij.~

fUJoIo,\'!·f.U

(iWIor (:1101RIOIIEQ\O FflL.Ac.i~ tCf..\H\.\ClORl. fIS~JIJ~DO_. FAHJUCA'OO$. FA

""'.1110137'52:"jlcr.:O~.00'»)010510>;.lM,UH11.axttmQ

T!W(lr.(lJ,I.,rr·(Vl),IESUIl!.lVtrtAFWII'lI!l>.ARAfUt.lfToE1.'lOf'VllIQTE fu..HfIf'IIITOlO'OO {,I''S.' U.u..C~UEN

tloer ••••_~-.,.C;fl:~lOK.e.o(WM~~~'d.M'-~-~-" ....rMqJt'....t,";,~: ••h1.t<IC-~;\

Figura 12. Tela de Resultados da Pesquisa

Page 53: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

46

6.6. DIFEREN(AS NO USO DE FERRA~IENTAS

Com 0 desenvolvimento do SOL Constructor, 0 usuario pode manipular 0

banco de dados MySOL de forma elicaz apos 0 uso freqGente do prototipo,ganhando tempo em desenvolvimento de consultas . A seguir sera apresentada urnacompara<;i!o de como e trabalhar com a interface nativa do MySOL (Figura 13) ecomo pode ser trabalhado hoje com a ferramenta desenvolvida (Figura 14). Asdiferen98s no usa de ferramentas podem representar ganhos de qualidade, rapidez,confiabilidade e segurany8, entre outras. Corn visualiza9ao graficas dos objetos do

MySOL (tabelas, bancos), ganha-se em velocidade de constru<;i!o de consultas,agilizando 0 processo de manipulaC{8o de dados.

Figura 13. Manipula<;i!ode Dados no Console MySOL

Conforme mostrado na Figura 13, 0 usa da interface texto e confusa e poucoprodutiva, pois a mesma distorce os dados exbidos na tela.

Page 54: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

l"'ECT'nIO"-

r.•••i'..SOL

- - -

47

..J.<J.!<I

.!<I

:oJ

.:J

.!<I

J

:J

S'-ilj}A·n·e, ,j,o II !' ~L d ,II "" ,I

A(.;ht.r

Figura 14 Manipula,ao de dados com 0 MySQL Constructor

Conforme mostrado acima, atraves das figuras 13 e 14,0 console do MySQL

torna·se confusa, sendo a interface grafica mais organizada e eficaz para a cria9aodas consultas e a exibi,ao dos dados.

Com urna breve compara<;ao entre os dais metodos, roi executada algumastarefas que 0 usuario usual mente costuma fazer. E com urn prot6tipo graficQ, arapidez e agilidade para executar as tarefas, sao comprovadamente eficientes naodesgastando 0 usuario com digita9(jes e correndo 0 risco de cometer erros.

Foi utilizado a cronometragem manual, ou seja atraves do usuario simulandorealmente as operac;oes Hstadas abaixQ, nao sendo usado nenhuma ferramenta deautomatiz8yaO do processo.

Page 55: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

empos de Execue;:50:

DiQitar 0 nOtTie do servidor ou

arefa: MySOL Constructor: Linha de Comando:

onectar com 0 servidor e ExecL)tar 0 MySCL Const/Uctor ; entrlif em c:\mysql\hin;

rnostrar lodos os Banco5

I <:licar m "loc,alhost";

I DigitEtf 0 usuerio ou clicar em executar 0 "mysql.ewe -u root

"root"; - pwd senha";

i Clicar em "Listal Banc;O$"; teclar "enter";I executar 0 comando ~SHOW

I DATABASES;"

tectar "Bnter";

ihtnpo: ~OO~:0~5. 0~0_:0~

~elecionar todas os dado~ de Seleeiol1ar c) labela;

rma tabelaCticarern '''M;

Ctic;ar em "Gerar Sal";Cliear em "Execut~r SaL";

Tempo:

eJl:ecutar 0 comando

"SELECT * FROM <label21>"

Digitar";"

teclar "enter";

00:05 00:0

!Selecionar um campO de uma Selecionar a tabela:

abela

elie'Er em "CiOlmpo";

Cficar em "G rar S L";

Clicar em "ExCCtltar Sal";Tempo:

executar 0 comsndo

"SELECT <campo> FROM

<Iabela:>"

Digiti1r";"

teclar "enter";

00:05 00:0

"SELECT' FROM

sileCianar lal ela1, tabela/l/; executar 0 com:an~

releCionar mail. de uma

abela

<tab~la1>, <t(lbelaN>

CHcar em "campo"; Digilar ";"

teclar "enter";CHeer em "abaixc";

CHeer em Higual";

Clicar em "campo";

Clit,;ar m "abaixoM;

Clicar em "Gerar Sal";Clicar em "Ew.ec~ltar Sal";

Tempo: 00:05 00:0

Page 56: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

~elecionar mais de uma

abela com rela~~o entre

mbas

49

Tempo:

Selecionar labela1, labelaN;

C1K;ar em "campo";

Clicm em "abaixo";

Clicm em "igual";

Clicar em "campo";

Clicar em ~abaixo";

Clicar em "Ger1,lr SQl";Clicilr em "Executar SOL";

00:08

execular 0 comando

"SELECT <campo> FROM

<labela1 >,<tabeI2N> WHERE

<labela1 >. <ctlmpo>

=<tabelaN>.<campo> "

Digitar ";"

teclar "enter";

00:11

Page 57: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

50

7. TESTES J YALlDA("OES:

Foram compostos no protatil'O uma rotina de avalia9~0 do prot6tipo. usando-se de exaustivas testes de usa do prot6tipo para conseguir a certifica~o de urnprot6tipo sem problemas de desenvolvimento. sendo leito atravilS das seguintesetapas:

o prot6ti a se comport mostr ndo 0$ froS acontecidos, rnostrando qual 0c6digo do erro e sua mensagem de erro re pecti'Va, possibllitando ao usuariocontinuar executando mesmo (exceto quando 0 erro acontece com urn comandoenviado para 0 MySQL executar) corn 0 erro Oll nbortando 0 prot6tipo.

Fora tambem disponibilizado 0 pr totipo para 0 usa de urn profissional da

area de Banco de Dados (Empresa Premier TI) para usar 0 prot6tipo e ajudar aavaliar a qualidade do mesmo.

7.1. ERROS INTERNO NO DE. EN\OLVIMENTO

Nessa fase foram testados exaustivamente todos os m6dulos do prot6tipovisando urn prot6tillO livre de erros, garantindo a qualidade do prototipo e do uso domesmo pelo usuario.

as testes foram executados como S 0 prot6tipo esti'Vesse simulandopossiveis situ89eJes de urn efro dentro do prot6tipo, desde a nao conexao com 0banco de dados ate a execu~o do romando SQl no modulo "SQl Window". 0prot6tipo tambem foi usado por urn profissienal da area de banco de dados conformedescrito no item 7.

Optou-se por rnostrar as l1lensagens de erro do proprio MySQL, sendo essequando ocorre uma consulta com sintaxe errad8. 0 pr6prio engine do MySQL

retorna em qual parte da consulta a sintaxe esta errada, proporcionando agilidade no"debug~ da consulta.

Para erros gerados pelo Visual Basic 6.0. foi desenvolvida uma rotina (abaixo)que trata 0 erro e a rnostra para 0 usuario. perguntando ao mesmo se 0 prot6tipodeve continuar a execu<;ao mesillo com 0 erro ou nao.

Page 58: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

51

Sub trata_erro()

msg ; MsgBox(Err.Number & •• II .. & Err.Description & ••

continuar?? ", vbYesNo, HErro")

If msg ; vb Yes Tllell Resume Next

End Sub

Oeseja

=

~E~·· ~~ ~.J.J~.J..:J~." I~!:!::I~,-~·--I~...:..-I='1 iy.... - 1•••• ..-. - -

r.-:T:l /1 I 11~ :.:l,r;~:::aM._,..." .... __I _'••.- ••.-.IfJ,_'-_I~'fI·"_ "-~,,-.::;...,.-;-,;-

Figura 15. Mensagem de erro exibida 80 usuario.

7.2, INTERFACE COM 0 uSliAlUO

o objetivo do prot6tipo e proporcionar atraves de sua interface, 0 modele mais

intuitivD passivel para a uso da ferrarnenta, otimizando ela atraves de urn usa

freqOente da ferramenta

Ao inicio do projeto foi analisado como a usuario interagiria com a interface

pois a proposta do projeto e de simplificar a constru9ao de consultas, logo a interface

deve ser amigavel com 0 usuario, mas ainda assim nao dispensa 0 conhecimento do

usuario da linguagem SOL.

Concluiu~se enta.o qu havia a necessidade do desenvolvimento de uma

interface contendo os objetos do banco de dados (tabelas, campos, etc), opera90es

possfveis dentro desses. tudo com 0 usa do mouse, tornando-se mais intuitivD.

Page 59: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

52

Foram tambem separados a tela d execu,ao de instru,Oes SQl (SQlWindow) easo a usuilrio optar par digitar a instru<;aoSQl diretamente na janela.

A janela de resultados (",odulo Resultado da Pesquisa) tambem foraseparado em outra janela, no qual' din.:lmica, para pode canter as campos e dadosda consulta disparada no m6dulo "Sal Window"

A janela de eanexao com a servidor moclulo Servidor MySQl) tambem foraseparado, pais ele deve acontee r ante de qualquer instrw~~o SQl, pais sem aeanexao , a instru<;:8onao sera e)( cutada,

7.3. TESTES DAS STNTAXES DOS COMANDOS SQL GERADOS I'ELOI'ROT6TLI'O

Nessa fase, foram te tados too s as cOlllandos citadas no capitulo 4(Linguagem SQl) para uso no MySQL.

Foram exeeutados eamandos mais comuns (SELECT, UPDA TE) e comandosmais especlficos (TOP,IN,EXCEPT.1NTERSECT), sendo esses descobertos que naofuncionariam com a versao utilizada do MySQL nesse prot6tipo. No caso de um

camanda n~o conseguir ser executado,0 MySOl emite uma mensagem informandoque nao foi passivel executar 0 camanda e informa em qual passo do camandaaconteceu a erro.

Page 60: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

Figura 16. Testes e.eculades com 0 prot6tipo.

7.4. TESTE. DE ERROS DE CmmXAO COM SERVIDOR

Nessa lase, foi testada a cone.ao com 0 servidor MySQL , podendo 0

servidor ser instalado localmente Bond esta 0 ap!icativo (loea/host) , e podendo sertamMm um /)ost remoto rTCPIIPj. D vide a conectividade desse protocolo, epassivel gerenciar servidores fora de uma rade local, podendo gerenciar qualquerservidor na internet (i550 e passivel ,mas depende se sua configurac;:ao de redeTCPIIP e a configura,~o de rede do servidor)

A primeira parte e 0 /)os/ no qllal 0 servidor MySQL esta instalado. Deve se

informar 0 nome DNS (Domain Name Serlfice) , ou seu endere<;o TCPIIP. 0 nome

"local host" e paclr~o em qua!quer servidor, 1 indows au Linux / Unix, sendo umaconven,ao do TCPIfP para cone.ao corn a pr6prio servidor.

Para 0 usa do nOlTle DNS, 0 servidor MySQL deve estar registrado com seunome em um servidor DNS.

A segunda parte e 0 nome do usuario. Usual mente, 0 MySQL tern 0 usuario

Nroot", que tem acesso a todas as tabelas, inclusive as tabelas de configuraQao doMySQL. Pode-se usar outro lIsuario que nao seja 0 "roof, mas esse deve ter acessoao banco e tabelas definidos, senao 0 servidor pode rejeitar a conexao.

A terceira parte e a 5 I1l1a. Assim como e necessaria 0 u5uario, tambem e

necessaria a senha para e se usuario. Se a senha for diferente da qual foicadastrada ao usuario no servidor MySQL, a conex~osera rejeitada.

A quarta parte Ii 0 Banco de Dados. Infof'mados lIsuaria e sen has, a MySQL

retornara os Baneos de Dados no qual 0 usuaria informado tem acesso. Deve seescolher 0 banco de clados para I oder utilizar 0 prot6tipo.

Foram efetuados testes de arros de conex~o com servjdor MySQL(autentica,80, s rvidor nao existente,etc.)

Page 61: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

54

7.5. TESTES DE INST ALA(:AO DO PROTOTIPO

Essa fase consiste em gerar 0 aplicativo instalador e testa-Io em variosambientes. certificando 0 sucesso de sua instalaC;ao.0 ambiente de execuc;ao doprot6tipo e 0 Microsoft Windows, independente do servidor. Fora gerado 0 programade instalaC;aodo prot6tipo , que depende dos seguintes componentes:

7.5.1. RUN-TI~IE VISUAL BASIC 6.0

Esse componente e vital para a execw;:~o do aplicativo, pais a linguagemVisual Basic, apesar de compilada, necessita de bibliotecas com fun9~es externasalem do arquivo executavel.

Para a cri8980 do instalador do produto, 0 Microsoft Visual Basic oferece 0m6dulo "Package & Deployment Wizard" , citado no Anexo VI

7.5.3. BIBLIOTECA DE ACESSO A BANCO DE DADOS ADO (ACTIVEDATA OBJECTS)

Essa biblioteca faz 0 aces so a servidores de bancos de dados atraves daOLEDB, sendo uma interface para desenvolvimento de aplicativos que acessam

bancos de dados. Como e uma biblioteca aberta, pode ser usada tambem por outraslinguagens como a Delphi C++ Builder e etc. Na linguagem Delphi essecomponente vem como padrao para acesso a bancos de dados.

Como padrao, 0 ADO vern distribuido no pacote MDAC (Microsoft Data

Access Components), que alem das bibliotecas ADO, tambem instala a ultimaversao os drivers de acesso aos bancos de dados mais utilizados atualmente(Oracle, SOL Server, Access, etc).

Obs: a driver do MySQL nao vern como padrao no pacote, sendo necessariainstalar a pacote com as drivers para acesso ao servidor MySQL. como seraexplicado no item abaixo.

Page 62: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

jj

7.5.3. MYODBC .1.51

Este componente e instalado para que a biblioteca ADO possa acessar 0dliver do banco de dado. MySQL . pois esse driver nao vern instalado como padraono pacote MDAC. Para 0 prot6tipo, deve ser usado 0 driver na versao 3.51 ousuperior, pais case contra rio 0 mesmo n~o fetuara a conexao com 0 servidorMySQL.

7.504. SER iDOR CO~1 0 ~IYSQL.

Para que 0 prot6tipo possa ser lIsado, deve existir um servidor MySQL vers~o4.00.12 au superior para fazer a conexao, caso contrario, ° prot6tipo nao consegueexecutar as consuHas criadas no masmo, pois quando efetuar a conexao com 0

banco e executar a cOllsulta d ~ntro do servidor, 0 prot6tipo retornara umamensagem de erro, sendo essa mensagem do pr6prio servidor MySQL. naapossibilitando a sua execuyao.

7.6. TESTES DO PROTOTTPO

Nessa fase, fora executado 0 prot6tipo em ambientes Microsoft Windows etestada sua conexao com 0 servidor de Banco de Dadas conforrne a tabela abaixo:

Todos os testes sao efetuados alraves de cone.ao de rede TCP/IP , naosendo usado outrO protocolo para comllnica~ao. A porta TCP/IP usada e a 3306.usada como padrao pelo MySQL.

Sistema Operaci~naI CHen!!;. r.:!~eria OperacionaI Servidor:Microsoft Windows 95 !Microsoft Windows 2000 ServerMicrosoft Windows 95 IRed Hat Linux 7.3Microsoft Windows 98 -~- IMicrosoft Windows 2000 ServerMicrosoft Windows 98 [ReelHat Linux 7.3Microsoft Windows NT4:0 IMicrosoft Windows 2000 ServerMicrosoft Windows NT 4.0 IRed Hat Linux 7.3Microsoft Windows 2000 Server Microsoft Windows 2000 ServerMicrosoft Windows 2000 Server IRed Hat Linux 7.3IMicrosoft Windows 2000 Professional IMicrosoft Windows 2000 Server

Page 63: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

56

Microsoft Windows 2000 Professional Red Hat Linux 7.3

Microsoft Windows XP Pro Microsoft Windows 2000 Server~M~i~c=ro~s~ofift~W~i~n~d=ow~scX~P~P~r~o----------I=R-e~d~H~a~t7L~in-u-x~7~.3~--------------~

• sistema operacional cliente e aonde esta instalado 0 prot6tipo;

sistema operacional servidor e aonde esta instalado 0 servidor MySQL, caso

esteja em ambiente Windows, podendo tambem executar 0 prot6tipo.

De acordo com os testes, 0 MySQL se comporta normalmente, independente de

sistema operacional. Inicialmente 0 prot6tipo foi testado com as Produtos MicrosoftWindows 2000 Selver e Red Hat Linux 7.3 , sendo passivel 0 funcionamento comQutros sistemas operacionais, mais os quais nao foram testados ah~m dos citadosacima.

Page 64: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

57

9. CONCLUS,\O

Este traballlD leve como objetivD estudar e apresentar os conceitos de banco

de dados, a arquitetura basica do Banco de Dados MySOL, sendo essa usada paraa construy80 do prot6tipo apresentado nesse trabalho.

o objetivo do projeto foi desenvolver urn sistema compatrvel com 0 Microsoft

Windows , devido ao seu grande usa par administradores, desenvolvedores de

aplica,oes, e devido ao Banco de Dados n~o estar necessariamente em umaesta<;8o Windows, podendo ser urn servidor Linux e seus derivados.

o objetivo deste estudo foi mini mizar 0 tempo de desenvolvimento deconsultas, sendo tambem ul1la refer~ncia a quem deseja estudar os conceitos debanco de dados e SOL. Senclo 0 principal objetivo a constru,ao de urna lerrarnentapara abstra,~o de dados de bancos de dados MySOL atraves de comandos SOL(Structured Ouery Language), com 0 intuito de explorar dados locados em Banco deDados. Todas as tarefas citadas foram todas concluidas rom exito, seguindo 0objetivo do prot6tipo.

Todas as tarelas citadas loram concluidas com exito, porem com algumasimplementayOes adicionais que n~o foram previstas no in[cio, como a exibi9aO dosresultados at raves do modulo "Resultado da Pesquisa", mas de grande importancia,contribuindo que 0 projeto pudesse executar todas as tarelas propostas.

Com a exce,aa de alguns comandas estudados (Sub·selects, clausula TOP,

IN, EXCEPT, INTERSECT ) todos os comandos SOL descritos aqui loramimplementados e estaveis no MySQL. Esses comandos que nao eram compativeisforam retirados da lista de comandos disponibilizada pelo aplicativo,

S~Opropostos para futuros estudos, a cria,~o de m6dulos para a cria,~o derelacionamentos , e comandos para a cria9ao de stored procedures, tn'ggers, sub-

selects (apesar de citado nas fun,oes SOL, tera suporte a partir da versao 4.1.XX doMySOL) e replica,~o de dados. Atualmente, na~ e possivel 0 desenvolvimento detais modulos, par que as vers6es que 0 prototipo proposto se aplica para as vers6es4.00.12 e 4.00.13 do MySQL. Os futuros modulos dever~o astar disponiveis somentena vers~o 5.0 quando for lan,ado ao mercado, pois hoje esta disponivel somentepara testes, ou seja, nao tla Ulna versao estavel para iniciar 0 desenvolvimento,

Page 65: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

58

Este prot6tipo eslil disponivel olicialmenle em Portugues (lingua olicial no

pais). E passivel futuramente implementar 0 prot6tipo na lingua inglesa, devido alerramenla MySQL ser dilundida em lodo 0 mundo.

Page 66: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

;9

ItEFERENCIA . BlBLIOGRA.FlCAS

SURIAN, Jorge. Aposlila de Banco de Dados e SQL , 2002.

BURBELLO. Alexandre. Projeto de Gradua~ao UTP 2002 -

MyDatabaseManager.2002.

AXMARK, David; WIDEIIIIUS, Michael; DUBOIS, Paul. MYSQL Reference

Manual. Verseo 4.00.XX, Upp ala, MySQL AB - 2003.

DATE, C.J. Introdu~ao a Sistemas de Bancos de Dados 4 Ed. Rio de

Janeiro, Campus - 1990.

DATE, C. J. Introdu~ao a Sistemas de Bancos de Dados. 7 Ed, Rio de

Janeiro, Campus - 2000.

MASLAKOWSKI, Mark. Teach YourSelf MySQL in 21 Days. 1 Ed. Sams

Publishing. Indianapolis - 2000.

SILBERSCHATZ, Abraham; KORTH, Henry; SUDARSHAN, S. Sistema de

Banco de Dados. 3 Ed, sao Paulo, Makran Books - 1999.

YARGER, Randy Jay; REESE, Gorge; KING, Tim - MySQL and mSQL

Ed. O'Reilly & Associates, Sebastopol - 1999.

STALUvIANN, Richard. A GNU GPL e a American Way, Disponlvel em

http://www.dhn01 out. 2003.

Page 67: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

60

II. ANEXOS:

ANEXO I:

GNUIGPL:

o "Software livre" e 0 mesmo que software gratuito, referindo-se a liberdade dousuario para executar, copiar, distribuir, estudar, cambiar e melhorar 0 software. Emparticular, refere-se a tres niveis de liberdade:

A liberdade de estudar como funciona urn programa e de adapta-Io as suasnecessidades;

A liberdade de redistribuir copias, de jeito que 0 poda compartir com seusvizinhos;

A liberdade de melhornr 0 programa. e fornecer as suas melhoras ao publico,de jeito de beneficiarem a toda a comunidade;

Pode se pagar para obter as copias do software GNU/GPL, ou pode se obteras copias de urn software GNU/GPL gratuitamente. Mais com independencia decomo obleve as copias, sempre tera a liberdade de copiar 0 software. No projetoGNU emprega-se "copyleft" (ANEXO III) para proteger essa liberdade legalmentepara todo 0 mundo.

o Movimento de Software Livre foi fund ado em 1984, mas sua inspirar;ao vem

dos ideais de 1776: liberdade, comunidade e coopera9~0 voluntaria. Isto eo que leva a livre empresa, a liberdade de opiniao e a liberdade de software. Assimcomo em "livre empresa" e "livre opiniao", 0 "livre" de "software livre" se refere aIiberdade, e nao a pre<;o;especificamente, isso quer dizer que voce tern a Iiberdadede estudar, mudar e redistribuir 0 software que utilizar. Essas liberdades permitemque cidadaos ajudem a si mesmos e uns aos outros, e dessa forma participem deuma comunidade. Isto estabelece um contraste com 0 software proprietario maiscomum, que mantem os usuarios indefesos e divididos: 0 funcionamento interno esecreto, e voce esta proibido de compartilhar 0 programa com seu vizinho. Umsoftware poderoso e confiavel e uma tecnologia avant(8da sao subprodutos uteis daliberdade, mas a liberdacle de ter uma comunidade e tao importantequanto.(STALLMAN,2001)

Page 68: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

61

A licen,a GNU/GPL segue por padrao um contrato , relacionado no Anexo IV,aonde resume-se a abertura do c6digo do programa, e suas responsabilidades (au

nao) quanto a seu uso.

ANEXO II:

ANSI SQL-92:

o padrao ANSI-92 e um conjunto de re9ras e requisitos estipulados peloor98o ANSI (American National Standard Institute) para defini,80 de banco de dadosrelacionais.

A linguagem SOL-92 foi desenvolvida pelo comit~ tecnico da INCITS. Estecomite desenvolve padn~es para a sintaxe e semantica de linguas de Banco deOados.O SOL-92 foi projetado para ser um padrao para Sistemas de Gerencia deBanco de Oados Relacionais (ROBMS). E baseado no SOL-89, que foi baseado parsua vez no SOL-86. 0 SOL-92 foi formado pelo comite X3H2 da ANSI (entao NCITS,e agora INCITS), que come90u ariginalmente 0 trabalho do padrllo SOL em 1982.

A linguagem SOL-92 tem como caracteristica ser "procedural" , heran,a deSGOB proprietarios (PLISOL da ORACLE, SQL/SYBASE).

As linguagens SOL "procedurais" oferecem ainda mais recursos que 0 SOl-92, e sao "diferenciais" importantes na concorr~ncia com outros bancos de dados. Atendemcia e que as SOL "procedurais" S8 tornem um super-conjunto do SQL·92, comalgumas particularidades de cada SGOB.

ANEXO III:

COI'YLEFT

o metoda para construir urn programa livre, deve-s8 caleca-Io em dominicpublico, sem licenc;.as de usa. 15to permite compartilhas as melhoras no prot6tipo,

deixando-o aberto para altera,6es, diferente do software de "copyright" aonde 0desenvolvedor e "dono" do prot6tipo e somente ele tem direitos de alter;'-Io.

Page 69: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

.:

ANEXOIV:

COMO INSTALAR

Para a instala9ao do protOtipo ,deve-se seguir a ordem de instala9ao dospacotes, seguindo 0 seguinte criteria at)Qrcl do a seguir.

No Anexo VI, segue a lista de arquivos instalados no cliente.

Instalar 0 MySQL 4.00. '12ou superior, caso nao haja nenhum servidorjil instalado, caso contrario, pode~se USaf 0 servidor ja existente.

Instaiar 0 prot6tipo;

Apes instatado 0 prot6tipo, 0 mesrno cria 0 icone para sua execu9~o no~Mellu Iniciar " do Microsoft indows. 0 mesmo fica localizado em'Progralllas/prjMySOUSOL Constrllctor./nk"

• Instalar 0 MDAC (8 instala.~o estiI junto com na pasta "Support");

• Instalar 0 MyODBC 3.51 (a instala,ao esttl junto com na pasta"MyODBC"), lemorando Que nM deve se instalar uma versao doMyODBC anterior a 3.51:

Page 70: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

63

ANEXO V:

EXEMI'LO DE LICEN<;:AGNU/CI'L

o prot6tipo proposto nesse trabalho segue 0 contrato de software livre

GNU/GPL" ,como segue abaixo:

licenya publica GNU

GNU GENERAL PUBLIC LICENSE Version 2, June 1991

This is an unofficial translation of the GNU General Public License into

Portuguese. It was not published by the Free Software Foundation, and does not

legally state the distribution terms for software that uses the GNU GPL -- only the

original English text of the GNU GPL does that. However, we hope that this

translation will help Portuguese speakers undersland the GNU GPL better.

Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave

,Cambridge, MA 02139, USA

~ permitido a qualquer pessoa copiar e distribuir c6pias tal desse documentode licen<;a, sem a implemenla<;ao de qualquer mudan<;a.

F.3.1 Introdu<;ao

As licen9as de muitos softwares sao desenvolvidas para cercear a liberdadede usa, compartilhamento e rnudanyas. A GNU Licenya Publica Geral aD contrario,pretende garantir a liberdade de compartilhar e alterar softwares de livre distribui<;ao

. tamanda-os de livre distribuiyao tambem para quaisquer usuarios. A LicenyaPublica Geral aplica-se a maiaria dos softwares da Free Software Foundation e aqualquer autor que esteja de acordo de utilize-Ia (alguns softwares da FSF saocobertos pela GNU Library General Public License).

Quando nos referimos a softwares de livre dlstribuic;ao, referimo-nos aliberdade e nao ao pre9a. Nossa Licenlia Publica Geral fol criada para garantir aliberdade de distribui<;ao de copias de softwares de livre distribui<;ao (e cobrar por

is so caso seja do interesse do dislribuidor), 0 qual recebeu os c6digos fonte, 0 qual

pade ser alterada ou utilizado em parte ern novas programas.

Page 71: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

Para assegurar os <lireito los desenvolvedores. algumas restri,Oes saofeitas, proibindo a todas as pessoas a nega(faO desses direitos ou a solicitayao de

sua abdicacao. Essas restricdes aplicam~se ainda a certas responsabilidades sobrea distribuicao au modifica~ao clo soft\\lar

Por exemplo, ao se distriblJir c6pias de determinado prograrna, por uma taxadeterrninada DU gratuitamen , deve-se inforrnar sobre todos as direitos incidentes

sobre esse programa. assegurando-se que os fontes estejam disponiveis assimcomo a Licen,a Publica Geral GNU.

A proter,;aodos direitos envolve dois passas: (1) copyright do software e (2)licen,a que dil permissao legal para copia. distribui,ao e/ou modifica,ao dosoftwares.

Ainda para a prote,ao da FSF e do alltar Ii importante que todos entendamque n:io he garantias para softwares de livre distribuic;ao. Casa 0 software sejamodificado por alguem e passado adiant , ste software nao mais refletira 0 trabalhoorigillal do autor nao podelldo portanto ser aranlido por aquele.

Fillalmellte, qualquer programa de livre distribui<;ao e constantementeameayado pel as patel~tes de softwares. BU5camos evitar 0 perigo de quedistribuidores destes programas obtenham patentes individuais, tornado-se seusdonas efetivos. Para evilar isse foram feitas declara(toes expressas de que qualquer

solicita<;ao de patente deve ser f ita permitindo 0 usa par qualquer individuo, sem anecessidade de Iicen<;:8 de usc.

Os termos e condic;Oes precisas para c6pia. distribuiyao e modificayaoseguem abaixo:

F.3.2 Licell,a Publica Geral GNU

TERMOS E CONDIr;:CESPARA COPIA, DISTRIBUIr;:Ao E MODIFICAr;:Ao

0- Esta licellt,;ase aplica a qualquer programa ou outro trabalho que contenhaurn aviso colocado pelo detentor dos direitos autorais dizenda que aquele podera serdistribufdo nas condi~6esda Lie l1r;a Pllblica Gera!. 0 Programa, abaixo refere-se aqualquer software ou trabalho e a um trabalho baseado em um Programa e significatanto a Programa em si como quaisquer trabalhos derivados de acordo com a lei dedireitos autorais, 0 que signifi a dizer. UI1l trabalh que contenha 0 Programa au umaparte deste. na sua forma original au com modifica90es ou traduzido para uma outralingua (tradu<;aoesta incluida sem limita<;Oesno termo lTlodifica~o).

Page 72: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

6S

Atividades distintas de c6pia, distribuir;llo e modifica,iio nao estao cobertaspar esta Licen<;a, estando fora de SelJ escapo. 0 ate de executar 0 Prograrna naoesta restringido e a saida do Program8 e coberta somente caso seu conteudocontenha trabalhos baseados no Programa (independentemente de terem sidosgerados pela execu9ao do Programa). S isso e verdadeiro depende das fun'i5esxecutadas pelo Programa.

1 - 0 c6digo fonte do Programa, da forma como foi recebido, pode sercopiado e distribuido, em qualqu r m dia, desde que seja providenciada urn avisoadequado sabre as copyrights e a negar;lla de garantias, e todos as avisos que sereferem a Licen~ Publica Geral e a aus~ncia de garantias estejam inalterados e quequalquer produtos oriundo do Prograrrm esteja acompanhado desta Licen,a PublicaGeral.

E. permitida a cobran~a de taxas pelo ato fisic::ode transfer~ncia au gra'Yaryaode copias, e podem ser dadas garantias e suporte em treca ciacobran<;ade valores.

2 - Pode-se modificar a c6pia au c6pias do Programa de qualquer forma queS8 deseje. ou ainda criar·se um trabalho bas ado no Programa, e copia-Ia e distribuirtais l11odifica9~essob as termos da seyao 1 acima e do seguinte:

1. Deve e)(istir aviso ern destaque de que os dados originais foramalterados nos arquivos as datas clasmudanC;:3s;

2. Deve existir aviso d qu 0 trabalho distribuido au publicado e, de formatotal ou em parte derivado do Programa au de alguma parte sua, e que pode serlicenciado total mente sem custos para terceiros sob os termos desta Licenya.

3. Caso 0 programa mo(lificado s ja ex cutado de forma interativa, eobrigat6rio, no inicio de sua exeCUt;aO, apresentar a informa9aO de copyright e daaus~ncia de garantias (ou de que a garantia corre par conta de terceiros), e que osusutlrios podem redistribuir 0 programa sob estas condic;Oes, indicando ao usuariocomo acessar esta Licem;a na sua integra.

Esses requisitos aplicam- e a trabalhos de modificac;ao em geral. Casoalgumas seyOes identifictweis nao sejarn derivadas do Programa, e pod em serconsideradas como partes independent.es, ent:lo esta Licen<;ae seus Termos nao seaplicam aquelas se¢e quando distribuicJasseparadamente. Porem ao distribuiraquelas seyCes como parle de lIIll trabalilO baseado no Programa, a distribui9~0como um todo deve canter os termos desta Licen!1a, cujas permiss5es estendem-se

Page 73: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

66

ao trabalho como urn todD, e naD a cada uma das partes independentemente de

quem os tenha desenvolvido.

Mais do que tencionar contestar os direitos sabre 0 trabalho desenvolvido par

alguem, esta se~ao objetiva propieiar a eorreta distribui~ao de trabalhos derivados

do Programa.

Adicionalmente, a mera adiy30 de Dutro trabalho ao Programa, porem nao

baseado nele nem a urn trabalho baseado nele, a urn volume de armazenamento au

media de distribui<;30 nao obriga a utiliza980 desta Liceny8 e de seus termos aD

trabalho.

3 - Sao permitidas a e6pia e a distribui~ilo do Programa (ou a um trabalho

baseado neste) na forma de e6digo objeto ou executa vel de acordo com os termos

das Se~oes 1 e 2 acima, desde que atendido 0 seguinte:

1. Esteja acompanhado dos c6digos fonte legiveis, os quais devem ser

distribuidos na forma da Se<;oes 1 e 2 aeima, em midia normalmente utilizada

para manuseio de softwares

2. Esteja acompanhado de oferta escrita, valida por, no minima 3 anos, de

disponibilizar a terceiros, por um custo na.o superior ao custo do meio fisico de

armazenamento , uma c6pia completa dos c6digos fonte em meio magnetico,

de acordo com as Se~Oes 1 e 2 acima.

3. Esteja acompanhada com a mesma informaCf8.0 recebida em rela~a.o aoferta da distribui~ilo do c6digo fonte correspondente. (esta alternativa

so mente e permitida para distribui9l:ies nao comerciais e so mente se 0

programa recebido na forma de objeto ou executavel tenha tal oferta, de

acordo com a sub·seyao 2 acima).

o c6digo fante de um trabaJho e a melhar forma de produzirem·se aJtera~l:ies

naqueJe trabaJha. C6digos fantes completos significam lodos os fantes de lodas os

m6dulos, alem das defini~l:ies de interfaces associadas, arquivos, scripts utilizados

na compila~ao e instala~ao do executa vel. Como uma exce~ao excepcional, 0

c6digo fonte distribuido podera nao incluir alguns componentes que

nao se encontrem em seu escapo, tais como compilador, kemel, etc .. para a

SO onde 0 trabalho seja exeeutado.

Page 74: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

67

Casa a distribui980 do executavel ou objeto seja feita atraves de acesso a urndeterminado ponto, ent~o oferta equivalente de aces so deve ser feita aos c6digosfonte, mesma que terceiros n:io sejam obrigados a copiarem os Fontes juntos com asobjetos simultaneamente.

4 - Nao e permitida a capia, modificayilo, sublicenciamento au distribuiy80 doPrograma, exceto sob as condi«6es expressas nesta Licenc;a. Qualquer tentativa de

cOpia, modifica9ao, sublicenciamento ou disiribui9aO do Programa Ii proibida, e osdireitos descritos nesta Licenya cessarao imediatamente. Terceiros que tenhamrecebido copias ou direitos na fonna desta Licenc;:a nao terae seus direitos cessadosdesde que permane<;am dentro des clausulas desta Licenya.

5 - Nao Ii necessaria aceita9ao formal desta Licen9a, apesar de que naohavera documenlo ou cantralo que garanta permissao de modifica9aa audistribui~ao do Programa ou seus Irabalhos derivados. Essas a90es sao proibidaspar lei, caso naa se ace item as candi90es desta Licen9a. A madifica9ao audistribui~ao do Programa ou qualquer trabalho baseado neste implica na aceita9aodesta Licen~a e de todos os termos desta para c6pia, distribui9aO ou modifica~ao doPrograma au trabalhas baseados neste.

6 - Cada vez que 0 Programa seja distribuldo (ou qualquer trabalho baseadoneste), a recipiente aulomaticamente recebe uma licenya do detentar original dosdireitos de copia, distribui9:la au modificayao do Programa objelo deste termos e

condi9!3es. Naa podem ser impostas outras restriyoes nos recipientes.

7 - No caso de decisOesjudiciais ou alega~Oesde uso indevido de patentesau direitos autarais, restric;!3es sejam impostas que contradigam esla Licen9a, estesnao isentam da sua aplicay~a. Caso naa seja passivel distribuir a Programa deforma a garantir simultaneamente as obrigac;!3es desta Licen9a e autras que sejamnecessarias, entao 0 Programa nao podera ser distribuido.

Caso esta Se~ao seja considerada invalida por qualquer motivo particular ougeral, 0 seu resultado implicara na invalida~ao geral desta licen~a na c6pia,madificac;ao, sublicenciamento ou distribuiyaa do Programa au trabalhas baseadasneste.

o prop6sito desla sey3a nao e, de forma alguma, incitar quem quer que sejaa infringir direitas reclamados em questOes validas e procedentes, e sim proteger aspremissas do sistema de livre distribui9aO de software. Muitas pessoas tem feitocontribuiyoes generosas ao sistema, na forma de programas, e e necessaria

Page 75: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

68

garantir a consistancia e credibilidade da sistema, cabendo a estes e nao a terceirosdecidirem a forma de distribuiliao dos soHwares.

Esta seyao pretende tarnar claro 0 rnotivos que geraram as demais clausulasdestas Lice,,,,a.

8 - Casa a distribuiyao do Programa dentra dos termos desta Licen,a tenharestriyaes em algum Pais. qu r por patent S ou direitos autorais. 0 detentor originaldos direitos autorais do Programa sob asta Ucenc;a pode adicionar explicitamente

Iimitar;Oesgeogr<ificasde distribuicao, excluindo aqueles Paises, fazenda com que adistribuic;;ao somente seja passiveJ nos Palses nao excluidos.

9 - A Fundayao de Software de Livre Distribuir;aa (FSF - Free SoftwareFoundation) pode publicar versaes revisadas all novas versoes desta LicenyaPublica Geral de t mpos em tempos. Estas novas versOes manterao as mesmasobjetivos e 0 espirito da presente versao, podendo \lariar em detalhes referentes anovas situfiyOes encontradas.

A cada vers~o e dada LlIll numero distinto. Caso 0 Programa especifique urnnumero de versao especifico desta Licen~a a qual tenha em seu conteudo aexpressao - ou vers~o rnais atllallZada-, II passivel optar pelas condir;oes daquelavers~o ou de qualquer vers:.!o ll1ais atualiza a publicada pela FSF.

10 - Caso se deseje incorporar pClrte do Programa em outros programas delivre distribuiC;80 de softwares e necessaria autorizac;:1o formal do autor. Parasoftwares que a FSF det nha 0 direitos autorais, podem ser abertas excec;oes

desde que mantido 0 espirito e obj tivos originais desta Licenya.

11 - AUS~NCIA DE GARANTlAS

UMA VEZ QUE 0 PROGRAMA Eo LlCENCIADO SEM CNUS, NAo HAQUALQUER GARANTIA PARA 0 PROGRAMA. EXCETO QUANDO TERCEIROSEXPRESSEM-SE FORMALMENTE 0 PROGRAMA Eo DISPONIBILIZADO EM SEUFORMATO ORIGINAL, SEM GARANTIAS DE QUALQUER NATUREZA,EXPRESSAS OU IMPLicITAS, INCLUINDO MAS NAo LlMITADAS, A GARANTlASCOMERCIAIS E DO ATE~tDIMENTO DE DETERMINADO FIM. A QUALIDADE E APERFORMANCE SAO DE RISCO EXCLUSIVO DOS USUARIOS, CORRENDOPOR SUAS CONTA OS CUSTOS NEcEssARIOS A EVENTUAIS ALTERA<;:CES,CORRE<;:CESE REPAROS JULGADOS NECEssARIOS.

Page 76: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

EM NENHUMA OCASIAO. A MENOS QUE REQUERIDO POR DECISAO

JUDICIAL OU POR LIVRE VONTADE, 0 AUTOR OU TERCEIROS QUE TENHAM

MODIFICADO 0 PROGRAMA, SERAO RESPONSAvEIS POR DANOS ou

PREJuizos PROVENIENTES DO usa OU DA FALTA DE HABILIDADE NA SUA

UTILlZA<;:Ao (INCLUINDO MAS NAO LlMITADA A PERDA DE DADOS OU DAD OS

ERRONEOS), IvIESIviO QUE TENHA SIDO EMITIDO AVISO DE POSSiVEIS

ERROS OU DANOS. FIM DA LlCENt;:A

F.3.3 Apendice

Como aplicar estes termos a novos softwares?

Gasa se tenha desenvolvido LIm novo programa e se deseje a sua ampladistribui~ao para 0 publico, a melhor forma de consegui-Io e torna-Io um software de

livre distribuic;:lo, 0 qual qualquer um possa distribui-Io nas condic;oes desta Licencta.

Para tanto basta anexar aste aviso ao programa. E aconselhavel indicar aindano inicio de cad a arquivo fonte a ausencia d garantias e urn apontamento para urnarquivo contendo 0 texto geral desta Licen<;a, como par exemplo:

<nome do programa e fum;ao> Copyright (C) 1g9X <Autor>

Este programa e um software de livre distribui"So, que pode ser copiado e

distribuido sob as termos da Licen~a Publica Geral GNU, conforme publicada

pela Free Software Foundation. versSo 2 da licen~ au (a criteria do autor)

qualquer versao posterior.

Este programn e distribuido na expectativa de ser utH aos seus usuarios,porern NAO TEM NENHUMA GARANTIA, ExpLlclTAS OU IMPLIclTAS ,

COIviERCIAIS OU DE ATEIIDIMEIITO A UMA DETERMINADA FINALIDADE.

Consulte a Licen," PLlblica Geral GNU para maiores detalhes.

Deve hay r uma co ia da Licem;:a PClbOca Geral GNU junto com estesoftware em ingl~s ou portugues. Caso ntlo haja escreva para Free Software

Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

[email protected]

Endere<;o

Casa a programa seja interati\lo, apres nte na sua saida urn breve aviso

quando de seu inicio como por exernplo:

Page 77: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

70

Gnomovisian ver ao 69, Copyright Q199a Yayodine

Softwares NAo POSSUI NENHUMA GARANTIA; para detalhes digite mastre

garantia. Este e urn software de livre di tribui~:\o e voce esta autorizado a distribui-Io

dentro de certas candi"Oes. Digite mostre condi"ao para maiores detalhes.

Os cornandos hipoteticos mostre garantia e mostre condiC;ao apresentar~oas

partes apropriadas da Licen,a Publica Geral GNU. Evidentemente as camandas

pod em variar ou serem acionado per Olltras interfaces como clique de mouse,etc.

ANEXO VI:

List3 de Arquivos

A Usia abaixo mostra Quais arquivQs 0 programa de instalayao do prot6tipo capiapara a maquina cliente, mostrando 0 arquivo e sua funt;ao no prot6tipo.

rquivo: 1DeScri~acia: ' 1IMicrosoft OLE 2.40 for Windows

INT(TM) and Windows 95(TM)

ASYCFILTDLL IOperating Systems

Microsoft Component Category

COMCATDLL Manager Library.-.~~~-~--~-

Microsoft Common Controls :3 ActiveXOMCT332.0CX Conlrol DLL

i:5BGRiD32.0C;X DBGrid32 OLE Control DLL

DBLlST32.0CX DBGrid32 OLE Control DLL

~DAC (Microsoft Data AccessMDAC TYP.EXE omponents

~iCrOSaft Common Controls 2 ActiveXMSCOMCT2.0CX ontrol DLL

mscomctl.ocxrindOWS Common Controls ActiveXICantrol DLL

MSFLXGRD.OCX 'rvlicro.aft FlexGrid Control

MSVBVM60.DLL ~isual Basic Virtual-Machine -~

Page 78: FABIO LEITE FLORIANI CONSTRUTOR DE CONSULTAS …tcconline.utp.br/.../CONSTRUTOR-DE-CONSULTAS-PARA-BANCOS-DE-DADOS.pdf · Prof': Elaini Simoni Angelotti Universidade Tuiuti do Parana

71

jBiblioteca para conexao com servidor

MyVbQL.dll MySQL

!Microsoft OLE 2.40 for Windows

INT(TM) and Windows 95(TM)

OL EAUT32. OLL ~._ra_t-;in-c-g",S;cy;c-st-;::e-;m-;::s--c-~-;c-"--~~--IiMicrosoft OLE 2.40 for Windows

iNT(TMJ and Windows 95 TM)

f:lLEPR032.0LL Operating Systems

prjMySQL.exe !Execut;IVEI do protctipo-~---------1Mjcrosoft OLE2AO for WJndOWs~

INT(TMJ and Windows 95(TM)

)sTOOLE2.TLB !operating SystemsIVB6STKIT.OLL ----Jvis-'-'a-"'I B~a:"si--"C-;:CSe·-:tu-p-cT;:-oo-Cl:;-Cki~tLcc;ib-ra-ry---;C:oCL"L--1

ANEXOVTl:

Para distribuir 0 produto gerado com 0 Microsoft Visual Basic, deve-se usar 0

aplicativD "Package and Deployment \ iZ8rr!" Com esse aplicativo , pode-se gerarum pacote em arquivos com a extensao "CAB" na oPIfa.O~Package", au somente umarquivD. normalmente usado para Int rn t na op~o "Oeploy"'.

Figura 17 - Tela de criar;~o de urn instalador atraves do "Package and

Deployment Wizard".