Vous êtes sur la page 1sur 43

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

______________________________________________________________________

INDICE
O QUE O FIREBIRD?...............................................................................................................................2 PLATAFORMAS..........................................................................................................................................2 INTERFACES GRFICAS DE TRABALHO..............................................................................................3 SOBRE AS CARACTERSTICAS E ESPECIFICAES..........................................................................3 TIPOS DE DADOS SUPORTADOS............................................................................................................4 RAZES PARA USAR O FIREBIRD AO INVS DO INTERBASE........................................................6 Banco de Dados Perfeito................................................................................................................................8 Firebird & MySQL - Parceiros ou Concorrentes?.......................................................................................14 CONHECIMENTOS: PREOS DE SGBD-R............................................................................................18 Preos do InterBase 7...........................................................................................................................18 COMPONENTES INTERBASE Versus dbExpress EM APLICAES CLIENTE/SERVIDOR............21 CRIAO DO SISTEMA...........................................................................................................................23 Com isto a tabela CLIENTE ser aberta e seus dados disponveis..........................................................37 Anotaes.....................................................................................................................................................40 BIBLIOGRAFIA COMPLEMENTAR.......................................................................................................43

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

______________________________________________________________________

O QUE O FIREBIRD?
No segundo semestre de 2000, a Borland lanou a verso 6 do banco de dados relacional Interbase, como um produto freeware e de cdigo-fonte aberto. Baseado naquela verso um grupo de desenvolvedores (denominado PHOENIX) criou o projeto FIREBIRD. Assim como aconteceu com o Linux, o projeto do FIREBIRD est aberto para todos que queiram contribuir para seu aprimoramento, bugs tendem a ser mais rapidamente resolvidos e um maior nmero de aprimoramento tende a ser incorporado em um menor espao de tempo. Assistindo ao lanamento do Interbase 6.5, como um produto pago, o grupo FIREBIRD definitivamente divorciou-se do Interbase. Segundo os responsveis pelo projeto, o FIREBIRD 1.0 manter 100% de compatibilidade com o Interbase 6.0, evoluindo desse ponto em diante. Alis, o projeto FIREBIRD ainda no tem uma documentao prpria ou tem pouca documentao, os manuais do Interbase 6.0, por enquanto, so a principal fonte de informao disponvel.

PLATAFORMAS
O FIREBIRD est disponvel livremente em diversas plataformas: Windows Linux SOC UNIX (em teste) Solaris HP-Ux Mac-Os Os diversos programas de instalao do FIREBIRD podem ser baixados nos sites:
http://firebird.sourceforge.net www.ibphoenix.com www.firebirdsql.org

Em torno do site ibphoenix renem-se nomes de peso do mundo Interbase, como Ann Harison, que est profundamente envolvida com o desenvolvimento do produto

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

______________________________________________________________________ desde a sua concepo h mais de 15 anos, Paul Reeves, Paul Beach, Mark O Donohue e outros.

INTERFACES GRFICAS DE TRABALHO


Os programas grficos que utilizaremos para trabalhar com o FIREBIRD so o IBConsole e o IBExpert. Entretanto, h diversas ferramentas disponveis (gratuitas e pagas) que podem ser utilizadas sem problemas, ferramentas de backup, de restaurao de backup, migrao de bases de dados para o FIREBIRD, ferramentas de modelagens, entre vrias outras.

SOBRE AS CARACTERSTICAS E ESPECIFICAES


O FIREBIRD permite o acesso de vrios usurios a um ou a vrios bancos de dados. Tambm oferece controle explcito sobre transaes, evitando concorrncia a dados das tabelas, lembrando que aplicaes clientes podem iniciar vrias transaes simultneas (um exemplo clssico so as transaes de uma conta corrente). Algumas caractersticas so apresentadas em nvel terico, ou seja, que possvel alcanar em termos do projeto do banco, no significa dizer que tais caractersticas estejam de fato implementadas: NMERO MXIMO DE CLIENTES CONECTADOS A UM SERVIDOR: embora esse nmero possa sofrer variaes que depende de fatores de utilizao do FIREBIRD, diz-se que 150 usurios possam ter acesso simultneo ao banco de dados. TAMANHO MXIMO DE UM BANCO DE DADOS: em se tratando de arquivo nico (ou simples), um banco de dados pode chegar a 4 GB em ambiente Windows e na maioria dos ambientes UNIX, podendo atingir vrios terabytes quando se utiliza arquivos mltiplos, ou seja, um arquivo principal e vrios arquivos secundrios (lembre-se que um banco pode ser composto de vrios arquivos,
sendo que o maior tamanho de um banco IB/FB reportado at hoje de 980Gb).

Abaixo fornecido uma indicao mais precisa dos valores para arquivos

simples no ambiente Windows: Win9x/ME (FAT16): 2 GB

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

______________________________________________________________________ WinNT/2000 (FAT16): 4 GB Win9x/ME (FAT16): 4 GB WinNT/2000 (NTFS): 16.384 GB NMERO MXIMO DE TABELAS POR BANCO DE DADOS: em termos de projeto, isto , teoricamente, pode-se chegar a 65536 tabelas. TAMANHO MXIMO DE UMA LINHA: 64 Kb. NMERO MXIMO DE LINHAS E COLUNAS POR TABELA: por projeto, esse nmero pode chegar a 2 ^ 32 (dois elevado a 32) 4.294.967.296. NMERO MXIMO DE NDICES POR TABELA: por projeto, esse nmero pode chegar a 65536. Efetivamente, o FIREBIRD permite at 64 ndices por tabela. O nmero terico, ainda que fosse possvel, deixaria o banco com performance sofrvel. NMERO MXIMO DE NDICES POR BANCO DE DADOS: Por projeto, esse nmero pode chegar a 2 ^ 32 (dois elevado a 32).

TIPOS DE DADOS SUPORTADOS


BLOB (Binary Large Object): de tamanho varivel, permite armazenar diversos tipos de dados como: grficos, textos e vozes digitalizadas. Uma varivel deste tipo armazenada e recuperada em segmentos limitados a 64 K. H sete subtipos (de 0 a 6) mostrados a seguir : 0 dados binrios ou de tipo indeterminados 1 texto 2 representao binria de linguagem 3 lista de controle de acesso 4 reservado para uso no futuro 5 descrio de metadados da tabela corrente 6 descrio de transaes que terminam de forma irregular. CHAR(n), CHARACTER(n): utilizado para armazenar caracteres de 1 a 32767 bytes. Colunas definidas para esse tipo de dado tm tamanho fixo definido por n. DATE: com tamanho de 64 bits, esse tipo de dado consegue armazenar datas no intervalo: 01/01/100 A.D. a 29/02/32768 A.D.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

______________________________________________________________________ DECIMAL(Preciso,Escala): Tem tamanho varivel (16, 32 ou 64 bits) e armazena nmeros decimais. A preciso vai de 1 a 18 (pelo menos) e a escala vai de 0 a 18. Uma coluna definida com DECIMAL(10,3), por exemplo, teria o seguinte formato: PPPPPPP.EEE DOUBLE PRECISION: Utilizado para representar valores de ponto flutuante com preciso de 15 dgitos. Tem tamanho de 64 bits e consegue armazenar valores no intervalo: 2.225 x 10 ^-308 a 1.797 x 10 ^308 (^ significa elevado a) FLOAT: Representa valores de ponto flutuante com preciso de 7 dgitos. Ocupa 32 bits e armazena valores no intervalo: 1.175 x 10^-38 a 3.402 x 10^38 INTEGER: Implementado com tamanho de 32 bits, representa valores inteiros na faixa: -2147483648 a 21477483647 NUMERIC(PRECISION,ESCALA): pode ter tamanho varivel (16, 32 ou 64 bits). Armazena nmeros decimais com preciso entre 1 e 18 (exatamente) e escala entre 0 e 18. Uma coluna definida como NUMERIC(10,3), por exemplo, teria o seguinte formato: PPPPPPP.EEE. Nota: a diferena entre NUMERIC e DECIMAL que o primeiro sempre armazena as casa decimais. SMALLINT: Implementado com tamanho de 16 bits, armazena inteiros no intervalo: -32768 a 32767 TIME: Esse tipo de dado tem tamanho de 64 bits e armazena valores de tempo na faixa: 0:00 AM a 23:59:9999 PM TIMESTAMP: Inclui informaes de data e tempo. Com tamanho de 64 bits, guarda valores no intervalo: 01/01/100 A.D. a 29/02/32768 A.D. VARCHAR(n), CHAR VARYING(n), CHARACTER VARYING(n): Utilizado para armazenar caracteres de 1 a 32767 bytes. Colunas definidas para esse tipo de dado tm tamanho varivel definido por n. DIALETOS: O FIREBIRD mantm o conceito de dialetos introduzidos pelo Interbase 6. Os dialetos permitem que voc utilize todas as inovaes introduzidas no banco ou, por questes de compatibilidade, permanea com as caractersticas antigas. O dialeto 1 garante compatibilidade com base de dados criados com verses anteriores. O dialeto 2 apenas um modo de diagnstico e provavelmente voc vai utiliz-lo para depurao de caractersticas antigas. O dialeto 3 permite acesso total a

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

______________________________________________________________________ todas as caractersticas do FIREBIRD. No dialeto 3 , esto disponveis a funo EXTRACT() e os operadores abaixo para extrair detalhes de data e hora: CURRENT_DATE (data corrente) CURRENT_TIME (hora corrente) CURRENT_TIMESTAMP (data e hora corrente). uma coluna do tipo DATE, os

Exemplo: Assumindo que dataqualquer

exemplos abaixo mostram como extrair ano, ms e dia desta data: EXTRACT (YEAR FROM DATAQUALQUER); EXTRACT (MONTH FROM DATAQUALQUER); EXTRACT (DAY FROM DATAQUALQUER);

RAZES PARA USAR O FIREBIRD AO INVS DO INTERBASE


A seguir esto alguns fatos serem considerados que ajudaro na resposta dessa pergunta. A deciso sua. Ao contrrio da Borland, que se mantm em silncio no que diz respeito a novas implementaes no InterBase, bem como se novos recursos sero disponibilizados na verso Open Source do banco ou se somente estaro disponveis na verso certificada (paga), o projeto FIREBIRD totalmente aberto comunidade. Qualquer um pode se informar da situao atual do cdigo, saber o que foi alterado e o que est por vir. A comunidade est aberta para a participao de todos que quiserem ajudar no desenvolvimento do cdigo, correo de bugs, documentao, desenvolvimento de ferramentas, etc. No existe, no entanto, uma comunidade aberta trabalhando no cdigo atual do InterBase da Borland, portanto mesmo que voc queira trabalhar nele, no encontrar muita gente com quem conversar, trocar idias e experincias. A Borland mantm uma equipe de desenvolvimento interna trabalhando na verso certificada do banco, mas, como dito anteriormente, no se sabe se as novas implementaes estaro disponveis na verso Open Source do InterBase.

No FIREBIRD no existe presso para upgrades e as correes de bugs so disponibilizadas quase que instantaneamente. Alm disso, hoje o FIREBIRD suporta dez sistemas operacionais (Win32, Linux, Solaris (Sparc e X86), Mac OS X, FreeBSD,

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

______________________________________________________________________ NetBSD, AIX, HP-UX e SCO) enquanto que o InterBase suporta apenas trs (Win32, Linux e Solaris). Outras razes para usar o FIREBIRD. Dentre elas podemos destacar:

O fato de ser um Sistema Gerenciador de Banco de Dados Relacional (SGBD-R) com recursos e estabilidade operacional comparveis aos melhores SGBD-Rs comercializados no mercado;

No existe presso de fabricantes com interesse em mudanas de verso (ao contrrio do que acontece com verses comerciais); O fato de no ser uma caixa-preta, isto , todas as novas implementaes e correes, todo o cdigo-fonte est disponvel para consulta e uso por quem se interessar;

Existem profissionais altamente capacitados, vrios deles sados dos quadros da prpria Borland e envolvidos com o Interbase desde a sua criao h mais de uma dcada, como: Ann Harrison, envolvida no projeto Open Source do FIREBIRD;

O fato do produto ser realmente gratuito.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

______________________________________________________________________

Banco de Dados Perfeito


Por Ian Marteens - General Manager (Intuitive Sight)

Com muita probabilidade, a parte mais crtica de um sistema de informao o sistema gerenciador de banco de dados adotado. Isto no tem o que discutir. O problema : neste mundo dominado por guerras comerciais, como acreditar nas maravilhas do banco de dados "x" ditas por seu prprio fabricante? Este artigo tem o intuito de ser informativo o bastante para lhe ajudar nesta tomada de deciso. Se voc necessitar de mais informaes tcnicas pode consultar o artigo Escolhendo um servidor SQL, na minha pgina pessoal.

Existe um banco de dados ideal?

Claro que no existe, apesar das afirmaes feitas pelos fabricantes e distribuidores. H os melhores sistemas gerenciadores de banco de dados melhores, e claro, os piores. Entre os bons, cada um se destaca por alguma caracterstica especial, ou algo quase sempre surpreendente. A questo, ento, consiste em eleger a base de dados que melhor se adapta sua necessidade, principalmente no que se refere concorrncia de dados e nas caractersticas fsicas de rede sobre a qual o seu projeto rodar. Esta apresentao de produtos se ocupar exclusivamente em avaliar produtos que representem o modelo relacional de banco de dados. S o ttulo "relacional" com certeza j limita um pouco o produto. Claro, j existem no mercado alguns sistemas gerenciadores de banco de dados orientado objetos, mas esta nova tecnologia ainda no est consolidada por diversas razes. A principal delas : a inrcia na industria e na comunidade de desenvolvedores. ORACLE Este um dos bancos de dados mais conhecidos e com mais "peso" no nome. E claro : se trata de uma opinio bem sensata. O Oracle potente e altamente eficiente.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

______________________________________________________________________ A verso mais recente do Oracle a 8 ponto algo. E deste o lanamento oficial da verso 8 se sucederam vrias novas verses com correes, a estabilidade foi alcanada apenas na 8.0.3. O motivo de tantas falhas foi, ao meu parecer, a remodelagem do sistema devido introduo das extenses de orientao a objetos. O que h de objetos no Oracle? Este gerenciado est comeando a evolucionar nesta direo, alguns tipos de classes, referncia, tabelas aninhadas, matrizes e outras complexas estruturas de dados. Sinceramente, na implementao atual as mesmas no oferecem uma vantagem clara e eficaz, como seria de se esperar, e se provocam tal incompatibilidade que aproveitassem essas novas caractersticas em outra base de dados. Delphi e C++Builder suportam perfeitamente as extenses de orientao a objeto do Oracle, mas no sou a favor de utiliza-las, pelo menos no estado atual da tecnologia. O Oracle suporta todas as funes esperadas em um servidor "srio" : uma linguagem de extenso ao SQL muito completa (PL/SQL), que permite implementar recursos ativos, como triggers e stored procedures, com uma integridade referencial declarativa bastante potente. Permite o uso de parties para melhorar a eficincia, de replicao e inclusive algumas verses admitem a administrao de bancos de dados distribudos. O software do servidor pode ser executado em vrios sistemas operacionais. Existe inclusive uma verso Personal para Windows9x, o que um ponto a favor para desenvolvedores que levam trabalho pra casa. O maior inconveniente do Oracle a questo do seu preo. Inclusive as licenas do Personal Oracle so extremamente caras, em minha opinio. Outro problema a necessidade de ajustes. Um erro freqente consiste em pensar que basta instalar o Oracle em um servidor e conectar as aplicaes clients a ele. Um Oracle mal configurado pode ser desesperadamente lento. Tambm elevado o investimento a ser feito em um formao DBA Oracle, e s ultimamente est comeando a aparecer bons livros sobre assuntos tcnicos distintos da simples instalao e administrao do banco.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

10

______________________________________________________________________ INTERBASE/FIREBIRD O InterBase/FIREBIRD se destaca do resto de gerenciadores de banco de dados por sua arquitetura nica, baseada em verses (arquitetura multi-geracional). Isto quer dizer que, apesar de tratar-se de um gerenciador free, tambm o que oferece melhor acesso concorrente aos dados que administra. Se necessitamos de uma viso coerente das bases de dados, Oracle, SQL Server e DB2 bloqueiam a informao que lem e impedem a sua atualizao enquanto durar a transao de leitura. Isto no acontece no InterBase/FIREBIRD porque a escrita gera uma nova verso do registro, sem perder a coerncia das informaes. Uma agradvel conseqncia disto podermos realizar cpias completas de segurana (backup) sem interromper o funcionamento do sistema. Outro dos pontos fortes do InterBase/FIREBIRD sua concepo da linguagem SQL, sobre tudo nas sintaxes de stored procedures e triggers. sumamente fcil programar uma base de dados ativa em InterBase/FIREBIRD e posteriormente adapta-la para definies do Oracle. A linguagem de procedures e triggers muito potente, e inclusive supera a do Oracle na facilidade para expressar clusulas de verificao (check) que envolvam vrias tabelas, e suas triggers no esto sujeitas aos problemas ocasionados no Oracle pelas denominadas "tabelas mutantes". A verso do InterBase6.0/FIREBIRD apresenta tipos de dados compatveis com o SQL padro. Por exemplo, agora foi introduzido tipos separados para data, hora e para ambas (Microsoft SQL Server continua suportando somente o ltimo tipo), tipos numricos "exatos", etc. Porm uma das maiores novidades desta verso a apario de uma ferramenta de replicao (IBReplicator), uma carncia conhecida das verses anteriores. Os problemas do InterBase/FIREBIRD se misturam com a mesma causa de suas vantagens: sua arquitetura nica. muito comum realizar parties em outros gerenciadores(Oracle, DB2, SQL Server, Informix) para aumentar o rendimento fsico de um banco de dados, porm este conceito difcil de ser aplicado ao InterBase/FIREBIRD. De qualquer maneira, o particionamento por gerenciador no um substituto um pouco mais flexvel de certas tcnicas RAID para melhorar tal

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

11

______________________________________________________________________ rendimento, e o InterBase/FIREBIRD permite que uma base de dados se expanda por vrios discos, mesmo que no controlando que tabela vai para que dispositivo.

MICROSOFT SQL SERVER Para poder falar do Microsoft SQL Server tenho que deixar claro a que verso do produto estou me referindo. Porque as verses 6.5 e anteriores so um autntico desastre, mas a verso 7 um sistema a botar em pauta. Os problemas da verso 6.5 eram muitos e infantis : bloqueio a nvel de pgina, dispositivos com crescimento manual, tamanho de pgina fixo e demasiadamente pequeno(2048KB), uma pssima implementao dos tipos de dados variveis como varchar... Tudo isto foi corrigido com o SQL Server 7 : as pginas aumentaram para 8192KB, bloqueio de pgina a nvel de fila, as colunas de tipo varivel ocupam agora o correto e desapareceram os odiados dispositivos, cedendo espao para arquivos nativos de sistema operacional com crescimento automtico. O principal atrativo : o preo do produto, e a tendncia de se adaptar preferencialmente a produtos Microsoft, se que isto possa ser considerado um atrativo. No mais, tenho que reconhecer que a verso 7 bastante estvel, algumas pessoas reclamaram bastante sobre problemas em plataformas com Service Pack 1, mas isso tende a ser apurado. Outro ponto importante a favor do SQL Server sua interface de acesso OLE DB e ADO. Isto se trata de uma interface universal, SQL Server um dos primeiros gerenciadores a suporta-la. Nossos testes realizados sob ADO nos deixou uma boa impresso, e Delphi e C++Builder j possuem componentes nativos para ADO. De qualquer forma continuam existindo diversos fatores contra este gerenciador. S pode rodar sobre plataforma Windows (que uma das mais lentas para gerenciadores de banco de dados). Sua linguagem procedural em um tanto quanto catica, sua implementao de integridade referencial demasiadamente restrita.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

12

______________________________________________________________________ DB2 Se trata novamente de um gerenciador de banco de dados "histrico". A arquitetura fsica muito similar a do Oracle. Tambm pode rodar em uma srie de plataformas : existe inclusive uma verso "personal" para Windows 95/98. E tambm a similar ao Oracle em um outro aspecto importante : o preo. Realmente, a maioria dos usurios de DB2 esto presentes no setor industrial. Do ponto vista de programao h boas e ms notcias. As boas : o SQL do DB2 muito potente; lembre-se que a origem do SQL so os laboratrios da IBM. A implementao de triggers aqui realmente fabulosa. As ms notcias : As stored procedures do DB2 devem ser programadas em um linguagem externa : C, Java, Visual Basic, etc. Por que isto ruim? No s porque obriga-o a utilizar uma linguagem adicional mas principalmente por depender de outro compilador...que sempre estar ligado plataforma de sistema operacional.

CONCLUSO difcil dar uma receita para tomar uma deciso to importante como a seleo de um gerenciador de banco de dados, porm h vrios pontos totalmente claros. Por exemplo, em uma viso geral, no elegeria o DB2, por seu elevado preo e por seus problemas de compatibilidade e de desenvolvimento de stored procedures. A verso 6 do InterBase gratuita e muito potente. Desde que o nmero de transaes concorrentes no seja muito elevado (mais de 100) pode confiar nele. O SQL Server 7 barato e relativamente bom (esquea o 6.5), mas s o utilizaria em aplicaes de 3 camadas, pois bastante complicado estabelecer regras de negcio em Transact-SQL. Enquanto o Oracle, seu preo proibitivo, e a potncia que oferece exige um administrador de banco de dados (DBA) altamente qualificado.

Resumindo. Eu seguiria a seguinte ordem de preferncia: 1. InterBase/FIREBIRD, a no ser que seu sistema tenha que suportar mais que 150 conexes simultneas. 2. Se puder disponibilizar acesso em trs camadas, SQL Server 7 no uma m opo. Se o nmero de conexes muito alto, a mescla de MIDAS + MTS + ADO pode lhe garantir xito.
INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

13

______________________________________________________________________ 3. No se assuste se tiver que utilizar Oracle. Mas sim, faa um bom curso de administrao de banco de dados, ou exija ao cliente que um bom DBA cuide da administrao do gerenciador. 4. Se seu cliente tem um DB2 e uma condio de uso utiliz-lo, obtenha de algum modo toda a documentao possvel, pois ters que recorrer a C ou Java se necessitar do uso de stored procedures (e ir necessitar).

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

14

______________________________________________________________________

Firebird & MySQL - Parceiros ou Concorrentes?


Traduo e adaptao: Antonio Porfrio - (Tony)
antonioporfirio@ipdal.com.br Colaborador da Comunidade Firebird de Lngua Portuguesa

Muito se tem falado sobre a rivalidade entre os SGBDs, particularmente entre os open-source. Afinal, se so gratuitos, o fator "custo" no mais um componente da escolha. Sobre o qu deve recair ento a escolha? E afinal, quem o melhor entre o FIREBIRD e o MySQL? Eles so realmente concorrentes? Um pouco de histria Sobre o FIREBIRD j foi dissertado anteriormente. O MySQL nasceu h menos tempo, inicialmente como um produto proprietrio, logo em seguida apenas com restries na licena para uso comercial, mas que com o tempo adotou a GPL (General Public Licence). Neste intervalo de tempo, com os recursos captados, foi viabilizado o investimento no desenvolvimento do produto. Ele em seguida tornou-se popular por ser distribudo juntamente com as compilaes mais populares do Linux, como Red Hat, Mandrake, Suse e Slackware. A repercusso foi enorme, tornando a empresa original por trs do MySQL bastante slida, que atualmente oferece o MySQL livremente junto com uma verso paga, mais poderosa que a verso free. Portanto h uma empresa com recursos financeiros suficientes para garantir o flego por trs do MySQL, alm do apoio explcito de muitas outras. Considerando-se este fator, podemos at afirmar que o grau de evoluo do MySQL deveria ser maior. Rumos e objetivos distintos Comparar as duas solues desconsiderando-se as necessidades do usurio, seria uma injustia com qualquer um dos projetos. Ambos tem virtudes e limitaes que podem ser interessantes para uns e desfavorveis para outros. quase como religio, poltica ou futebol: cada um tem suas crenas, e as defende com muita disposio. O FIREBIRD conhecido por qualidades notveis, com caractersticas de um SGBD estvel, seguro e robusto. O MySQL se notabilizou pela grande velocidade e especializao em ambiente WEB. Portanto dependendo dos objetivos a serem alcanados voc pode preferir um ao outro.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

15

______________________________________________________________________ Tamanho documento? As diferenas entre os dois comeam no tamanho da soluo: a instalao do MySQL ocupa em torno de 12Mb, enquanto o FIREBIRD no passa de 2,5 Mb. O suporte mltiplas plataformas ponto comum entre as duas solues, levando o FIREBIRD uma ligeira vantagem. Ferramentas O MySQL tem um nmero mais limitado de ferramentas de acesso e manuteno s bases de dados, ao passo que o FIREBIRD, por ter o mesmo "bero" do Delphi e C++, conta com um nmero maior de ferramentas, propiciada pelo alto grau de afinidade com estas linguagens, bastante populares. As opes mais conhecidas e confiveis de ambiente grfico do MySQL so o MySQLAdm o MySQLGUI enquanto no FIREBIRD temos o IBExpert, IBOConsole, Firebird Workbench e muitas outras. Interface com Linguagens Neste aspecto, fica muito evidenciado a tendncia do MySQL no suporte Web e do FIREBIRD aplicaes desktop, cliente/servidor. O Firebird contemplado nativamente em diversas linguagens, particularmente Borland, embora atravs do ODBC possa-se lig-lo virtualmente a qualquer "coisa". O MySQL tem uma "simpatia" maior pelas linguagens da comunidade opensource como Perl, Phyton e PHP, embora estas barreiras no existam mais com o FIREBIRD. Armazenamento O modo como as informaes so armazenadas difere bastante. Isto tem um impacto direto em questes como backup, integridade dos dados e segurana. O FIREBIRD armazena todo o conjunto de dados, alm dos procedimentos ligados ao banco de dados, gatilhos disparados automaticamente e vises em um nico arquivo, podendo tambm ser guardados em diversos arquivos. O MySQL por padro guarda as tabelas em diversos arquivos, usando-se um esquema de 3 arquivos para cada tabela e todos os arquivos do banco de dados ficam dentro de um diretrio. Digamos que voc trabalhe numa empresa que tem 4 filiais e diariamente voc precisa atualizar a tabela de produtos para as filiais. Com o MySQL basta copiar os arquivos da tabela de produtos, que seriam: PRODUTOS.FRM, PRODUTOS.MYD, PRODUTOS.MYI. H quem diga (e eu concordo) que isto uma coisa que jamais se deve fazer.
INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

16

______________________________________________________________________ Com o Firebird, a nica sada ser voc criar um programa para fazer isso. Para se fazer uma cpia de tabela voc obrigado a usar as ferramentas do banco, backup e restore, para o SGBD garantir a integridade dos dados. Para quem foi Clippeiro ou desenvolvedor Paradox isto representa ter que repensar o modo operantis de suas aplicaes. O impacto um pouco menor para quem usa MS-Access, pois conceitualmente so parecidos. Os puristas do mundo SGBDs chegam a afirmar que o MySQL ainda no se tornou um SGBD de verdade, pois no tem nas suas caractersticas nativas este e outros recursos importantes. Performance x Recursos x Segurana Esta a grande chave para a sua escolha. Nenhum dos dois perfeito nos trs itens. Em certos momentos pesar mais um fator do que outro. Identificar isto fundamental, alm claro de ter a noo do trabalho para implementar cada projeto, isto , lembre-se que tudo aquilo que o SGBD no puder fazer por voc ter de criar se precisar. O MySql muito conhecido pela sua performance em aplicaes Web. De fato, de um modo geral, fora do mundo Web, ningum leva o MySQL muito a srio, preferindo outras solues. O FIREBIRD oferece maiores recursos e segurana, sendo o preferido em aplicaes Desktop e Cliente/Servidor e onde a segurana e integridade so cruciais. Este o cenrio atual, mas ambos esto caminhando na direo das virtudes um do outro, buscando suprir solues para estas questes. Por exemplo, existem muitas aplicaes para construo de Web Sites em PHP que oferecem suporte ao MySQL, e dificilmente ao FIREBIRD (PostNuke, PHPNuke, PHPBB, SlashCode, PHPMyAdmin). No entanto isto est aos poucos mudando, pois a necessidade de mais segurana em aplicaes Web est levando o MySQL a um limite, ento veremos logo uma mudana a favor do FIREBIRD neste sentido. Mas afinal, porque o MySQL mais popular que o Firebird? Este um fato inegvel. O MySQL tornou-se a grande "vedete" do confuso e imprevisvel mundo open-source. Mas no difcil descobrir o porqu disto: MySQL veio praticamente agregado todas as distribuies Linux importantes. Como o Linux teve seu "boom" justamente 3 anos atrs, ele veio na "carona". Nesta poca o antecessor do FIREBIRD ainda era um produto comercial.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

17

______________________________________________________________________ A nfase dada produo WEB no MySQL foi muito ampla, a maioria dos web sites que um visitante comum acessa, tem um logo com algo assim: "Powered by PHP & MySQL". Isto criou um interesse particular nestas ferramentas. MySQL oferece uma migrao mais amigvel para quem vem da arquitetura desktop, pois ele no precisa trabalhar necessariamente com o modelo client-server, o que um paradigma a ser quebrado para quem vem destes bancos de dados. antecessor do FIREBIRD sempre foi um produto secundrio para o fabricante, que sempre concentrou-se em divulgar seus compiladores. O marketing foi portanto pssimo, despeito de sua irrefutvel qualidade. Ao nascer o FIREBIRD no ficou vinculado nenhuma empresa com recursos para investir em marketing, promoo ou ferramentas, sendo mantida por uma comunidade bastante ativa, porm extremamente voltada parte tcnica, e pouco direcionada aes de marketing. Isto no torna o FIREBIRD invivel? De maneira nenhuma! Em primeiro lugar, aos poucos este cenrio est mudando, pois com a adeso de mais e mais desenvolvedores de grandes e pequenos projetos, o FIREBIRD est ganhando mais visibilidade. Toda a comunidade de usurios do Interbase est optando pelo FIREBIRD, apostando no seu futuro. Isto d ao FIREBIRD um lastro muito interessante no que diz respeito aos seus clientes. O FIREBIRD est evoluindo muito rapidamente, aps um incio turbulento, muitos afirmando que era um projeto fadado ao declnio, em poucos meses surgiu a verso 1.0 e j estamos na verso 1.5. O Time de desenvolvedores FIREBIRD, est ganhando a adeso de comunidades organizadas ao redor do mundo, como por exemplo, a CFLP (Comunidade FIREBIRD de Lngua Portuguesa) que esto fomentando a divulgao do FIREBIRD, no s em carter tcnico, mas concedendo uma oportunidade de pessoas e empresas conhecerem melhor as vantagens de utiliz-lo em seus projetos, e tornar conhecidos profissionais e projetos "powered by Firebird. Esta mesma comunidade est fazendo um esforo para quebrar as barreiras da imprensa especializada, trilhando um longo caminho para mostrar-lhes a grande valia do FIREBIRD, um verdadeiro processo de "doutrina" e persistncia. H negociaes tambm no sentido de disponibilizar o FIREBIRD junto distribuies Linux. Concluses

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

18

______________________________________________________________________ H dezenas de motivos para adotar o MySQL. H centenas de motivos para utilizar o FIREBIRD. Dependendo do que voc espera do banco de dados, a sua escolha recair sobre um ou outro. Quem gosta de um banco "seco", enxuto, fazendo tudo "no brao" talvez ter mais sucesso com o MySQL. J quem gosta de ter mais poder em um SGBD relacional, preferir o FIREBIRD. Uma coisa certa: O Time de Desenvolvedores do FIREBIRD quer torn-lo mais popular e o pessoal do MySQL reconhece que faltam recursos da pesada a serem desenvolvidos. No entanto se compararmos friamente o estgio evolutivo de cada produto, o FIREBIRD largou na frente graas ao Interbase. Na questo de investimentos versus recursos, o FIREBIRD tambm leva vantagem, pois tem um oramento de zero dlares e mesmo assim segue evoluindo num ritmo constante. Esperava-se que o MySQL j estivesse mais avanado, porm parece que os investimentos concentram-se mais no marketing. Por gostar do MySQL e ser apaixonado pelo FIREBIRD, tenho usado o MySQL em situaes bem especficas, e deixando para o FIREBIRD a maior parte dos projetos. No entanto, no os vejo como concorrentes, pois servem bem s suas finalidades, tornando-se parceiros, com funcionalidades e capacidades diferentes, que se ajustam por afinidade a cada necessidade.

CONHECIMENTOS: PREOS DE SGBD-R


Traduo e adaptao: Cludio Srgio Gonalves claudio@clarosistemas.com.br

Reviso: Artur Anjos [artur@arsoft.pt] Preos do InterBase 7 Os preos do IB 7 permanecem iguais ao do IB6.x exceto por alguns itens: Existe uma nova licena p/ 50 usurios, o que uma pechincha comparada ao custo de licenciamento do IB 6.x

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

19

______________________________________________________________________ Existe uma licena adicional por CPU que no era disponvel no IB 6.x (uma vez que IB 7 suporta multiprocessamento e o IB 6.x no) Documentao impressa agora opcional. O preo do IB 7 menor que do IB 6.x quando a nova licena p/ 50 usurios e a inflao so considerados. Ainda no existe uma licena ilimitada de usurios por CPU (ULPCL -Users Limit Per Cpu License), somente existe a licena de Internet, mas com a nova licena p/ 50 usurios significa que o nmero de usurios que voc precisava antes da nova licena ULPCL oferecida por outros Bancos de dados, fazem estes BDs mais baratos que o IB seria, principalmente quando multiprocessadores so licenciados. Esta informao foi copiada da Borland's online store. Todos os preos esto em dlares americanos. Qualquer erro ser provavelmente meu. Voc pode conseguir mais descontos se comprar um grande numero de licenas, neste caso contate Borland sales representative para detalhes. Estou tambm colocando os preos do IB 6.x para comparao.
Licena Media kit* Documentao impressa Ativao do Servidor CPU adicional 1 licena de usurio 10 licenas de usurio 20 licenas de usurio 50 licenas de usurio
IB 7 Novo IB7 Atualizao IB 6.x Novo IB 6.x Atualizao

$50

$30

$50

$30

$25/man $25/manual ual $200


$1000

Incl.

w/ Incl. w/ Media

$130
n/a

Media kit kit $200 $130


n/a n/a

$150 $1200 $2100 $3500

$130 $780 $1365 $2999

$150 $1200 $2100 No disponve l $2500 $60 $800 $2000

$100 $780 $1365 No disponvel

Internet Licena (usurios ilimitados) Desktop Edition CD (2 licenas de usurio) Desktop Edition 20 Usurios

$2500 $60 $800 $2000

$1625 $30 $? $1200

$1625 $30 $? $1200

Desktop Edition 100 Usurios

Para usar Interbase numa rede voc precisar do Media Kit, uma licena de ativao de servidor e provavelmente licenas adicionais p/ usurios (a licena do servidor inclui mais uma licena de usurio).

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

20

______________________________________________________________________ Interbase 7 usar uma nica CPU a menos que a licena p/ CPU adicional seja comprada. *Documentao impressa opcional com o IB7 media kit, includo com o IB 6.5 media kit (acho que a Borland cansou de perder dinheiro com isso). O preo do IB 6.5 media kit de atualizao para baixar na Internet. O preo do IB7 media kit para compra fsica (CD). Comparao com outros Servidores de Banco de dados
Estamos examinando somente Verses Server aqui. Incluindo edies Desktop ou Personal faria este artigo ficar muito grande. Todos os preos esto em dlares americanos, revendedores podem ter

descontos em todos os DBs daqui

inclusive IB. IBM DB/2 custa $14.250 por processador para a Workgroup Unlimited Edition ou or $20.000 por processador para a Enterprise Edition (menos p/ EE do Linux). Alternativamente voc pode pagar $999 + $249 por usurio concorrente para o Workgroup Edition. No h nenhuma licena por usurio concorrente na Enterprise Edition. Porem, existe uma "Internet license" para Workgroup Edition similar ao IB, que custa $999 + $249 + ($3000 * numero de processadores). Microsoft SQL Server 2000 custa $4.999 por processador para a Standard Edition ou $19.999 por processador para a Enterprise Edition. Alternativamente, voc pode pagar $2.249 por 10 usurios para a Standard Edition e $11.099 por 25 usurios para a Enterprise Edition. Oracle 9i custa $15.000 por processador para a Standard Edition ou $40.000 por processador para a Enterprise Edition. Alternativamente, voc pode pagar $400 por usurio nominal (NB: licena de "usurio nominal" diferente das licenas p/ usurio concorrente oferecida por Borland, IBM, e Microsoft) para a Standard Edition ou $800 por usurio nominal para a Enterprise Edition. Vamos comparar o custo das licenas exemplo:
Database Server InterBase 7 1 CPU, 50 users $50 + $200 + $3500 = $3750 IBM DB/2 Workgroup Edition $999 + ($249 * 50) = $13449 1 CPU, 100 users $50 + $200 + $7000 = $7250 $14250 1 CPU, 150 users $50 + $200 + 10500 = $10750 $14250 2 CPUs, 100 users $50 + $200 + = $8250 $999 + ($249*100) = $25899 2 CPUs, 150 users $50 + $200 + $10500 = $11750 ($14250 * 2) = $28500 4 CPUs, 200 users $50 + $200 + $3000 + $14000 = $17250 $999 + ($249 * 200) = $50799

$1000 + 7000 $1000 +

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD


(WUE when cheaper) IBM DB/2 Enterprise Edition Microsoft SQL Server 2000 Standard Edition Microsoft SQL Server 2000 Enterprise Edition Oracle Standard Edition Oracle 9i Enterprise Edition $40000 $40000 $40000 9i $15000 $15000 $15000 ($15000 * 2) = $30000 ($15000 * 2) = $80000 ($15000 * 2) = $30000 ($40000 * 2) = $80000 $19999 $19999 $19999 ($19999 * 2) = $39998 ($19999 * 2) = $39998 $4999 $4999 $4999 $20000 $20000 $20000 ($20000 * 2) = $40000 ($4999 * 2) = $9998 ($20000 * 2) = $40000 ($4999 * 2) = $9998 used

21

______________________________________________________________________

($20000 * 4) = $80000 ($4999 * 4) = $19996

($19999 * 4) = $79996

($15000 * 4) = $60000 ($40000 * 4) = $80000

Importante : Se voc esta numa situao em que o que voc precisa faz o IB mais caro que qualquer outros DB comercial, contate seu representante de vendas da Borland [U.S.; worldwide]. O pessoal de marketing do IB garante que eles ou tiram a diferena ou fazem ela ficar menor. Nota do Revisor: Este documento foi traduzido e colocado no site da CFLP (Comunidade FIREBIRD de Lngua Portuguesa) porque todas as bases de dados aqui referidas so concorrentes diretas do FIREBIRD. Existem porm features que o FIREBIRD no possui, e uma delas mesmo o suporte SMNP (suporte a mltiplos processadores). Embora o FIREBIRD possa correr em equipamentos com mais de um processador, este no consegue tirar partido dos mesmos, apenas de um. Em comparao de preos, o FIREBIRD continua imbatvel, pois o seu preo continua a ser Zero.

COMPONENTES INTERBASE Versus dbExpress EM APLICAES CLIENTE/SERVIDOR


Um dos primeiros problemas com os quais se deparam os desenvolvedores de Delphi que comeam a migrar para o ambiente cliente/servidor, no a falta de

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

22

______________________________________________________________________ componentes, mas ao contrrio, a existncia de vrias paletas (BDE, Interbase, dbExpress, InterbaseAdmin, Data Access) totalizando 35 componentes. Neste captulo discutido alguns componentes, mostrando suas vantagens e limitaes e os melhores componentes a serem usados com o FIREBIRD . A construo de aplicaes cliente/servidor utilizando componentes da paleta BDE, implica na necessidade de instalar suas cpias usando discos de instalao criados com o InstallShield Express, usando para isto quatro ou mais disquetes de instalao sendo necessrio alguns megabytes de espao em disco em cada estao de trabalho. desaconselhvel o uso dos componentes da paleta BDE, pois os componentes da paletas Interbase, InterbaseAdmin e dbExpress (est ltima incorporada verso 6 do Delphi) so substitutos vantajosos dos antigos componentes da paleta BDE, pois estes componentes para criao de aplicaes cliente/servidor so pesados. Os componentes da paletas Interbase e InterbaseAdmin so voltados criao de aplicaes do tipo cliente/servidor, totalizando 24 componentes, incluindo componentes de backup e restaurao utilizando funes de backup prprias do FIREBIRD/Interbase. A primeira grande vantagem o fato das aplicaes rodarem nas estaes de trabalho sem precisar do BDE (Borland Database Engine). A segunda grande vantagem que os componentes foram desenvolvidos especialmente e exclusivamente para funcionar com o FIREBIRD/Interbase. A contrapartida negativa neste caso que, ao desenvolver a aplicao usando esse conjunto de componentes, fica-se amarrado a Ter que usar o FIREBIRD/Interbase como SGDB-R. O componente TIBTable permite acesso bidirecional e editvel a registros (isto , permite usar instrues como NEXT (prximo) e PRIOR(anterior) para navegar pela tabela, alm de EDIT (alterar), INSERT (inserir), etc.), possibilitando trabalhar em conjunto com um componente DataSource, para se ligarem a tabela permitindo usar componentes como Dbgrid e Dbnavigator para navegar entre os registros. Os componentes da paleta dbExpress sero os que utilizaremos e na minha opinio so os mais fceis e que trazem uma melhor performance, apesar de no possurem acesso bidirecional, funcionam usando drivers dbExpress, os quais so pequenos drivers para bancos de dados que possibilitam rpido acesso a tabelas em diferentes SGBD-Rs. Estes drivers devem ser instalados nas estaes de trabalho em que os aplicativos devero rodar.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

23

______________________________________________________________________ Estes pequenos drivers acessam as informaes usando um mnimo de recurso de mquina e de forma extremamente gil e uma grande vantagem em relao aos componentes da paleta Interbase que s acessa servidores FIREBIRD/Interbase, estes drivers, se utilizarmos apenas instrues SQL padro e nenhuma instruo SQL proprietria, seguem drivers para Oracle, DB2, MySql, Interbase, Informix e MsSQL. Para compensar a limitao da navegao unidirecional podemos usar alguns componentes da paleta dbExpress em conjunto com os componentes DataSetProvider, ClientDataSet e DataSource (todos da paleta Data Access) possibilitando a navegao bidirecional e editvel de registros. Trabalhando com cpias dos registros em buffer (ou seja em memria) e acess-los a partir dessa cpia. O Delphi prev uma soluo fcil de aplicar para resolver o acesso concorrente a registros caso ocorra, isto pela implementao de um dilogo de conciliao ( que no ser abordado neste curso). No prximo captulo entraremos com mais detalhes sobre os componentes da paleta dbExpress na construo da nossa aplicao.

CRIAO DO SISTEMA
Desenvolvendo uma aplicao Cliente/Servidor O sistema que vamos desenvolver do tipo cliente/servidor, para fazer a ponte do Delphi com o SGBD-R, vamos utilizar os componentes da paleta dbExpress. Esses componentes so a resposta da Borland ao complexo problema de criar aplicaes com facilidade de acesso a mltiplos bancos de dados. Primeiro vamos criar o nosso banco de dados com o uso do IBConsole, repare os passos com as figuras abaixo:

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

24

______________________________________________________________________

Est a tela inicial do IBConsole onde entramos com nome de usurio -User Name (SYSDBA) e senha Password (masterkey), assim mesmo a senha em letra minscula.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

25

______________________________________________________________________

Agora escolheremos a opo Create Database.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

26

______________________________________________________________________

Colocaremos

no

Alias:

sc_Uni;

em

File(s)>Filename(s):

C:\Meus

documentos\Semana da Computacao\Banco\Sc_Uni.gdb; em Page Size: 4096; em Default Character Set: None; e em SQL Dialect: 3, e d um OK. Lembrando que este diretrio (pastas) j deve estar previamente criado. Veja que o banco j foi criado.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

27

______________________________________________________________________

Criao da tabela cliente via instrues SQL com o uso do Interactive SQL, para us-lo clique em TOOLS>Interactive SQL no menu do IBConsole, digitando o cdigo:
connect "C:\Meus documentos\Semana da Computacao\Banco\Sc_Uni.gdb" user "SYSDBA" password "masterkey"; /*cria tabela Cliente*/ Create Table CLIENTE (codigo integer not null, nome varchar(45), sexo char(1), datanascimento date, endereco varchar(45), primary key (codigo));

Depois no menu Query > Execute. Volte ao IBConsole, fechando o Interactive SQL, clique em TABLES e veja a tabela criada. Usando agora o IBExpert (deixe o IBConsole aberto), aps ter aberto o IBExpert, clique em Base de Dados > Registrar base de dados e utilize as configuraes abaixo, lembrando que a senha masterkey (em minsculo):

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

28

______________________________________________________________________

Clique em Testar Ligao ou em Registro direto e aps de dois cliques no banco que est sendo mostrado na figura abaixo:

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

29

______________________________________________________________________

Para criar a tabela que est sendo mostrada clique no menu Base de Dados > Nova Tabela, criando a tabela com os campos abaixo. Est criao ser feita em conjunto pois mostrarei a criao das triggers (gatilho) para criar os campos autonumerveis que sero usados nas chaves primrias. A seguir mostrado como isto feito:

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

30

______________________________________________________________________

Primeiro d dois cliques no cone que semelhante a uma chave aps ter dado um nome ao campo, depois d dois cliques em AutoInc (mostrado acima), aps configure o gatilho conforme as telas abaixo:

Clique na guia Automatismo e marque a caixa Criar Automatismo, pronto a trigger esta criada:

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

31

______________________________________________________________________

Termine de criar a tabela CLIENTE_FITA e compile-a para configurarmos as chaves estrangeiras para os campos COD_CLIENTE e COD_FITA como mostrado nas figuras abaixo:

Aps ter configurado clique na guia Restries > 2. Foreign Keys e configure as chaves estrangeiras conforme roteiro abaixo:

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

32

______________________________________________________________________

Clique em New foreign key, siga os passos:

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

33

______________________________________________________________________ Clique na seta em destaque para adicionar o campo COD_FITA, depois clique na guia Tabela CE e selecione a tabela FITA note que o Campo CE j estar selecionado. No esquea de mudar os nomes das restries das chaves para que no fiquem iguais. Faa isto para o campo COD_CLIENTE, depois compile novamente a tabela e clique no boto CLOSE e veja como ficou.

Terminamos a criao do banco de dados, comearemos a partir de agora interagir com o Delphi. Desenvolvendo o sistema com uso do DataModule algumas consideraes Ao desenvolvermos a nossa aplicao separaremos os forms em que construiremos a interface com os usurios, dos componentes que representam as informaes do banco de dados, estes sero colocados em um DataModule. Embora no sendo obrigatria, vantajosa no sentido de que: Fazendo esta separao, se alternarmos a forma de administrar as informaes do banco de dados, isto no nos obriga a rescrever a interface com o usurio; Da mesma forma que, mudando a interface com os usurios, isto no nos obriga a alterar a forma de administrar as informaes do banco de dados;

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

34

______________________________________________________________________ Trabalhando a interface do usurio e a forma de administrar as informaes do banco de dados independentemente, possvel criar forms passveis de utilizao por mltiplas aplicaes. Dando incio criao do projeto Primeiro vamos criar um diretrio chamado c:\Meus Documentos\Semana da Computacao\....... no qual colocaremos os arquivos a serem utilizados para criao do projeto. A seguir, comeamos pela criao do datamodule, para tanto executa-se FILE/NEW/APPLICATION e em seguida, FILE/NEW/DATAMODULE. Salvamos o projeto, executando FILE/SAVE/ALL. Salva-se a Unit2 como UnitDatamod, a Unit1 como UnitLocadora e o projeto com o nome Locadora. Cadastro de Clientes: O objetivo desta interface poder Incluir, Alterar, Localizar e Excluir os registros referentes aos diversos clientes que compem o sistema. Vamos, pois, comear a desenvolver a unit datamodule. No DataModule2 colocamos os seguintes componentes: Um SQLConnection Um SQLDataSet Um DataSetProvider Um ClientDataSet Um DataSource O componente SQLConnection tem a finalidade de permitir os parmetros para estabelecer uma conexo dbExpress com o banco de dados a ser utilizado. Ele interage com um driver dbExpress e com dois arquivos tipo INI (DBXdrivers.INI e DBXconnections.INI). O arquivo DBXdrivers.INI lista: Os tipos de drivers instalados (Interbase, Oracle, etc); As DLLs referentes a cada driver; Os atributos padro dos parmetros de conexo.

Ambos da paleta dbExpress

Todos da paleta DataAccess.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

35

______________________________________________________________________ O arquivo DBXconnection.INI lista: Os nomes dos conjuntos de conexes existentes, cada qual representando uma conexo especfica a um banco de dados. Vamos comear parametrizando o componente SQLConnection, para tanto d-se um duplo clique nele e na tela aparecer a figura abaixo: Segue-se clicando no sinal de + e completa-se o dilogo New Connection, conforme mostrado abaixo: Na seqncia, mudam-se as propriedades: DataBase = c:\Meus Documentos\Semana da Computacao\Banco\sc_Uni.gdb SQLDialect = 3 Login prompt do componente = false Repare que na propriedade DataBase colocamos o caminho (path) no qual criamos o nosso banco de dados. Para verificar a conexo est funcionando marque o nome da conexo criada e clique no boto testar conexo, se estiver correto aparecer a mensagem Sucessfully Completed!. No componente SQLDataSet1 mudam-se as propriedades: SQLConnection para SQLconnection1 CommandType como ctQuery CommandText d um duplo clique sobre a clula direita, aparecendo na tela o editor de comandos abaixo: Preencha o quadro com o comando: SELECT * FROM CLIENTE. ACESSO BIDIRECIONAL Para contornar a limitao do acesso bidirecional utilizamos em conjunto componentes da paleta DataAccess e configurando-os conforme segue: No DataSetProvider muda-se a propriedade DataSet para SQLDataSet, com isto estamos indicando onde o DataSetProvider deve obter os dados (eles vm como resultado de uma query = SQLDataSet). No ClientDataSet muda-se a propriedade ProviderName para DataSetProvider, com isto estamos dizendo que o ClientDataSet ser provido de dados do DataSetProvider.
INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

36

______________________________________________________________________ No DataSource muda-se a propriedade DataSet para ClientDataSet. Com o uso do componente ClientDataSet associado ao componente DataSetProvider que este acesso bidirecional feito. O macete consiste no fato de o componente tipo ClientDataSet manter cpia das linhas da tabela em um buffer na memria, para que eles possam ser consultados e alterados. Construiremos o form para cadastro de clientes detalhado, para os outros forms do sistemas volte e consulte esta parte para suas elaboraes, portanto preste muita ateno no que ser explicado nas linhas abaixo. Cria um novo form aps ter configurado o datamodule, para isto clique em FILE > NEW > FORM, em seguida salve a UNIT como Unit_Principal e acrescente: 4 DBEdits, 2 DBGrid, 1 DBNavigator paleta DBExpress; 4 Labels, 1 Panel: 1 Label e 1 Edit dentro do Panel, todos da paleta Standard;

6 SpeedButtons paleta additional.

Foi colocado os seguintes componentes que sero usados para busca: Um SQLDataSet nome sql_aux, sqlConnection Datamodule2.sqlconnection1 Da paleta dbExpress Um DataSetProvider nome ds_aux, dataset sql_aux Um ClientDataSet nome cds_aux, provider name ds_aux Um DataSource nome dts_aux, dataset sql_aux Configure os componentes conforme tabela abaixo:
Align form DBEdit1 DBEdit2 DBEdit3 DBEdit4 DBGrid1 DBGrid2 AlCustom BorderIcons BySystem Menu BorderStyle BS Single Caption Cadastro de Clientes Name Frm_CadCli ente Datamodule 2.DTS_Clie nte Datamodule 2.DTS_Clie nte Datamodule 2.DTS_Clie nte Datamodule 2.DTS_Clie nte Datamodule 2.DTS_Clie nte Dts_aux Nome Sexo datanascime nto endereco 49/ 314/ 282/ 240 49/ 314/ Datasource DataField Height/Left/ Top/Width

e comand text select * from CLIENTE.

Todos da paleta DataAccess.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD


282/ 240 DBNavigato r Speed Buttom_1 Speed Buttom_2 Speed Buttom_3 Speed Buttom_4 Speed Buttom_5 Speed Buttom_6 Label 1 Label 2 Label 3 Label 4 Label 5 Edit 1 Propriedade text = vzio &Inserir &Alterar &Salvar &Excluir &Localizar &Fim Nome do Cliente: Sexo: Data de Nascimento: Endereo: Digite o nome: Ed_nm_loca lizar Spd_Inserir Spd_alterar Spd_salvar Spd_excluir Sps_localiza r Spd_fim Datamodule 2.DTS_Clie nte

37

______________________________________________________________________

49/ 3/ 282/ 60 49/ 63/ 282/ 60 49/ 121/ 282/ 60 49/ 181/ 282/ 60 49/ 240/ 282/ 75 49/ 554/ 282/ 60

No DBGrid clique com o boto direito e escolha columns editor e no Editing DBGrid1.Columns clique com o boto direito e escolha addAll_Fields. No evento OnCreate do form digita-se:
DataModule2.Sql_cliente.Active:=true; DataModule2.CDS_Cliente.Active:=true; Panel1.Visible:=false; //painel ficar invisvel DBGrid2.Visible:=false;//dbgrid aux ficar invisvel

Com isto a tabela CLIENTE ser aberta e seus dados disponveis No evento OnDestroy do form digita-se:
DataModule2.Sql_cliente.Active:=false; DataModule2.CDS_Cliente.Active:=false;

E no evento OnClick do spd_Fim digita-se:


DataModule2.Sql_cliente.Active:=false; DataModule2.CDS_Cliente.Active:=false; Application.Terminate;

Com as duas primeiras linhas fechamos o acesso aos dados da tabela CLIENTE e com a ltima encerramos o aplicativo. No evento OnClick do spd_insert digita-se:
DataModule2.CDS_Cliente.Insert;

Esta instruo indica que se deseja incluir uma nova linha (registro) na tabela CLIENTE, esta instruo criar uma linha em branco na tabela CLIENTE. No evento OnClick do spd_salvar digita-se:
DataModule2.CDS_Cliente.ApplyUpdates(-1);

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

38

______________________________________________________________________ Com esta instruo fazemos com que as alteraes sejam gravadas (applyUpdates(-1)) na tabela e no apenas nos registros que esto no buffer de memria. No evento OnClick do spd_excluir digita-se:
if MessageDlg('Confirma realmente excluir o registro' ,mtConfirmation,[mbYes,mbNo],0)= mrYes then begin DataModule2.CDS_Cliente.Delete; DataModule2.CDS_Cliente.ApplyUpdates(-1); end;

Com a linha instruo:


if MessageDlg('Confirma realmente excluir o registro' ,mtConfirmation,[mbYes,mbNo],0)= mrYes

Envia-se uma mensagem para o usurio na forma Confima realmente excluir o registro na forma de uma tela dilogo com os botes Yes ou No (sim ou no).Se o usurio pressionar o boto Yes (sim), sero executadas as linhas:
DataModule2.CDS_Cliente.Delete; DataModule2.CDS_Cliente.ApplyUpdates(-1);

Na primeira linha damos a instruo de excluso do registro, porm ela no suficiente, lembre-se que estamos trabalhando com registros em buffer de memria, assim sendo usamos a segunda linha a qual realmente efetua a excluso do registro da tabela CLIENTE. No evento OnClick do spd_alterar digita-se:
DataModule2.CDS_Cliente.Edit;

Esta instruo indica que se deseja alterar uma linha (registro) na tabela, aps alterlo, clica-se no boto salvar para efetuar a alterao. No evento OnClick do spd_localizar digita-se: Panel1.Visible:=true; Para habilitar o painel e em seguida no evento OnKeyUp do ed_nm_localizar digita-se o seguinte cdigo (aqui est a procedure inteira com algumas explicaes):
procedure TObject; var Key: Word; Shift: TShiftState); var aux:string; begin DBGrid1.Visible:=false; Tfrm_CadCliente.ed_nm_localizarKeyUp(Sender:

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

39

______________________________________________________________________
DBGrid2.Visible:=true; aux:=ed_nm_localizar.Text; cds_aux.Active := False; sql_aux.Active := False; sql_aux.CommandText := 'select *' +' from CLIENTE ' +' where Nome like '''+aux+'%''';
{nome que comeam com a letra digitada {like '%en%' //nomes que contenham as letrs en no meio

like '%Lui_%'//nomes Luiz ou Luis like '[CK]%'//nomes que iniciam com a letra C ou K like '[A-L]'//nomes que comeam com as letras de A at L like '[^V]'//nomes que NO(^) comeam com a letra V} ISTO COMENTRIO.

cds_aux.Active := TRUE; sql_aux.Active := TRUE; end;

Com isto terminamos a interface para trabalhar com a tabela CLIENTE, as outras sero semelhantes por isso se surgir alguma dvida no deixe de consultar estes tpicos anteriores e tambm anotar nos espaos abaixo. Antes de rodar a aplicao faa o seguinte, entre no menu PROJECT > OPTION E mude o datamodule de posio passando para 1 linha, ou seja ser o primeiro a ser executado na aplicao.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

40

______________________________________________________________________

Anotaes

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

41

______________________________________________________________________

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

42

______________________________________________________________________

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

43

______________________________________________________________________

BIBLIOGRAFIA COMPLEMENTAR
Delphi 6 Cliente/Servidor com Firebird/Interbase Aplicao PDV e Controle de Estoque Autor: Bastiaan Pieter Marinus Wilderom e Marcelo Frank Editora rica. Firebird/Interbase 6.0 Cliente/Servidor com Delphi 6 Tpicos Avanados Autor: Bastiaan Pieter Marinus Wilderom e Stella Martins Wilderom Editora rica. Delphi 6 Interbase 6 Construindo Aplicaes BDE, Interbase Express e Zeos Library Autor: Ivan Mecenas Editora Book Express. Firebird e Delphi 6 Guia do Desenvolvedor Autor: Ivan Mecenas Editora Alta Books. Banco de Dados com Delphi Autor: Fbio Camara e Hugo S. Novaes Editora Visual Books. Aprenda Rpido Interbase com Delphi Autor: Paulo Roberto Munhoz Editora Visual Books. Revista do Clube Delphi Neofcio Editora LTDA. www.comunidade-firebird.org www.firebase.com.br www.clubedelphi.com.br

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

Vous aimerez peut-être aussi