Colecao InfoBanco de Dados

110

Transcript of Colecao InfoBanco de Dados

Page 1: Colecao InfoBanco de Dados
Page 2: Colecao InfoBanco de Dados

CONTEÚDO

COLEÇÃO INFO > 5

CONTEÚDO

BANCO DE DADOS

EQUIPEEDIÇÃO Lucia ReggianiEDITORA DE ARTE Iara SpinaCAPA Crystian Cruz (arte) e Cellus (ilustração)COLABORADORES Carlos Chernij, Fred Carbonare, Helio Silva, Nivaldo Foresti (texto) e Rita Del Monaco (revisão)

4 < COLEÇÃO INFO

31 Linguagens: SQL é alíngua oficial08 Evolução: o banco vai do

mainframe ao cluster

38 Teste: reviramos o DB2 Express-C, da IBM

108 Certificação: laboratóriopara especialistas

89 Tutorial: dados Exif dasfotos para o SQL Express

42 Teste: o MySQL 5.0vem reforçado

BANCO DE DADOS08 > A aventura dos dados15 > Sabe o que é tupla?24 > Planeje bem

o seu banco31 > O banco fala SQLquês

TESTES34 > Um SQL Server

fácil de usar36 > Oracle em versão light38 >DB2 grátis com

tudo dentro42 > O MySQL ganha músculos47 > Missão crítica é

para Postgre 50 > Firebird poupa

a máquina54 > O Access entra

em reforma57 > Administração é tudo

TUTORIAIS62 > Tabelas sem mistério71 > Relatório feito com views75 > Crie pesquisas com

critérios78 > O phpMyAdmin

doma o MySQL83 > Atualização é com o Ajax86 > Pesquise bem no Access89 > O Exif vai para o banco97 > E-mail falso não entra100 > O Rails faz mais rápido105 > Controle os seus livros

CERTIFICAÇÕES108 > Especialistas em dados109 > Todo mundo

quer um OCP111 > Domine o DB2 em

seis etapas113 > Craques em SQL Server

004_CONTEUDO1.qxd 25/02/2006 20:53 Page 4

Page 3: Colecao InfoBanco de Dados

CONTEÚDO

COLEÇÃO INFO > 5

CONTEÚDO

BANCO DE DADOS

EQUIPEEDIÇÃO Lucia ReggianiEDITORA DE ARTE Iara SpinaCAPA Crystian Cruz (arte) e Cellus (ilustração)COLABORADORES Carlos Chernij, Fred Carbonare, Helio Silva, Nivaldo Foresti (texto) e Rita Del Monaco (revisão)

4 < COLEÇÃO INFO

31 Linguagens: SQL é alíngua oficial08 Evolução: o banco vai do

mainframe ao cluster

38 Teste: reviramos o DB2 Express-C, da IBM

108 Certificação: laboratóriopara especialistas

89 Tutorial: dados Exif dasfotos para o SQL Express

42 Teste: o MySQL 5.0vem reforçado

BANCO DE DADOS08 > A aventura dos dados15 > Sabe o que é tupla?24 > Planeje bem

o seu banco31 > O banco fala SQLquês

TESTES34 > Um SQL Server

fácil de usar36 > Oracle em versão light38 >DB2 grátis com

tudo dentro42 > O MySQL ganha músculos47 > Missão crítica é

para Postgre 50 > Firebird poupa

a máquina54 > O Access entra

em reforma57 > Administração é tudo

TUTORIAIS62 > Tabelas sem mistério71 > Relatório feito com views75 > Crie pesquisas com

critérios78 > O phpMyAdmin

doma o MySQL83 > Atualização é com o Ajax86 > Pesquise bem no Access89 > O Exif vai para o banco97 > E-mail falso não entra100 > O Rails faz mais rápido105 > Controle os seus livros

CERTIFICAÇÕES108 > Especialistas em dados109 > Todo mundo

quer um OCP111 > Domine o DB2 em

seis etapas113 > Craques em SQL Server

004_CONTEUDO1.qxd 25/02/2006 20:53 Page 4

Page 4: Colecao InfoBanco de Dados

Fundador: VICTOR CIVITA(1907-1990)

Diretora de Redação: Sandra CarvalhoRedatora-chefe: Débora Fortes Diretor de Arte: Crystian Cruz

Editores Seniores: Carlos Machado, Lucia Reggiani e Maurício GregoEditores: Airton Lopes, André Cardozo e Eric Costa

Repórter: Silvia Balieiro Estagiários: Danilo Gregório e Paulo de Alencar Revisora: Marta MagnaniEditor de Arte: Jefferson Barbato Designers: Catia Herreiro e Wagner RodriguesColaborador: Dagomir Marquezi Infolab: Osmar Lazarini (consultor de sistemas)

Colaborador: Eduardo Kalnaitis Estagiários: Bruno Roberti, Celso Rodrigues e Valdir Fumene Junior Info Online: Cristian Medeiros e Renata Verdasca (webmasteres)

Atendimento ao leitor: Virgílio Sousa www.info.abril.com.br

Apoio Editorial: Beatriz de Cássia Mendes, Carlos Grassetti Serviços Editoriais: Wagner BarreiraDepto. de Documentação e Abril Press: Grace de Souza Correspodente Internacional: Ruth de Aquino

PUBLICIDADE CENTRALIZADADiretores: Mariane Ortiz, Sandra Sampaio, Sérgio R. Amaral

Executivos de Negócio: Eliane Pinho, Letícia Di Lallo, Maria Luiza Marot, Marcelo Cavalheiro, Marcelo Dória,Nilo Bastos, Pedro Bonaldi, Robson Monte, Rodrigo Toledo, Sueli Cozza, Vlamir Aderaldo, Wlamir Lino

Publicidade Regional Diretor Jacques Baisi Ricardo Publicidade Rio de Janeiro: Diretor Paulo Renato Simões Gerente de Publicidade núcleo Tecnologia: Marcos Peregrina Gomez Executivos de Negócio: Andréia Balsi,

Emiliano Hansenn, Marcello Almeida e Renata Mioli MARKETING E CIRCULAÇÃO:

Gerente de Produto: Ricardo Fernandes, Coordenadora de eventos: Carol Fioresi, Estágiario de marketing: Maurício Simões RodriguesGerente de Circulação Avulsas: Maria Helena Couto Gerente de Circulação Assinaturas: Euvaldo Nadir Lima Junior

Planejamento, Controle e Operações: Diretor: Auro Iasi Gerente: Fábio Luis dos SantosAnalista: Tales Bombicini Processos: Ricardo Carvalho

ASSINATURAS:Diretora de Operações de Atendimento ao Consumidor: Ana Dávalos Diretor de Vendas: Fernando Costa

Editor: Roberto CivitaConselho Editorial: Roberto Civita (Presidente), Thomaz Souto Corrêa (Vice-Presidente),

Jose Roberto Guzzo, Maurizio Mauro

Presidente Executivo: Maurizio Mauro

Diretor Secretário Editorial e de Relações Institucionais: Sidnei BasileVice-Presidente Comercial: Deborah Wright

Diretora de Publicidade Corporativa: Thais Chede Soares B. Barreto

Diretor-Geral: Jairo Mendes LealDiretor de Núcleo: Alexandre Caldini

INTERNATIONAL ADVERTISING SALES REPRESENTATIVES Coordinator for International Advertising: Global Advertising, Inc., 218 Olive Hill Lane,Woodside,California 94062. UNITED STATES: CMP Worldwide Media Networks, 2800 Campus Drive, San Mateo, California 94403, tel. (650) 513 4200, fax (650) 513 4482. EUROPE:HZI International,Africa House, 64-78 Kingsway, London WC2B 6AH, tel. (20) 7242-6346, fax (20) 7404-4376. JAPAN: IMI Corporation, Matsuoka Bldg. 303, 18-25, Naka1- chome, Kunitachi, Tokyo 186-0004, tel. (03) 3225-6866, fax (03) 3225-6877. TAIWAN: Lewis Int’l Media Services Co. Ltd., Floor 11-14 no 46, Sec 2, Tun Hua SouthRoad, Taipei, tel. (02) 707-5519, fax (02) 709-8348

COLEÇÃO BANCO DE DADOS, edição 27, é uma publicação da Editora Abril S.A. Distribuída em todo o país pela Dinap S.A.Distribuidora Nacional de Publicações, São Paulo.

Presidente do Conselho de Administração: Roberto Civita

Presidente Executivo: Maurizio Mauro

Vice-Presidentes: Deborah Wright, Eliane Lustosa, Marcio Ogliara, Valter Pasquini

www.abril.com.br

IMPRESSA NA DIVISÃO GRÁFICA DA EDITORA ABRIL S.A.Av. Otaviano Alves de Lima, 4400, CEP 02909-900 - Freguesia do Ó - São Paulo - SP

Publicações da Editora Abril: Veja: Veja, Veja São Paulo, Veja Rio, Vejas Regionais Negócios: Exame, Você S/A A Consumo/Comportamento: NúcleoConsumo: Boa Forma, Elle, Estilo, Manequim Núcleo Comportamento: Claudia, Nova Núcleo Bem-Estar: : Bons Fluidos, Saúde!, Vida SimplesTurismo/Tecnologia: Núcleo Turismo: Guias Quatro Rodas, National Geographic, Viagem e Turismo Núcleo Homem: : Placar, Playboy, Quatro Rodas, VipNúcleo Tecnologia: Info, Info Canal, Info Corporate Cultura/Jovem: Núcleo Jovem: Bizz, Capricho, Flashback, Mundo Estranho, Superinteressante, SupersurfNúcleo Infantil: Atividades, Disney, Recreio Núcleo Cultura: : Almanaque Abril, Guia do Estudante, Aventuras na História, Revista das ReligiõesCasa/Semanais: Núcleo Casa e Construção: Arquitetura e Construção, Casa Claudia, Claudia Cozinha Núcleo Celebridades: Contigo! NúcleoSemanais: Ana Maria, Faça e Venda, Minha Novela, Tititi, Viva! Mais Fundação Victor Civita: Nova Escola

Publicidade São Paulo www.publiabril.com.br, Classificados tel.0800-7012066, Grande São Paulo tel. 3037-2700 ESCRITÓRIOS E REPRESENTANTES DE PUBLI-CIDADE NO BRASIL: Central-SP tel. (11) 3037-6564 Bauru Gnottos Mídia Representações Comerciais, tel. (14) 3227-0378, e-mail: [email protected]ém SRS Propaganda e Representações Ltda, tel (91) 3272-8195, e-mail: [email protected] Belo Horizonte tel. (31) 3282-0630, fax (31) 3282-0632Blumenau M. Marchi Representações, tel. (47) 3329-3820, fax (47) 3329-6191 Brasília Escritório: tels. (61) 3315-7554/55/56/57, fax (61) 3315-7558; Representante:Carvalhaw Marketing Ltda., tels (61) 3426-7342/ 3223-0736/ 3225-2946/ 3223-7778, fax (61) 3321-1943, e-mail: [email protected] Campinas CZ Press Com. eRepresentações, telefax (19) 3233-7175, e-mail: [email protected] Campo Grande Josimar Promoções Artísticas Ltda. tel. (67) 3382-2139 e-mail: [email protected] Cuiabá Fênix Propaganda Ltda., tels. (65) 9235-7446/9602-3419, e-mail: [email protected] Curitiba Escritório: tel. (41) 3250-8000/8030/8040/8050/8080, fax (41) 3252-7110; Representante: Via Mídia Projetos Editoriais Mkt. e Repres. Ltda., telefax (41) 3234-1224, e-mail: [email protected] Florianópolis Interação Publicidade Ltda. tel. (48) 3232-1617, fax (48) 3232-1782, e-mail: [email protected] Fortaleza Midiasolution Repres.e Negoc. em Meios de Comunicação, telefax (85) 3264-3939, e-mail: [email protected] Goiânia Middle West Representações Ltda., tels.(62) 3215-5158,fax (62) 3215-9007, e-mail: [email protected] Joinville Via Mídia Projetos Editoriais Mkt. e Repres. Ltda., telefax (47) 3433-2725, e-mail: [email protected] Manaus Paper Comunicações, telefax (92) 3656-7588, e-mail: [email protected] MaringáAtitude de Comunicação e Representação, tele-fax (44) 3028-6969, e-mail: [email protected] Porto Alegre Escritório: tel. (51) 3327-2850, fax (51) 3227-2855; Representante: Print Sul Veículos de ComunicaçãoLtda., telefax (51) 3328-1344/3823/4954, e-mail: [email protected] ; Multimeios Representações Comerciais, tel.(51) 3328-1271, e-mail: [email protected] MultiRevistas Publicidade Ltda., telefax (81) 3327-1597, e-mail: [email protected] Ribeirão Preto tel. (16) 3964-5516, fax (16) 632-0660, e-mail: [email protected] Rio de Janeiro pabx: (21) 2546-8282, fax (21) 2546-8253 SalvadorAGMN Consultoria Public. e Representação, tel.(71) 3341-4992/1765/9824/9827,fax: (71) 3341-4996, e-mail: [email protected] Vitória ZMR - Zambra Marketing Representações, tel. (27) 3315-6952, e-mail: [email protected]

BANCO DE DADOS_006.qxd 25/02/2006 21:02 Page 6

Page 5: Colecao InfoBanco de Dados

RECADO DA REDAÇÃO

DÁ-LHEINFORMAÇÃO!

universo do software égrande e abriga mundosmuito peculiares, comoo dos bancos de dados.

De obscuros repositórios dos main-frames, esses programas passarama estrelas de todo porte, organizan-do a explosão de informações gera-das pela vida digital de pessoas eempresas. Neles, tabelas são maisque colunas e linhas, os dados seagrupam em entidades e se relacio-nam abertamente, transacionam,disparam gatilhos e administram res-trições. Nesse mundinho, o e/ANDnão soma, diminui. E quem não sabedessa e outras pegadinhas lógicas,perde tempo fazendo besteira. Éaqui que se encaixa este especial.Aos novatos, contamos a históriagloriosa dos bancos de dados e des-trinchamos seus conceitos. De ban-deja, vai um roteiro para escolher osistema gerenciador, planejar e exe-cutar o banco da melhor forma pos-

sível. Testamos as novíssimas ver-sões gratuitas dos poderosos Oracle,DB2 e SQL Server 2005, dos livresMySQL, PostgreSQL e Firebird e dobeta repaginado do Access 12. Entre-gamos o jeito profissional de mon-tar tabelas e consultas, os segredosdas interfaces de administração euma porção de tutoriais com osvariados bancos. Você vai sabercomo extrair as informações Exif dasfotos digitais para o banco, criar rela-tórios com views, controlar os livrosemprestados, cadastrar e-mails váli-dos e muito mais. E se a animaçãochegar ao ponto de devotar a carrei-ra à administração dos bancos dedados, estão aquios caminhos paraas especializaçõesmais valorizadasda área. Aproveite.

LUCIA REGGIANIEDITORA DE BANCO DE DADOS

O

INFO COLEÇÃOUma publicação mensal da Editora Abril

Para contatar a redação:[email protected]

Para assinar a Coleção:(11) 3347.2121 — Grande São Paulo0800-701-2828 — Demais [email protected]

COLEÇÃO INFO > 7

BANCO_005i.qxd 25/02/2006 21:30 Page 7

Page 6: Colecao InfoBanco de Dados

HISTÓRIA

COLEÇÃO INFO > 9

A AVENTURA DOS DADOS

DO MAINFRAME À INTERNET, OS BANCOS DE DADOS TÊM MUITO PARA CONTAR

POR TAGIL OLIVEIRA RAMOS

HISTÓRIA

8 < COLEÇÃO INFO

rmazenar informaçõesorganizadas e recupe-rá-las sem faltar peda-ço sempre que neces-

sário. Dita assim, a missão dos ban-

cos de dados parece simples, trivial.Não deixa de ser verdade para astecnologias atuais, que disfarçam acomplexidade do processamento edo gerenciamento de dados com in-

A

terfaces gráficas e assistentes. Mas,no princípio, lidar com bases de da-dos era coisa cabeluda, encaradapor mainframes.

A história dos modernos bancosde dados começa na década de 60,quando os computadores amplia-ram a capacidade de armazenamen-to e se transformaram em possibi-lidade real para as empresas. Nãohavia ainda o conceito elaboradode banco de dados — o armazena-mento de informação digital basea-va-se em modelos de organizaçãodo mundo físico. No início, dois mo-

delos de bancos de dados foram de-senvolvidos: o de rede (Codasyl) eo hierárquico (IMS). O acesso à ba-se de dados era complicadíssimo, eos detalhes do armazenamento de-pendiam do tipo de dado a ser ar-quivado. Acrescentar um campo ex-tra à base requeria, muitas vezes,reescrever todo o esquema que sus-tentava a aplicação. A ênfase, nes-se caso, estava nos registros a se-rem processados, e não na estrutu-ra do sistema. Para fazer qualquermodificação, um usuário precisariaconhecer a estrutura física da basede dados. Sistemas comerciais bem-sucedidos, como o Sabre, da IBM eda American Airlines, utilizaram pormuitos anos esse tipo de modelo.

O MODELO DE CODDNo início dos anos 70, as coisas co-meçam a mudar. O pesquisador daIBM Edgar Frank Codd (1923-2003)propõe o modelo relacional para abase de dados. Mais do que isso, eleintroduz uma nova maneira de pen-sar a informação digital a ser gra-vada, recuperada e gerenciada, es-tabelecendo um jeito mais compu-tacional de tratar o relacionamen-to entre os dados. Esse sistema vi-rou padrão e é usado até hoje. O modelo abstrato de Codd é a pri-meira abordagem completa parauma base de dados, o resgate dasinformações, manipulação, integri-dade lógica, visualização, atualiza-ção e gerenciamento. Foi concebi-do para armazenar registros de da-

© ILUSTRAÇÃO PEPE CASALS

08_14_BANCO_HISTORIA1 25/02/2006 21:11 Page 8

Page 7: Colecao InfoBanco de Dados

HISTÓRIA

COLEÇÃO INFO > 9

A AVENTURA DOS DADOS

DO MAINFRAME À INTERNET, OS BANCOS DE DADOS TÊM MUITO PARA CONTAR

POR TAGIL OLIVEIRA RAMOS

HISTÓRIA

8 < COLEÇÃO INFO

rmazenar informaçõesorganizadas e recupe-rá-las sem faltar peda-ço sempre que neces-

sário. Dita assim, a missão dos ban-

cos de dados parece simples, trivial.Não deixa de ser verdade para astecnologias atuais, que disfarçam acomplexidade do processamento edo gerenciamento de dados com in-

A

terfaces gráficas e assistentes. Mas,no princípio, lidar com bases de da-dos era coisa cabeluda, encaradapor mainframes.

A história dos modernos bancosde dados começa na década de 60,quando os computadores amplia-ram a capacidade de armazenamen-to e se transformaram em possibi-lidade real para as empresas. Nãohavia ainda o conceito elaboradode banco de dados — o armazena-mento de informação digital basea-va-se em modelos de organizaçãodo mundo físico. No início, dois mo-

delos de bancos de dados foram de-senvolvidos: o de rede (Codasyl) eo hierárquico (IMS). O acesso à ba-se de dados era complicadíssimo, eos detalhes do armazenamento de-pendiam do tipo de dado a ser ar-quivado. Acrescentar um campo ex-tra à base requeria, muitas vezes,reescrever todo o esquema que sus-tentava a aplicação. A ênfase, nes-se caso, estava nos registros a se-rem processados, e não na estrutu-ra do sistema. Para fazer qualquermodificação, um usuário precisariaconhecer a estrutura física da basede dados. Sistemas comerciais bem-sucedidos, como o Sabre, da IBM eda American Airlines, utilizaram pormuitos anos esse tipo de modelo.

O MODELO DE CODDNo início dos anos 70, as coisas co-meçam a mudar. O pesquisador daIBM Edgar Frank Codd (1923-2003)propõe o modelo relacional para abase de dados. Mais do que isso, eleintroduz uma nova maneira de pen-sar a informação digital a ser gra-vada, recuperada e gerenciada, es-tabelecendo um jeito mais compu-tacional de tratar o relacionamen-to entre os dados. Esse sistema vi-rou padrão e é usado até hoje. O modelo abstrato de Codd é a pri-meira abordagem completa parauma base de dados, o resgate dasinformações, manipulação, integri-dade lógica, visualização, atualiza-ção e gerenciamento. Foi concebi-do para armazenar registros de da-

© ILUSTRAÇÃO PEPE CASALS

08_14_BANCO_HISTORIA1 25/02/2006 21:11 Page 8

Page 8: Colecao InfoBanco de Dados

HISTÓRIA

COLEÇÃO INFO > 11

deira. A primeira de-las, conhecida como“Lei da Informação”,dizia simplesmenteque todo dado deveser apresentado aousuário na forma detabela. A segunda, ou“Regra do Acesso Ga-rantido”, exige quetodo dado seja aces-sível sem ambigüidade e aconselhaque cada informação seja descritapor uma combinação de nome databela, chave primária e o nome docampo. E assim por diante.

O mesmo Codd cunharia o nomeOLAP (On-Line Analytical Proces-sing) para descrever uma ampla ca-tegoria de produtos de software quetinham as características de acessoaos dados propostas por ele. As 12Regras de seu padrão foram adota-das pela indústria de TI, forçandomuitas empresas a revisar seus pro-dutos para melhor se adequar aoscritérios OLAP de Codd.

Em 1976, outro avanço viria das pes-quisas de Peter P. Chen. Ele propõe omodelo Entidade-Relacio-namento (ER) para o designde banco de dados, dandoum importante passo paraa modelagem de alto nívele permitindo ao desenvol-vedor concentrar-se maisno uso das informações doque propriamente na estru-tura lógica que há por trásda tabela.

SURGE O DBASEA evolução natural dos bancos dedados passaria pelo estabelecimen-to de um padrão não-teórico: o dBa-se, ao ser lançado no final dos anos70, tornou-se uma referência. Suaorigem encontra-se em meados dosanos 60. Seu antecessor era um sis-tema chamado Retrieve, vendido pe-la Tymshare Corporation. Naquelaépoca, os computadores só eramencontrados em grandes gabinetes,no ambiente do trabalho.

O Retrieve era usado no Jet Pro-pulsion Laboratory (JPL), em Pasa-dena, na Califórnia. Nos anos 60,Jeb Long, um programador desselaboratório, recebeu a tarefa de es-

crever um programa quedesempenhasse as mes-mas funções que o Retrie-ve. Em 1973, ele se tornouengenheiro de softwaredo JPL. Ali ele desenvol-veu um programa de ge-renciamento de arquivoschamado JPLDIS (Jet Pro-pulsion Laboratory Dis-play Information System),

HISTÓRIA

10 < COLEÇÃO INFO

dos com estruturas relati-vamente simples e proces-sar transações simples.

A idéia começou a serdesenvolvida por Codd du-rante seu doutorado naUniversidade de Michigan.Em sua tese, ele apresen-tava uma espécie de “au-to-reprodução” feita emprogramas de computa-dores. O trabalho foi publicado em1967 no livro Cellular Automata, pu-blicado pela Academic Press. A idéiaera tão avançada que levou uma dé-cada para ser digerida.

Pelo menos dois protótipos prin-cipais de sistemas relacionais foramdesenvolvidos entre 1974 e 1977,mostrando aplicações práticas doque só existia na teoria.

Um dos protótipos era o Ingres,desenvolvido na UniversidadeBerkeley, que seria seguido pela In-gres Corporation, Sybase, MS SQLServer e Britton-Lee, dentre outras.

Esse tipo de sistema usaQUEL como linguagem depesquisa das bases de da-dos. O segundo protótipo,conhecido como SystemR, foi desenvolvido pelaIBM em San Jose, Califór-nia, e levou ao SQL/DS &DB2, da própria empresa,seguido por Oracle e HP.Nesse sistema, é utiliza-

da a SEQUEL como linguagem depesquisa de dados. Originalmente,as aplicações foram desenvolvidaspara os enormes mainframes.

AS DOZE REGRASO termo “relação” era usado porCodd de maneira estritamente ma-temática, dentro de uma tabela comlinhas e colunas que trabalhavamcom propriedades especiais. Embo-ra isso pareça óbvio atualmente, nãoera nada elementar nos anos 70.Tanto que Codd sentiu a necessida-de de estabelecer as 12 regras de

uma base de dadosrelacional, uma re-ceita para extrair domodelo algo quefuncionasse mesmo.Isso aconteceu em1974 e foi expandidoao longo das déca-das. Em 1990, a listacresceu para 333 re-querimentos.

Vistas com osolhos de hoje, as 12leis parecem brinca-

Mapa de relacionamento: a teoria de Codd na prática

dBase III: padrão de banco de dados para PCs nos anos 80Edgar Codd: pai domodelo relacional

Peter Chen: novomodelo de design

© FOTO DIVULGAÇÃO IBM © FOTO DIVULGAÇÃO

08_14_BANCO_HISTORIA1 25/02/2006 21:15 Page 10

Page 9: Colecao InfoBanco de Dados

HISTÓRIA

COLEÇÃO INFO > 11

deira. A primeira de-las, conhecida como“Lei da Informação”,dizia simplesmenteque todo dado deveser apresentado aousuário na forma detabela. A segunda, ou“Regra do Acesso Ga-rantido”, exige quetodo dado seja aces-sível sem ambigüidade e aconselhaque cada informação seja descritapor uma combinação de nome databela, chave primária e o nome docampo. E assim por diante.

O mesmo Codd cunharia o nomeOLAP (On-Line Analytical Proces-sing) para descrever uma ampla ca-tegoria de produtos de software quetinham as características de acessoaos dados propostas por ele. As 12Regras de seu padrão foram adota-das pela indústria de TI, forçandomuitas empresas a revisar seus pro-dutos para melhor se adequar aoscritérios OLAP de Codd.

Em 1976, outro avanço viria das pes-quisas de Peter P. Chen. Ele propõe omodelo Entidade-Relacio-namento (ER) para o designde banco de dados, dandoum importante passo paraa modelagem de alto nívele permitindo ao desenvol-vedor concentrar-se maisno uso das informações doque propriamente na estru-tura lógica que há por trásda tabela.

SURGE O DBASEA evolução natural dos bancos dedados passaria pelo estabelecimen-to de um padrão não-teórico: o dBa-se, ao ser lançado no final dos anos70, tornou-se uma referência. Suaorigem encontra-se em meados dosanos 60. Seu antecessor era um sis-tema chamado Retrieve, vendido pe-la Tymshare Corporation. Naquelaépoca, os computadores só eramencontrados em grandes gabinetes,no ambiente do trabalho.

O Retrieve era usado no Jet Pro-pulsion Laboratory (JPL), em Pasa-dena, na Califórnia. Nos anos 60,Jeb Long, um programador desselaboratório, recebeu a tarefa de es-

crever um programa quedesempenhasse as mes-mas funções que o Retrie-ve. Em 1973, ele se tornouengenheiro de softwaredo JPL. Ali ele desenvol-veu um programa de ge-renciamento de arquivoschamado JPLDIS (Jet Pro-pulsion Laboratory Dis-play Information System),

HISTÓRIA

10 < COLEÇÃO INFO

dos com estruturas relati-vamente simples e proces-sar transações simples.

A idéia começou a serdesenvolvida por Codd du-rante seu doutorado naUniversidade de Michigan.Em sua tese, ele apresen-tava uma espécie de “au-to-reprodução” feita emprogramas de computa-dores. O trabalho foi publicado em1967 no livro Cellular Automata, pu-blicado pela Academic Press. A idéiaera tão avançada que levou uma dé-cada para ser digerida.

Pelo menos dois protótipos prin-cipais de sistemas relacionais foramdesenvolvidos entre 1974 e 1977,mostrando aplicações práticas doque só existia na teoria.

Um dos protótipos era o Ingres,desenvolvido na UniversidadeBerkeley, que seria seguido pela In-gres Corporation, Sybase, MS SQLServer e Britton-Lee, dentre outras.

Esse tipo de sistema usaQUEL como linguagem depesquisa das bases de da-dos. O segundo protótipo,conhecido como SystemR, foi desenvolvido pelaIBM em San Jose, Califór-nia, e levou ao SQL/DS &DB2, da própria empresa,seguido por Oracle e HP.Nesse sistema, é utiliza-

da a SEQUEL como linguagem depesquisa de dados. Originalmente,as aplicações foram desenvolvidaspara os enormes mainframes.

AS DOZE REGRASO termo “relação” era usado porCodd de maneira estritamente ma-temática, dentro de uma tabela comlinhas e colunas que trabalhavamcom propriedades especiais. Embo-ra isso pareça óbvio atualmente, nãoera nada elementar nos anos 70.Tanto que Codd sentiu a necessida-de de estabelecer as 12 regras de

uma base de dadosrelacional, uma re-ceita para extrair domodelo algo quefuncionasse mesmo.Isso aconteceu em1974 e foi expandidoao longo das déca-das. Em 1990, a listacresceu para 333 re-querimentos.

Vistas com osolhos de hoje, as 12leis parecem brinca-

Mapa de relacionamento: a teoria de Codd na prática

dBase III: padrão de banco de dados para PCs nos anos 80Edgar Codd: pai domodelo relacional

Peter Chen: novomodelo de design

© FOTO DIVULGAÇÃO IBM © FOTO DIVULGAÇÃO

08_14_BANCO_HISTORIA1 25/02/2006 21:15 Page 10

Page 10: Colecao InfoBanco de Dados

HISTÓRIA

COLEÇÃO INFO > 13

HISTÓRIA

12 < COLEÇÃO INFO © FOTO DIVULGAÇÃO RATLIFF SOFTWARE PRODUCTIONS

escrito na linguagem For-tran para rodar num main-frame Univac 1108.

O JPLDIS foi, assim, amãe da linguagem dBase,que passou a rodar em mi-crocomputadores com osistema CP/M. Criada porum jovem programadordo JPL, Wayne Ratliff, seugrande sucesso baseava-se na simplicidade. Os co-mandos seguiam a lógica das pala-vras inglesas: use, find, list etc. NodBase, Ratliff partia de uma idéiatambém simples: desenvolver umprograma de banco de dados paradesktop baseado naquele que roda-va nos mainframes de seu trabalho.Fez tudo isso num computador mon-tado em sua casa.

Foi um grande progresso para aépoca. Não somente o programacriava tabelas e guardava dados,mas tinha a capacidade de criar pro-gramas ASCII (como arquivos batchdo DOS), que podiam então exibire imprimir as informações requisi-tadas. Ratliff batizou seu softwarede Vulcan (em homenagem ao Sr.

Spock, do filme Jornadanas Estrelas) e começoua vendê-lo por reembol-so postal.

Mais tarde, Long asso-ciou-se a Ratliff e traduziuaquela versão original dodBase II para rodar no IBMPC. Todo o trabalho foi fei-to em linguagem As-sembly. Jeb Long foi umdos fundadores da empre-

sa Ashton-Tate, ficou conhecido comum dos gurus do dBase e como res-ponsável também pelas versões dBase III e dBase IV.

AS LINGUAGENSEm 1984 surgiu o Clipper, linguagemde programação compatível com odBase III Plus, com desempenho de-zenas de vezes mais rápido que odBase original. Até meados da dé-cada de 90, o Clipper era o líder domercado de linguagens de desen-volvimento para micros. A partir daí,as linguagens visuais, criadas pararodar no ambiente Windows,começam a ganhar terreno.

Quando os bancos de dados rela-cionais estavam sen-do desenvolvidos, fo-ram criadas lingua-gens destinadas à suamanipulação. O de-partamento de pes-quisa da IBM desen-volveu a linguagemSQL (StructuredQuery Language) nos

anos 70. Somenteem 1986 o AmericanNational StandardsInstitute (ANSI) pu-blicou o SQL comoum padrão. A partirdaí, o SQL passou aser usado pela maio-ria das empresas.

Ao longo dos anos80, a linguagem SQLtorna-se praticamen-te universal. Por suavez, o DB2, da IBM, passou a ser o car-ro-chefe da empresa nesse segmen-to, que começa a experimentar ex-pressivo crescimento. Ao mesmo tem-po, as redes locais ganham espaçonas empresas, e o DB2 se mantém co-mo uma das fortes referências embancos de dados corporativos.

CHEGAM OS PCSCom a entrada dos PCs em cena, ascompanhias de banco de dados têmum crescimento notável. Novos no-mes dominam o cenário do software,como RIM, RBase 5000, Paradox,dBase, FoxBase e FoxPro. A transi-ção para a década de 90 deixa pou-cas empresas da geração anteriorcomo sobreviventes. O modelo clien-te-servidor torna-se a norma paraas futuras decisões de negócio, aomesmo tempo em que se verifica oestabelecimento das ferramentas deprodutividade pessoal, como Excele Access. É também um marco ini-cial para os protótipos dos bancosde dados orientados a objeto, ou

Object Database ManagementSystems (ODBMS).

O fenômeno da internet vem sacu-dir o ambiente de TI em meados dosanos 90. Começa-se a exigir de ma-neira frenética o acesso de compu-tadores remotos aos dados guarda-dos nos sistemas legados. Na outraponta, os bancos de dados se adap-tam para servir às demandas da web— o que significa acesso às informa-ções, de qualquer lugar, via browser.

No final dos anos 90, o intenso in-vestimento das empresas na inter-net abastece o mercado com cente-nas de ferramentas para conectaros bancos de dados à web. Crescemas ofertas de novos produtos e no-vas tecnologias. Com o passar dotempo, destacam-se duas áreas bá-sicas: de um lado, as soluções ba-seadas na plataforma Java, da Sun.Empresas como a própria Sun, alémde IBM e Oracle, têm bancos de da-dos ou ferramentas para desenvol-vimento nessa área. Do outro lado,estão as empresas que oferecem

FoxPro para DOS: gerenciador baseado em dBase

DB2, da IBM: referência em banco de dados corporativo

Wayne Ratliff:criador do Vulcan

08_14_BANCO_HISTORIA1 25/02/2006 21:26 Page 12

Page 11: Colecao InfoBanco de Dados

HISTÓRIA

COLEÇÃO INFO > 13

HISTÓRIA

12 < COLEÇÃO INFO © FOTO DIVULGAÇÃO RATLIFF SOFTWARE PRODUCTIONS

escrito na linguagem For-tran para rodar num main-frame Univac 1108.

O JPLDIS foi, assim, amãe da linguagem dBase,que passou a rodar em mi-crocomputadores com osistema CP/M. Criada porum jovem programadordo JPL, Wayne Ratliff, seugrande sucesso baseava-se na simplicidade. Os co-mandos seguiam a lógica das pala-vras inglesas: use, find, list etc. NodBase, Ratliff partia de uma idéiatambém simples: desenvolver umprograma de banco de dados paradesktop baseado naquele que roda-va nos mainframes de seu trabalho.Fez tudo isso num computador mon-tado em sua casa.

Foi um grande progresso para aépoca. Não somente o programacriava tabelas e guardava dados,mas tinha a capacidade de criar pro-gramas ASCII (como arquivos batchdo DOS), que podiam então exibire imprimir as informações requisi-tadas. Ratliff batizou seu softwarede Vulcan (em homenagem ao Sr.

Spock, do filme Jornadanas Estrelas) e começoua vendê-lo por reembol-so postal.

Mais tarde, Long asso-ciou-se a Ratliff e traduziuaquela versão original dodBase II para rodar no IBMPC. Todo o trabalho foi fei-to em linguagem As-sembly. Jeb Long foi umdos fundadores da empre-

sa Ashton-Tate, ficou conhecido comum dos gurus do dBase e como res-ponsável também pelas versões dBase III e dBase IV.

AS LINGUAGENSEm 1984 surgiu o Clipper, linguagemde programação compatível com odBase III Plus, com desempenho de-zenas de vezes mais rápido que odBase original. Até meados da dé-cada de 90, o Clipper era o líder domercado de linguagens de desen-volvimento para micros. A partir daí,as linguagens visuais, criadas pararodar no ambiente Windows,começam a ganhar terreno.

Quando os bancos de dados rela-cionais estavam sen-do desenvolvidos, fo-ram criadas lingua-gens destinadas à suamanipulação. O de-partamento de pes-quisa da IBM desen-volveu a linguagemSQL (StructuredQuery Language) nos

anos 70. Somenteem 1986 o AmericanNational StandardsInstitute (ANSI) pu-blicou o SQL comoum padrão. A partirdaí, o SQL passou aser usado pela maio-ria das empresas.

Ao longo dos anos80, a linguagem SQLtorna-se praticamen-te universal. Por suavez, o DB2, da IBM, passou a ser o car-ro-chefe da empresa nesse segmen-to, que começa a experimentar ex-pressivo crescimento. Ao mesmo tem-po, as redes locais ganham espaçonas empresas, e o DB2 se mantém co-mo uma das fortes referências embancos de dados corporativos.

CHEGAM OS PCSCom a entrada dos PCs em cena, ascompanhias de banco de dados têmum crescimento notável. Novos no-mes dominam o cenário do software,como RIM, RBase 5000, Paradox,dBase, FoxBase e FoxPro. A transi-ção para a década de 90 deixa pou-cas empresas da geração anteriorcomo sobreviventes. O modelo clien-te-servidor torna-se a norma paraas futuras decisões de negócio, aomesmo tempo em que se verifica oestabelecimento das ferramentas deprodutividade pessoal, como Excele Access. É também um marco ini-cial para os protótipos dos bancosde dados orientados a objeto, ou

Object Database ManagementSystems (ODBMS).

O fenômeno da internet vem sacu-dir o ambiente de TI em meados dosanos 90. Começa-se a exigir de ma-neira frenética o acesso de compu-tadores remotos aos dados guarda-dos nos sistemas legados. Na outraponta, os bancos de dados se adap-tam para servir às demandas da web— o que significa acesso às informa-ções, de qualquer lugar, via browser.

No final dos anos 90, o intenso in-vestimento das empresas na inter-net abastece o mercado com cente-nas de ferramentas para conectaros bancos de dados à web. Crescemas ofertas de novos produtos e no-vas tecnologias. Com o passar dotempo, destacam-se duas áreas bá-sicas: de um lado, as soluções ba-seadas na plataforma Java, da Sun.Empresas como a própria Sun, alémde IBM e Oracle, têm bancos de da-dos ou ferramentas para desenvol-vimento nessa área. Do outro lado,estão as empresas que oferecem

FoxPro para DOS: gerenciador baseado em dBase

DB2, da IBM: referência em banco de dados corporativo

Wayne Ratliff:criador do Vulcan

08_14_BANCO_HISTORIA1 25/02/2006 21:26 Page 12

Page 12: Colecao InfoBanco de Dados

HISTÓRIA

14 < COLEÇÃO INFO

produtos fundamentados nas tec-nologias ASP e, mais recentemen-te, .Net, da Microsoft. No item es-pecífico dos gerenciadores de ban-cos de dados, os grandes nomes sãoIBM, Oracle e Microsoft. Com a ex-pansão da conectividade, os ban-cos de dados estendem as possibi-lidades de acesso até aos PDAs.

AOS TERABYTESMas as tendências apontam parasistemas de alto nível de armaze-namento (da ordem de terabytes)que exigem rapidez e confiabili-dade de processamento, manuseioe análise dos dados. Projetos gran-diosos, como o Genoma, apontampara esse tipo de demanda. Aomesmo tempo, bases de dadosgeológicos, meteorológicos e es-paciais requerem mais velocida-de e segurança. Também se tor-nam comuns as aplicações empre-sariais de data mining, data ware-house e data marts. Esses usos do

banco de dados exigem gerencia-dores capazes de dar respostas rá-pidas às empresas.

Nessa área, a Oracle se destacacomo o maior fornecedor de ban-cos de dados corporativos. Desde1985, o produto passou a tirar pro-veito da disseminação das redes lo-cais, dando suporte ao modelo clien-te-servidor. O Oracle 5, dessa épo-ca, suportava consultas distribuí-das. Em 1988, surgiu a versão 8, comsuporte ao desenvolvimento orien-tado a objeto e aplicações multimí-dia. Em 1999, sai a versão 8i — i deinternet. O número atual é 10g, sen-do o g indicativo da capacidade defuncionar num grid de servidores.O Oracle também foi o primeiro ban-co de dados comercial a ofereceruma versão para Linux.

Finalmente, deve-se prestaratenção ao crescimento das plata-formas de código aberto, notada-mente o Linux. Junto com ele, des-pontam bancos de dados como o

MySQL, utilizado emaplicações web. Es-sa mudança em di-reção ao software li-vre pode redefinir operfil do mercadode banco de dados,em especial na fai-xa das aplicaçõesmédias e pequenas,a curto prazo, masabarcando as gran-des aplicações, alongo prazo.

Oracle 10g: gerenciador de bancos de dados para clusters

08_14_BANCO_HISTORIA1 25/02/2006 21:50 Page 14

Page 13: Colecao InfoBanco de Dados

SABE O QUEÉ TUPLA?

ENTENDA OS CONCEITOS QUE FAZEM DO BANCO DE DADOSUM MUNDO À PARTE NO UNIVERSO DO SOFTWARE

POR CELSO HENRIQUE PODEROSO DE OLIVEIRA

CONCEITOS

COLEÇÃO INFO > 15

odo mundo que usa te-lefone possui uma agen-da. Nela, cada amigotem nome, endereço,

número da linha, data de aniversá-rio e e-mail, cada dado anotado numespaço especial. Quando precisa-mos ligar para algum contato, va-mos à letra inicial do nome e bus-camos o número do telefone. Essaagendinha quase banal expressa

bem o que é um banco de dados —um armazém de informações rele-vantes, organizadas de maneira coe-rente e lógica, que precisam ser re-cuperadas com freqüência.

No universo dos bits e bytes, obanco de dados envolve conceitosimportantes, que precisamos enten-der bem para torná-lo útil e eficien-te. É disso que trataremos aqui, co-meçando pelo próprio.

T

Sistema gerenciador: coleção de programas que mantêm as estruturas do banco

015_CONCEITOS 25/02/2006 21:31 Page 15

Page 14: Colecao InfoBanco de Dados

CONCEITOS

COLEÇÃO INFO > 17

CONCEITOS

16 < COLEÇÃO INFO

acesso, redundância e integridade, ocompartilhamento de dados e o me-canismo de cópias de segurança.

MODELAGEM DE DADOSProcesso pelo qual trabalham-se osdados de uma empresa ou sistemapara se obter estruturas de armaze-namento estáveis. O processo de aná-lise pode se dar por meio da criaçãodo Modelo de Entidade X Relaciona-mento ou pela Normalização de Da-dos. O objetivo da modelagem é fa-zer com que as estruturas possamevoluir no tempo, sem prejudicar odesenvolvimento de sistemas.

MODELO DE ENTIDADEX RELACIONAMENTO

Modelo que contém as entidades deum sistema e o relacionamento en-tre elas. Deve ser entendido comouma representação da realidade. Co-mo sempre é possível modificar arealidade de um sistema, deve serprevista a evolução do modelo.

ENTIDADEEntende-se como um grupo de coi-sas semelhantes. Essas coisas podemter uma existência física (pessoa, car-ro, imóvel), ser um documento (no-

ta fiscal, pedido de compra, ordemde serviço), um local (armazém, se-de, filial) ou qualquer outro objeto domundo real. Cada entidade deve pos-suir diversas instâncias do objeto querepresenta. Vamos exemplificar comos automóveis. A entidade é o gru-po carro. A instância é o objeto Hon-da Civic, Peugeot 206, VW Gol.

Quando se transpõe a entidade pa-ra um modelo físico, tem-se a tabe-la (no modelo relacional) ou a classe(no modelo orientado a objeto). Umaentidade é representada por um re-tângulo com o respectivo nome.

ATRIBUTOQualificador lógico de um objeto, ser-ve para descrever ou caracterizar oselementos de uma entidade. Cada atri-buto deve conter apenas uma carac-terística do objeto. Esse ponto é im-portante para não confundirmos atri-buto com entidade.

Um objeto deve ter algumas carac-terísticas específicas. Cada uma delasserá um atributo do objeto. O inver-so é também verdadeiro: um atribu-to não pode ter subdivisões. Se utili-zar o exemplo da entidade carro, po-demos ter atributos como nome, mon-tadora, modelo etc.

Quando se transpõe para o mode-lo físico, os atributos se transformamem colunas ou campos no modelo re-

lacional e em atributos ou proprieda-des no modelo orientado a objetos.Os atributos são colocados dentro doretângulo que representa a entidadee abaixo do nome da própria.

TUPLANada mais é do que o conjunto de ca-racterísticas do objeto que se quer re-presentar, a estrutura de atributos re-lacionados e interdependentes. A tu-pla seria a linha ou o registro de umatabela no modelo relacional e a ins-tância no modelo orientado a objetos.

TABELAEstrutura composta por linhas e co-lunas que serve para armazenar osdados em um banco de dados rela-cional. A linha indica uma ocorrên-cia do objeto do mundo real, e a co-luna serve para qualificar o objeto.Dessa forma, se imaginarmos umatabela PESSOA, ela teria em cada li-nha uma pessoa e em cada colunaas informações relevantes dessa pes-soa, como nome, peso, altura, datade nascimento, documento de iden-tificação, cor dos olhos, cor dos ca-

Interface DB2: administração gráfica

Modelo: entidade x relacionamento

Entidade: grupo de coisas semelhantes

Tabela: estrutura com linhas e colunas

BANCO DE DADOSDefini-lo como uma ou mais tabelasde dados relacionadas ou não é pos-sível. Mas podemos acrescentar à lis-ta de componentes os índices, visões(views), procedimentos (procedures),funções, gatilhos (triggers) etc. Tudodepende do tipo de banco de dadose do que se quer fazer com ele. Par-tindo-se desse princípio, podem serconsiderados banco de dados os ar-quivos DBF que foram muito popu-lares na década de 80 com a lingua-gem Clipper, um arquivo MDB do MSAccess ou mesmo arquivos DAT, pro-prietários de linguagens de terceirageração como Pascal e Cobol.

SISTEMA GERENCIADORÉ uma coleção de programas res-ponsáveis pela manutenção das es-truturas e objetos de um banco dedados. Há diversos produtos comer-ciais e de uso livre. Entre os pagosdestacam-se Oracle, IBM DB2 e MSSQL Server. Entre os livres, MySQL,Firebird e PostgreSQL.

Os gerenciadores têm como carac-terísticas principais os controles de

015_CONCEITOS 25/02/2006 21:32 Page 16

Page 15: Colecao InfoBanco de Dados

CONCEITOS

COLEÇÃO INFO > 17

CONCEITOS

16 < COLEÇÃO INFO

acesso, redundância e integridade, ocompartilhamento de dados e o me-canismo de cópias de segurança.

MODELAGEM DE DADOSProcesso pelo qual trabalham-se osdados de uma empresa ou sistemapara se obter estruturas de armaze-namento estáveis. O processo de aná-lise pode se dar por meio da criaçãodo Modelo de Entidade X Relaciona-mento ou pela Normalização de Da-dos. O objetivo da modelagem é fa-zer com que as estruturas possamevoluir no tempo, sem prejudicar odesenvolvimento de sistemas.

MODELO DE ENTIDADEX RELACIONAMENTO

Modelo que contém as entidades deum sistema e o relacionamento en-tre elas. Deve ser entendido comouma representação da realidade. Co-mo sempre é possível modificar arealidade de um sistema, deve serprevista a evolução do modelo.

ENTIDADEEntende-se como um grupo de coi-sas semelhantes. Essas coisas podemter uma existência física (pessoa, car-ro, imóvel), ser um documento (no-

ta fiscal, pedido de compra, ordemde serviço), um local (armazém, se-de, filial) ou qualquer outro objeto domundo real. Cada entidade deve pos-suir diversas instâncias do objeto querepresenta. Vamos exemplificar comos automóveis. A entidade é o gru-po carro. A instância é o objeto Hon-da Civic, Peugeot 206, VW Gol.

Quando se transpõe a entidade pa-ra um modelo físico, tem-se a tabe-la (no modelo relacional) ou a classe(no modelo orientado a objeto). Umaentidade é representada por um re-tângulo com o respectivo nome.

ATRIBUTOQualificador lógico de um objeto, ser-ve para descrever ou caracterizar oselementos de uma entidade. Cada atri-buto deve conter apenas uma carac-terística do objeto. Esse ponto é im-portante para não confundirmos atri-buto com entidade.

Um objeto deve ter algumas carac-terísticas específicas. Cada uma delasserá um atributo do objeto. O inver-so é também verdadeiro: um atribu-to não pode ter subdivisões. Se utili-zar o exemplo da entidade carro, po-demos ter atributos como nome, mon-tadora, modelo etc.

Quando se transpõe para o mode-lo físico, os atributos se transformamem colunas ou campos no modelo re-

lacional e em atributos ou proprieda-des no modelo orientado a objetos.Os atributos são colocados dentro doretângulo que representa a entidadee abaixo do nome da própria.

TUPLANada mais é do que o conjunto de ca-racterísticas do objeto que se quer re-presentar, a estrutura de atributos re-lacionados e interdependentes. A tu-pla seria a linha ou o registro de umatabela no modelo relacional e a ins-tância no modelo orientado a objetos.

TABELAEstrutura composta por linhas e co-lunas que serve para armazenar osdados em um banco de dados rela-cional. A linha indica uma ocorrên-cia do objeto do mundo real, e a co-luna serve para qualificar o objeto.Dessa forma, se imaginarmos umatabela PESSOA, ela teria em cada li-nha uma pessoa e em cada colunaas informações relevantes dessa pes-soa, como nome, peso, altura, datade nascimento, documento de iden-tificação, cor dos olhos, cor dos ca-

Interface DB2: administração gráfica

Modelo: entidade x relacionamento

Entidade: grupo de coisas semelhantes

Tabela: estrutura com linhas e colunas

BANCO DE DADOSDefini-lo como uma ou mais tabelasde dados relacionadas ou não é pos-sível. Mas podemos acrescentar à lis-ta de componentes os índices, visões(views), procedimentos (procedures),funções, gatilhos (triggers) etc. Tudodepende do tipo de banco de dadose do que se quer fazer com ele. Par-tindo-se desse princípio, podem serconsiderados banco de dados os ar-quivos DBF que foram muito popu-lares na década de 80 com a lingua-gem Clipper, um arquivo MDB do MSAccess ou mesmo arquivos DAT, pro-prietários de linguagens de terceirageração como Pascal e Cobol.

SISTEMA GERENCIADORÉ uma coleção de programas res-ponsáveis pela manutenção das es-truturas e objetos de um banco dedados. Há diversos produtos comer-ciais e de uso livre. Entre os pagosdestacam-se Oracle, IBM DB2 e MSSQL Server. Entre os livres, MySQL,Firebird e PostgreSQL.

Os gerenciadores têm como carac-terísticas principais os controles de

015_CONCEITOS 25/02/2006 21:32 Page 16

Page 16: Colecao InfoBanco de Dados

CONCEITOS

18 < COLEÇÃO INFO

cal, por exemplo, o número da no-ta não se repete e é obrigatório. Porisso poderá ser candidato para a co-luna chave. Uma chave geralmenteestá destacada por um símbolo (as-terisco ou uma pequena chave) aolado do atributo correspondente.

Quando se analisa o modelo físi-co, uma chave pode ser classifica-da como:■ PRIMÁRIA: qualificador único eobrigatório. Deve haver uma únicachave primária em cada tabela.■ ESTRANGEIRA: serve para rela-cionar duas tabelas. Vamos voltarao exemplo da Nota Fiscal. Cada no-ta está relacionada a um cliente. No-ta Fiscal é uma tabela e cliente ou-tra. Cada tabela tem a sua própriachave primária. Para relacionar ocliente com a nota fiscal, deixamosuma referência à coluna chave docliente na tabela nota fiscal (chaveestrangeira).■ SECUNDÁRIA classifica os dadosnas tabelas. Geralmente, os índicestêm o objetivo de agilizar o proces-so de busca.

RELACIONAMENTOSe uma entidade é um conjunto decoisas semelhantes, é natural queessas coisas guardem algum tipode relacionamento que seja impor-tante recuperar em algum momen-to. Quando dizemos que uma notafiscal é emitida contra um cliente,podemos entender que estamos tra-tando de duas entidades diferen-tes: Nota Fiscal e Cliente. Há, entre

Chaves: qualificadores das entidades

belos etc. A idéia central é que as ca-racterísticas do objeto permitam iden-tificar uma única pessoa em cada li-nha da tabela.

CHAVEUm ou mais atributos que permi-tem identificar uma única ocorrên-cia na entidade. É um qualificadorúnico. No modelo físico, a chave éo campo ou a coluna que contémum valor exclusivo e com preenchi-mento obrigatório. Assim, não po-derá haver o mesmo conteúdo dacoluna em duas linhas diferentes.

Imagine uma chave para PESSOA.Nome seria uma boa coluna parachave? Naturalmente não, pois hápessoas que têm nomes iguais. CPFseria uma boa chave? Em alguns ca-sos sim, pois embora não tenha re-petição e seja um documento obri-gatório para os adultos, não é paraos bebês. O que normalmente acon-tece em casos como esse é criar-mos uma coluna.

Em alguns outros exemplos, a cha-ve seria localizada com mais facili-dade. Se analisarmos uma Nota Fis-

015_CONCEITOS 25/02/2006 21:33 Page 18

Page 17: Colecao InfoBanco de Dados

CONCEITOS

COLEÇÃO INFO > 19

essas duas entidades, uma relaçãode interdependência, ou seja, parase emitir uma Nota Fiscal, é neces-sário que haja um Cliente. A essainterdependência damos o nomede relacionamento. Na prática, sem-pre que uma ou mais tuplas de umaentidade guardarem alguma rela-ção com uma ou mais tuplas de ou-tra entidade teremos um relaciona-mento entre as entidades.

Um relacionamento pode ser clas-sificado de duas formas: opcionali-dade e cardinalidade.

A opcionalidade indica se é obri-gatória ou não a ocorrência ou in-dicação de uma tupla de uma en-tidade na outra. Dessa forma, po-demos dizer que é obrigatória apresença de um Cliente em umaNota Fiscal, mas é opcional a exis-tência de uma Transportadora, porexemplo. De outro lado, o Clientepode ou não estar vinculado a umaNota Fiscal. O mesmo acontece coma Transportadora.

A cardinalidade indica quantasocorrências de uma tupla se rela-cionam com a outra tupla. Sabemosque cada Cliente pode estar vincu-lado a zero, uma ou muitas NotasFiscais, enquanto cada Nota Fiscalestá relacionada a um único Clien-te. Como você pode notar, a cardi-nalidade e a opcionalidade são sem-pre expressas de um e de outro la-do do relacionamento.

A cardinalidade pode ser:■ UM PARA UM (1:1): quando cadatupla de uma entidade está relacio-

nada apenas a zero ou a uma tuplada outra entidade (lembre-se que ze-ro ou um é a opcionalidade). Esse ti-po de relacionamento não é o maiscomum, pois sempre se deve ques-tionar a vantagem de manter os da-dos separados em duas entidades.Note que sempre há um custo vincu-lado à criação e manutenção de umatabela. Se o custo compensar, deve-se manter separado. Do contrário, émelhor unir as duas entidades.■ UM PARA MUITOS (1:M): quan-do cada tupla de uma entidade es-tá relacionada a zero, uma ou maistuplas da outra entidade (não es-queça que o zero ou um é a opcio-nalidade). Este é o relacionamentomais comum.■ MUITOS PARA MUITOS (M:M):quando há ocorrências de múltiplosrelacionamentos entre as tuplas deduas entidades. Esse relacionamen-to, apesar de existir, não é passívelde implementação em um banco de

Relacionamento: muitos para muitos(acima); um para muitos (abaixo)

015_CONCEITOS 25/02/2006 21:34 Page 19

Page 18: Colecao InfoBanco de Dados

CONCEITOS

COLEÇÃO INFO > 21

CONCEITOS

20 < COLEÇÃO INFO

dados relacional. Sempre que seidentificar essa situação, deve-secriar uma entidade entre as duasentidades, classificadas como fun-damentais. Essa nova entidade, clas-sificada como entidade associativa,deve conter, pelo menos, as chavesdas duas entidades fundamentais.

Uma das formas de representaro relacionamento é o “pé-de-gali-nha” para indicar a cardinalidademuitos, um pequeno traço para in-dicar a cardinalidade um, o trace-jado para indicar opcionalidade e osegmento de reta contínuo para in-dicar obrigatoriedade. Uma outraforma é indicar a opcionalidade comum pequeno círculo antes do umou muitos da cardinalidade. Lem-bre-se: são apenas convenções. Oimportante é que o relacionamen-to esteja claro e esteja representa-do no modelo de dados.

INTEGRIDADE REFERENCIALMecanismo utilizado pelos gerencia-dores de bancos de dados para man-ter a consistência das informaçõesarmazenadas. Suponha que estamoscadastrando uma Nota Fiscal e indi-camos um código de cliente (que re-laciona com a tabela Cliente) inexis-tente. Outra situação é tentar excluirum Cliente que tenha diversas No-tas Fiscais emitidas. Como iríamosrecuperar a informação, caso o ban-co de dados permitisse a exclusãodo Cliente? Simplesmente perdería-mos o elo entre as tabelas, e a infor-mação armazenada estaria inválida.

A principal forma de garantir aintegridade entre tabelas se dá pormeio do vínculo entre a chave pri-mária de uma tabela com a chaveestrangeira da outra tabela. As co-lunas das duas tabelas armazenamas informações que permitem es-tabelecer o relacionamento entreas linhas das tabelas. Assim, o có-digo de cliente 1 da tabela Clien-te, cujo nome é João, será arma-zenado na coluna código do clien-te da tabela Nota Fiscal sempreque se quiser indicar que o Joãocomprou determinados produtos.Não será possível excluir João (có-digo do cliente 1) enquanto hou-ver Notas Fiscais emitidas contraesse cliente.

RESTRIÇÕESUtilizam-se as restrições (constraints)para melhorar a qualidade da infor-mação guardada nas tabelas do ban-co. As restrições mais comuns sãoa chave primária e a estrangeira.Mas há outras restrições bastanteimportantes:■ NULOS: uma coluna que não te-nha valor inicializado é considera-da uma coluna nula. Nem sempreé adequado permitir que uma co-luna não tenha valores atribuídos.Imagine uma linha na tabela Clien-te cujo nome seja nulo. Como po-demos identificar o cliente?■ EXCLUSIVOS: suponha que se te-nha criado uma tabela Cliente cujocódigo do cliente não seja um do-cumento, como CPF ou RG. Mesmo

não sendo uma coluna chave, es-ses valores não podem ser duplica-dos em clientes (linhas) diferentes.Para isso definimos que sejam ad-mitidos somente valores exclusivos.O que a difere de uma chave pri-mária é que esta última não podeassumir valores nulos.■ PADRÃO: É muito comum que,quando um valor não é informado,o sistema assuma um valor-padrãopara a coluna (como data de emis-são de uma Nota Fiscal ou quanti-dade de um determinado produtoem uma Nota Fiscal).■ DOMÍNIO: as vezes é necessáriodeterminar um intervalo de valorespossíveis para uma determinada co-luna. É o caso do sexo, por exem-

Restrições: melhoram a qualidade da informação armazenada nas tabelas do banco

plo, que pode assumir apenas osvalores Masculino ou Feminino.

TRANSAÇÃOOcorre sempre que houver uma mo-dificação no conteúdo das tabelasde um banco de dados. Dessa for-ma, uma inclusão, alteração ou ex-clusão geram uma transação. Emgerenciadores de banco de dados,o controle sobre o momento da efe-tiva gravação (COMMIT) dos dadosou abandono da operação (ROLL-BACK) é realizado pelo usuário dobanco de dados ou pelo sistema. Atransação representa um conjuntode operações que são realizados nabase de dados para produzir um re-sultado final.

015_CONCEITOS 25/02/2006 21:43 Page 20

Page 19: Colecao InfoBanco de Dados

CONCEITOS

COLEÇÃO INFO > 21

CONCEITOS

20 < COLEÇÃO INFO

dados relacional. Sempre que seidentificar essa situação, deve-secriar uma entidade entre as duasentidades, classificadas como fun-damentais. Essa nova entidade, clas-sificada como entidade associativa,deve conter, pelo menos, as chavesdas duas entidades fundamentais.

Uma das formas de representaro relacionamento é o “pé-de-gali-nha” para indicar a cardinalidademuitos, um pequeno traço para in-dicar a cardinalidade um, o trace-jado para indicar opcionalidade e osegmento de reta contínuo para in-dicar obrigatoriedade. Uma outraforma é indicar a opcionalidade comum pequeno círculo antes do umou muitos da cardinalidade. Lem-bre-se: são apenas convenções. Oimportante é que o relacionamen-to esteja claro e esteja representa-do no modelo de dados.

INTEGRIDADE REFERENCIALMecanismo utilizado pelos gerencia-dores de bancos de dados para man-ter a consistência das informaçõesarmazenadas. Suponha que estamoscadastrando uma Nota Fiscal e indi-camos um código de cliente (que re-laciona com a tabela Cliente) inexis-tente. Outra situação é tentar excluirum Cliente que tenha diversas No-tas Fiscais emitidas. Como iríamosrecuperar a informação, caso o ban-co de dados permitisse a exclusãodo Cliente? Simplesmente perdería-mos o elo entre as tabelas, e a infor-mação armazenada estaria inválida.

A principal forma de garantir aintegridade entre tabelas se dá pormeio do vínculo entre a chave pri-mária de uma tabela com a chaveestrangeira da outra tabela. As co-lunas das duas tabelas armazenamas informações que permitem es-tabelecer o relacionamento entreas linhas das tabelas. Assim, o có-digo de cliente 1 da tabela Clien-te, cujo nome é João, será arma-zenado na coluna código do clien-te da tabela Nota Fiscal sempreque se quiser indicar que o Joãocomprou determinados produtos.Não será possível excluir João (có-digo do cliente 1) enquanto hou-ver Notas Fiscais emitidas contraesse cliente.

RESTRIÇÕESUtilizam-se as restrições (constraints)para melhorar a qualidade da infor-mação guardada nas tabelas do ban-co. As restrições mais comuns sãoa chave primária e a estrangeira.Mas há outras restrições bastanteimportantes:■ NULOS: uma coluna que não te-nha valor inicializado é considera-da uma coluna nula. Nem sempreé adequado permitir que uma co-luna não tenha valores atribuídos.Imagine uma linha na tabela Clien-te cujo nome seja nulo. Como po-demos identificar o cliente?■ EXCLUSIVOS: suponha que se te-nha criado uma tabela Cliente cujocódigo do cliente não seja um do-cumento, como CPF ou RG. Mesmo

não sendo uma coluna chave, es-ses valores não podem ser duplica-dos em clientes (linhas) diferentes.Para isso definimos que sejam ad-mitidos somente valores exclusivos.O que a difere de uma chave pri-mária é que esta última não podeassumir valores nulos.■ PADRÃO: É muito comum que,quando um valor não é informado,o sistema assuma um valor-padrãopara a coluna (como data de emis-são de uma Nota Fiscal ou quanti-dade de um determinado produtoem uma Nota Fiscal).■ DOMÍNIO: as vezes é necessáriodeterminar um intervalo de valorespossíveis para uma determinada co-luna. É o caso do sexo, por exem-

Restrições: melhoram a qualidade da informação armazenada nas tabelas do banco

plo, que pode assumir apenas osvalores Masculino ou Feminino.

TRANSAÇÃOOcorre sempre que houver uma mo-dificação no conteúdo das tabelasde um banco de dados. Dessa for-ma, uma inclusão, alteração ou ex-clusão geram uma transação. Emgerenciadores de banco de dados,o controle sobre o momento da efe-tiva gravação (COMMIT) dos dadosou abandono da operação (ROLL-BACK) é realizado pelo usuário dobanco de dados ou pelo sistema. Atransação representa um conjuntode operações que são realizados nabase de dados para produzir um re-sultado final.

015_CONCEITOS 25/02/2006 21:43 Page 20

Page 20: Colecao InfoBanco de Dados

CONCEITOS

COLEÇÃO INFO > 23

CONCEITOS

22 < COLEÇÃO INFO

NORMALIZAÇÃO DE DADOSProcesso pelo qual são aplicadasregras a um conjunto de dados e,no final, obtém-se uma base quaselivre de redundâncias. Ao atingir es-se objetivo, é possível recuperar odado em um único lugar (tabela).Isso fará, com certeza, que haja umaumento na quantidade de tabelascriadas no sistema, mas ajudará aaumentar a confiabilidade dos da-dos armazenados. Ao final do pro-cesso de normalização, deve-se va-lidá-lo com o Modelo de Entidadex Relacionamento.

Esse processo pode ser feito em atéseis fases, mas, geralmente, ao se che-gar na terceira etapa (conhecida co-mo 3ª- Forma Normal), já é possívelobter um modelo de dados estável.

Antes de iniciar o processo de nor-malização, é importante identificar ogrupo de dados que se quer analisar.Esse grupo pode estar representadopor um formulário, um relatório ouaté mesmo uma tela do sistema. Po-de também ser resultado de um le-vantamento sistemático das neces-sidades de informação dos usuários.Com o grupo de dados definido, de-ve-se listar todos os dados disponí-veis, sem desprezar nenhum. Em se-guida, deve-se dar um nome a essegrupo de dados. Após o nome, esta-belece-se um identificador único (cha-ve). Cumprida essa etapa, deve-seproceder ao processo de normaliza-ção. Para explicar melhor, vamos ado-tar um formulário de Nota Fiscal co-mo exemplo.

As três fases da Normalização deDados são:■ 1ª- FORMA NORMAL (1FN): elimi-nar grupos de dados repetitivos daestrutura. Para isso, deve-se locali-zar os atributos multivalorados, osque têm mais de uma ocorrência noformulário. No caso da Nota Fiscal,temos produto, quantidade, valorunitário e total como grupo de da-dos multivalorado. Deve-se separaresse grupo em uma nova entidade,dar um nome ao grupo, levar a cha-ve da Nota Fiscal (para manter a re-lação entre as entidades) e estabe-lecer uma chave para o novo gru-po. Essa chave pode ser compostapela chave da Nota Fiscal e por maisde um atributo existente. É possível,quando não se localizar um atribu-to adequado, criá-la.■ 2ª- FORMA NORMAL (2FN): quan-do somente houver grupos de da-dos na 1ª- Forma Normal (e jamaisantes disso), deve-se localizar da-dos que não dependam única e ex-clusivamente da chave da entida-de. Veja: o Cliente está relacionadoà Nota Fiscal, mas não depende de-la. O Cliente existe, mesmo que nãoexista a Nota Fiscal. Por esse moti-vo dizemos que o Cliente não de-pende da Nota Fiscal e, por isso, de-ve ter os dados separados em umanova entidade. Ao se identificar o(s)grupo(s) independente(s), deve-sesepará-los em uma nova entidade(uma para cada grupo independen-te). Feito isso, dá-se um nome à en-tidade e estabelece-se uma chave

Procedimentos armazenados: códigos que ficam armazenados para usar depois

para o novo grupo. Caso não hajaum bom atributo para ser a chave,deve-se criá-lo. É isso que foi feitocom o Cliente e Produto.■ 3ª- FORMA NORMAL (3FN): depoisque os grupos de dados estiverem na2ª- Forma Normal (e jamais antes dis-so), localizam-se atributos com de-pendência transitiva. Calma! Não étão complicado. Dependência transi-tiva ocorre quando um dado pode serobtido por meio de outro, exceto achave. Isso porque os atributos de-pendem da chave. Até que você sehabitue, tente localizar campos quepossam ser substituídos por fórmu-las matemáticas. No exemplo, temoso atributo Valor Total no Item da No-ta e o Valor Total da Nota Fiscal. Es-ses atributos devem ser excluídos,pois podem ser obtidos por meio deum cálculo realizado com outros atri-butos. Com os dados normalizados,é possível criar as tabelas.

PROCEDIMENTOS ARMAZENADOSSão pequenos códigos executadosem um banco de dados que ficamguardados para posterior utiliza-ção. Podem ser stored procedures(procedimentos armazenados),stored functions (funções armaze-nadas), trigger (gatilho) e package(pacote). Um procedimento é umconjunto de comandos dentro deuma estrutura lógica, com o obje-tivo de realizar uma ação no ban-co de dados. A diferença entre pro-cedimento e função é que esta úl-tima retorna valor.

Gatilhos são procedimentos dispa-rados por eventos do banco de da-dos (inclusão, alteração ou exclusão).Por fim, um pacote é um conjunto defunções, procedimentos e outras es-truturas que são armazenados emconjunto para facilitar a manutençãoe a segurança da informação.

015_CONCEITOS 25/02/2006 21:54 Page 22

Page 21: Colecao InfoBanco de Dados

CONCEITOS

COLEÇÃO INFO > 23

CONCEITOS

22 < COLEÇÃO INFO

NORMALIZAÇÃO DE DADOSProcesso pelo qual são aplicadasregras a um conjunto de dados e,no final, obtém-se uma base quaselivre de redundâncias. Ao atingir es-se objetivo, é possível recuperar odado em um único lugar (tabela).Isso fará, com certeza, que haja umaumento na quantidade de tabelascriadas no sistema, mas ajudará aaumentar a confiabilidade dos da-dos armazenados. Ao final do pro-cesso de normalização, deve-se va-lidá-lo com o Modelo de Entidadex Relacionamento.

Esse processo pode ser feito em atéseis fases, mas, geralmente, ao se che-gar na terceira etapa (conhecida co-mo 3ª- Forma Normal), já é possívelobter um modelo de dados estável.

Antes de iniciar o processo de nor-malização, é importante identificar ogrupo de dados que se quer analisar.Esse grupo pode estar representadopor um formulário, um relatório ouaté mesmo uma tela do sistema. Po-de também ser resultado de um le-vantamento sistemático das neces-sidades de informação dos usuários.Com o grupo de dados definido, de-ve-se listar todos os dados disponí-veis, sem desprezar nenhum. Em se-guida, deve-se dar um nome a essegrupo de dados. Após o nome, esta-belece-se um identificador único (cha-ve). Cumprida essa etapa, deve-seproceder ao processo de normaliza-ção. Para explicar melhor, vamos ado-tar um formulário de Nota Fiscal co-mo exemplo.

As três fases da Normalização deDados são:■ 1ª- FORMA NORMAL (1FN): elimi-nar grupos de dados repetitivos daestrutura. Para isso, deve-se locali-zar os atributos multivalorados, osque têm mais de uma ocorrência noformulário. No caso da Nota Fiscal,temos produto, quantidade, valorunitário e total como grupo de da-dos multivalorado. Deve-se separaresse grupo em uma nova entidade,dar um nome ao grupo, levar a cha-ve da Nota Fiscal (para manter a re-lação entre as entidades) e estabe-lecer uma chave para o novo gru-po. Essa chave pode ser compostapela chave da Nota Fiscal e por maisde um atributo existente. É possível,quando não se localizar um atribu-to adequado, criá-la.■ 2ª- FORMA NORMAL (2FN): quan-do somente houver grupos de da-dos na 1ª- Forma Normal (e jamaisantes disso), deve-se localizar da-dos que não dependam única e ex-clusivamente da chave da entida-de. Veja: o Cliente está relacionadoà Nota Fiscal, mas não depende de-la. O Cliente existe, mesmo que nãoexista a Nota Fiscal. Por esse moti-vo dizemos que o Cliente não de-pende da Nota Fiscal e, por isso, de-ve ter os dados separados em umanova entidade. Ao se identificar o(s)grupo(s) independente(s), deve-sesepará-los em uma nova entidade(uma para cada grupo independen-te). Feito isso, dá-se um nome à en-tidade e estabelece-se uma chave

Procedimentos armazenados: códigos que ficam armazenados para usar depois

para o novo grupo. Caso não hajaum bom atributo para ser a chave,deve-se criá-lo. É isso que foi feitocom o Cliente e Produto.■ 3ª- FORMA NORMAL (3FN): depoisque os grupos de dados estiverem na2ª- Forma Normal (e jamais antes dis-so), localizam-se atributos com de-pendência transitiva. Calma! Não étão complicado. Dependência transi-tiva ocorre quando um dado pode serobtido por meio de outro, exceto achave. Isso porque os atributos de-pendem da chave. Até que você sehabitue, tente localizar campos quepossam ser substituídos por fórmu-las matemáticas. No exemplo, temoso atributo Valor Total no Item da No-ta e o Valor Total da Nota Fiscal. Es-ses atributos devem ser excluídos,pois podem ser obtidos por meio deum cálculo realizado com outros atri-butos. Com os dados normalizados,é possível criar as tabelas.

PROCEDIMENTOS ARMAZENADOSSão pequenos códigos executadosem um banco de dados que ficamguardados para posterior utiliza-ção. Podem ser stored procedures(procedimentos armazenados),stored functions (funções armaze-nadas), trigger (gatilho) e package(pacote). Um procedimento é umconjunto de comandos dentro deuma estrutura lógica, com o obje-tivo de realizar uma ação no ban-co de dados. A diferença entre pro-cedimento e função é que esta úl-tima retorna valor.

Gatilhos são procedimentos dispa-rados por eventos do banco de da-dos (inclusão, alteração ou exclusão).Por fim, um pacote é um conjunto defunções, procedimentos e outras es-truturas que são armazenados emconjunto para facilitar a manutençãoe a segurança da informação.

015_CONCEITOS 25/02/2006 21:54 Page 22

Page 22: Colecao InfoBanco de Dados

CRIAÇÃO

COLEÇÃO INFO > 25

PLANEJE BEM OSEU BANCO

SIGA O ROTEIRO PARA CRIAR UM BANCO DE DADOS QUEACOMPANHE AS TRANSFORMAÇÕES DA EMPRESA

POR CELSO HENRIQUE PODEROSO DE OLIVEIRA

CRIAÇÃO

24 < COLEÇÃO INFO

criação de um banco dedados é um processoque envolve uma sériede competências. Hou-

ve tempo em que esse processo es-tava reduzido a identificar um oumais objetos, escolher uma formade armazenamento, algumas carac-terísticas desses objetos e pronto.Geralmente, a própria estrutura dobanco de dados era vinculada à lin-guagem de programação.

Com o passar do tempo, a tecno-logia evoluiu e foi separada das lin-guagens de programação. Ambien-tes completos de administração fo-ram desenvolvidos e sua utilizaçãocontribuiu para disseminar as in-formações de maneira adequada econsistente.

Atualmente, os produtos estãomuito mais complexos e permitemao profissional realizar um trabalhoque pode contribuir para a melhorutilização da informação. De simpleslocal de armazenamento, o banco dedados evoluiu para um verdadeirorepositório de informações das em-presas. É o ambiente adequado pa-ra armazenar e recuperar dados ope-

racionais, além de dar suporte à to-mada de decisão por parte da mé-dia e alta gerência das corporações.Não se consegue atingir esse obje-tivo sem que se observem algumasregras. Por isso, trataremos aqui daestratégia para a criação de umbanco de dados.

PLANEJAMENTO E ESCOLHAPlanejar e escolher o melhor bancode dados é uma tarefa extremamen-te importante no processo de criação.A escolha certa evita frustrações nasoperações do dia-a-dia e na evoluçãoque o produto deve ter para acom-panhar o crescimento da empresa.

Planejar é saber onde se quer che-gar e estabelecer os meios adequa-dos para estar lá. É necessário olharpara frente e analisar como vocêquer que as coisas estejam no futu-ro. É antever situações que podemdefinir o sucesso ou não do seu em-preendimento. Portanto, antes deescolher o produto, pense onde vo-cê quer chegar. Enxergue o bancode dados como um meio para atin-gir sua meta.

A

Com isso, dependendo do caso, sea sua empresa desenvolve sistemas,a decisão poderá ser totalmente di-ferente de uma construtora, porexemplo. Baseie-se em aspectos téc-nicos e mercadológicos para definiro produto com o qual você irá con-

viver durante um bom tempo (tenhaisso em mente: não se troca de ban-co de dados senão com alguma di-ficuldade). Veja na tabela abaixo al-gumas questões que podem ajudarna escolha do produto ideal para assuas necessidades.

GUIA PARA A ESCOLHA DO GERENCIADOR

>Há uma empresa ou comunidade responsável pelo produto?

> Como está a saúde financeira dessa empresa? Como é aparticipação dos membros da comunidade?

>Qual o compromisso tecnológico da empresa? Houve evoluçãonos últimos anos? (um ano de atraso em informática pode ser fatal)

>Qual a participação de mercado do produto? (produtos com pequena participação podem sumir ou ser absorvidos por outras empresas)

>Quanto tempo de vida tem o produto?

>Qual tipo de empresa o utiliza?

>Quando foi lançada a última versão? Como o fabricante resolve problemas de segurança (atualizações e correções)?

>O produto possui as características mínimas de um sistema gerenciador de banco de dados (controle de transações, integridade referencial, programação, backup e recuperação, segurança de acesso, compatibilidade)?

> Como é o ambiente de administração do banco de dados? Há possibilidade de administração remota?

>Você vai precisar de um administrador de banco de dados (DBA)o tempo todo ou esse trabalho poderá ser feito remotamente?

>Há profissionais qualificados no mercado para administrar o banco? Quanto custa a mão-de-obra?

>Há produtos (ERP, CRM, BI etc.) adequados para a sua empresa que utilizam o banco de dados?

>Qual o volume médio de transações que você vai realizar e como o produto se comporta com isso?

024_CRIACAO 25/02/2006 21:56 Page 24

Page 23: Colecao InfoBanco de Dados

CRIAÇÃO

COLEÇÃO INFO > 25

PLANEJE BEM OSEU BANCO

SIGA O ROTEIRO PARA CRIAR UM BANCO DE DADOS QUEACOMPANHE AS TRANSFORMAÇÕES DA EMPRESA

POR CELSO HENRIQUE PODEROSO DE OLIVEIRA

CRIAÇÃO

24 < COLEÇÃO INFO

criação de um banco dedados é um processoque envolve uma sériede competências. Hou-

ve tempo em que esse processo es-tava reduzido a identificar um oumais objetos, escolher uma formade armazenamento, algumas carac-terísticas desses objetos e pronto.Geralmente, a própria estrutura dobanco de dados era vinculada à lin-guagem de programação.

Com o passar do tempo, a tecno-logia evoluiu e foi separada das lin-guagens de programação. Ambien-tes completos de administração fo-ram desenvolvidos e sua utilizaçãocontribuiu para disseminar as in-formações de maneira adequada econsistente.

Atualmente, os produtos estãomuito mais complexos e permitemao profissional realizar um trabalhoque pode contribuir para a melhorutilização da informação. De simpleslocal de armazenamento, o banco dedados evoluiu para um verdadeirorepositório de informações das em-presas. É o ambiente adequado pa-ra armazenar e recuperar dados ope-

racionais, além de dar suporte à to-mada de decisão por parte da mé-dia e alta gerência das corporações.Não se consegue atingir esse obje-tivo sem que se observem algumasregras. Por isso, trataremos aqui daestratégia para a criação de umbanco de dados.

PLANEJAMENTO E ESCOLHAPlanejar e escolher o melhor bancode dados é uma tarefa extremamen-te importante no processo de criação.A escolha certa evita frustrações nasoperações do dia-a-dia e na evoluçãoque o produto deve ter para acom-panhar o crescimento da empresa.

Planejar é saber onde se quer che-gar e estabelecer os meios adequa-dos para estar lá. É necessário olharpara frente e analisar como vocêquer que as coisas estejam no futu-ro. É antever situações que podemdefinir o sucesso ou não do seu em-preendimento. Portanto, antes deescolher o produto, pense onde vo-cê quer chegar. Enxergue o bancode dados como um meio para atin-gir sua meta.

A

Com isso, dependendo do caso, sea sua empresa desenvolve sistemas,a decisão poderá ser totalmente di-ferente de uma construtora, porexemplo. Baseie-se em aspectos téc-nicos e mercadológicos para definiro produto com o qual você irá con-

viver durante um bom tempo (tenhaisso em mente: não se troca de ban-co de dados senão com alguma di-ficuldade). Veja na tabela abaixo al-gumas questões que podem ajudarna escolha do produto ideal para assuas necessidades.

GUIA PARA A ESCOLHA DO GERENCIADOR

>Há uma empresa ou comunidade responsável pelo produto?

> Como está a saúde financeira dessa empresa? Como é aparticipação dos membros da comunidade?

>Qual o compromisso tecnológico da empresa? Houve evoluçãonos últimos anos? (um ano de atraso em informática pode ser fatal)

>Qual a participação de mercado do produto? (produtos com pequena participação podem sumir ou ser absorvidos por outras empresas)

>Quanto tempo de vida tem o produto?

>Qual tipo de empresa o utiliza?

>Quando foi lançada a última versão? Como o fabricante resolve problemas de segurança (atualizações e correções)?

>O produto possui as características mínimas de um sistema gerenciador de banco de dados (controle de transações, integridade referencial, programação, backup e recuperação, segurança de acesso, compatibilidade)?

> Como é o ambiente de administração do banco de dados? Há possibilidade de administração remota?

>Você vai precisar de um administrador de banco de dados (DBA)o tempo todo ou esse trabalho poderá ser feito remotamente?

>Há profissionais qualificados no mercado para administrar o banco? Quanto custa a mão-de-obra?

>Há produtos (ERP, CRM, BI etc.) adequados para a sua empresa que utilizam o banco de dados?

>Qual o volume médio de transações que você vai realizar e como o produto se comporta com isso?

024_CRIACAO 25/02/2006 21:56 Page 24

Page 24: Colecao InfoBanco de Dados

CRIAÇÃO

COLEÇÃO INFO > 27

CRIAÇÃO

26 < COLEÇÃO INFO

Agora você precisa saber quaissão as informações necessárias pa-ra sua empresa. Isso poderá lheajudar a diminuir a lista.

PROJETO LÓGICOEsta parte do processo deve aconte-cer em paralelo à escolha do siste-ma gerenciador de banco de dados.Optar por um produto sem ter noçãodas necessidades de informação daempresa é como dar um tiro no pé.

A maneira clássica de fazer isso en-volve todos os conceitos de engenha-ria de software para levantamento derequisitos. Quando se pensa em infor-mação, qualquer documento, tela desistema ou relatório é útil para iden-tificar o que é necessário armazenarno banco de dados. Muitas vezes osusuários da informação esquecem al-guns detalhes na fase de levantamen-to, por isso é importante recolher omáximo de documentos possíveis.

Na maior parte dos casos, ter umaferramenta de auxílio para o analis-ta criar e modelar a estrutura do ban-co de dados é desejável. Essas ferra-mentas são conhecidas como CASE(Computer Aided Software Engin-eering). Entre elas estão ErWin, DbDe-signer, MS Visio e Oracle Designer.Cada uma possui características quea torna mais ou menos adequada pa-ra cada situação, mas todas contri-buem para o trabalho do analista.

Depois de levantados os requisi-tos de informação, deve-se fazer umprojeto lógico. Entende-se por pro-jeto lógico a fase em que se realiza

a modelagem lógica de dados, com-posta pela aplicação do modelo deentidade X relacionamento e pelanormalização de dados. Em um pri-meiro momento não deve haverpreocupação com a estrutura físicaque será criada, e sim com o aten-dimento dos requisitos dos usuários.

PROJETO FÍSICOUma vez estabelecido o projeto ló-gico, vamos ao projeto físico. Nele,transforma-se o modelo de entida-de X relacionamento para o mode-lo físico, em geral, sem problemas.As estruturas relacionais (tabelas)são representações bastante simplese adequadas para caracterizar coi-sas do mundo real. Há uma troca na-tural de nomenclatura: entidadespassam a se chamar tabelas, tuplasviram registros ou linhas, e atribu-tos tornam-se colunas ou campos. Amenos que haja alguma necessida-de muito específica, basta acrescen-tar o tipo de dado e o tamanho decada um dos campos ou colunas, es-tabelecer chaves primárias e estran-geiras (normalmente as ferramen-tas CASE fazem esse trabalho pornós), definir regras de integridade,criação de visões (views), índices eoutros aspectos físicos do projeto.

Hora de criar as estruturas físicas,com tabelas, relacionamentos, cha-ves e tudo a que temos direito. Nor-malmente, as ferramentas CASE tam-bém fazem a maior parte do traba-lho. Algumas são capazes de se co-nectar ao banco e criar as estruturas.

Outras geram os scripts para seremexecutados no banco de dados. Sóque, para chegar aqui, é necessárioficar atento a alguns detalhes.

PADRONIZAÇÃOÉ sempre importante manter um pa-drão para o nome dos objetos, colu-nas e outros elementos. Mesmo quevocê trabalhe sozinho em um proje-to, é bem provável que no futuro ou-tras pessoas tenham de atualizar aqui-lo que você fez. A padronização co-meça na documentação do projetoe continua em todo o processo físi-co de criação do banco de dados.

Toda equipe deve estar envolvidapara definir o que e como será essepadrão. Imagina-se que, quanto maisclaro for o nome da entidade, porexemplo, melhor será para a pessoaentender o que está armazenado ali.Parece óbvio, mas algum tempo atrásera comum utilizar nomes estranhos,muito mais vinculados aos progra-mas que mantinham a entidade doque ao objetivo dela. Algunsanalistas até se valiam des-se expediente para manter-se no emprego — quantomais obscuro, mais depen-dência do analista.

TABELAS E COLUNASSe eu identifiquei um objetoque armazene as informaçõesde um veículo, devo dar-lheo nome de VEICULO. Em cer-tos casos, alguns analistas pre-ferem indicar qual o módulo

CÓDIGO

NÚMERO

DESCRIÇÃO

NOME

DATA

VALOR

QUANTIDADE

SIGLA

DOMÍNIO

PADRONIZE AS COLUNAS

OPÇÃO 2

CD

NR

DS

NM

DT

VL

QT

SG

DM

OPÇÃO 1

COD

NUM

DES

NOM

DAT

VAL

QTD

SIG

DOM

do sistema que mantém aquela es-trutura. Em outros, acrescenta-se aestrutura departamental que realizaesse trabalho. Essa última opção é apior, visto que há mudanças freqüen-tes nas funções departamentais deuma empresa moderna. Particular-mente, creio que ambas situações sãodesnecessárias, visto que atualmen-te uma classe é destacada para essafunção. A classe normalmente tam-bém tem um nome claro e objetivo.

Se há atributos importantes pa-ra serem mantidos, como cor, mo-delo, ano de fabricação, ano do mo-delo e montadora, deve-se colocaresses nomes nas colunas.

Outro ponto importante, mas nãodeterminante, é especificar a classifi-cação do dado junto com o nome. As-sim, se a cor do veículo fizer referên-cia a uma tabela de cores e, portan-to, eu for armazenar o código da cor,é comum utilizar-se CD ou COD antesdo nome. O nome do campo ficariaCDCOR, por exemplo.

CLASSIFICAÇÃO

024_CRIACAO 25/02/2006 21:57 Page 26

Page 25: Colecao InfoBanco de Dados

CRIAÇÃO

COLEÇÃO INFO > 27

CRIAÇÃO

26 < COLEÇÃO INFO

Agora você precisa saber quaissão as informações necessárias pa-ra sua empresa. Isso poderá lheajudar a diminuir a lista.

PROJETO LÓGICOEsta parte do processo deve aconte-cer em paralelo à escolha do siste-ma gerenciador de banco de dados.Optar por um produto sem ter noçãodas necessidades de informação daempresa é como dar um tiro no pé.

A maneira clássica de fazer isso en-volve todos os conceitos de engenha-ria de software para levantamento derequisitos. Quando se pensa em infor-mação, qualquer documento, tela desistema ou relatório é útil para iden-tificar o que é necessário armazenarno banco de dados. Muitas vezes osusuários da informação esquecem al-guns detalhes na fase de levantamen-to, por isso é importante recolher omáximo de documentos possíveis.

Na maior parte dos casos, ter umaferramenta de auxílio para o analis-ta criar e modelar a estrutura do ban-co de dados é desejável. Essas ferra-mentas são conhecidas como CASE(Computer Aided Software Engin-eering). Entre elas estão ErWin, DbDe-signer, MS Visio e Oracle Designer.Cada uma possui características quea torna mais ou menos adequada pa-ra cada situação, mas todas contri-buem para o trabalho do analista.

Depois de levantados os requisi-tos de informação, deve-se fazer umprojeto lógico. Entende-se por pro-jeto lógico a fase em que se realiza

a modelagem lógica de dados, com-posta pela aplicação do modelo deentidade X relacionamento e pelanormalização de dados. Em um pri-meiro momento não deve haverpreocupação com a estrutura físicaque será criada, e sim com o aten-dimento dos requisitos dos usuários.

PROJETO FÍSICOUma vez estabelecido o projeto ló-gico, vamos ao projeto físico. Nele,transforma-se o modelo de entida-de X relacionamento para o mode-lo físico, em geral, sem problemas.As estruturas relacionais (tabelas)são representações bastante simplese adequadas para caracterizar coi-sas do mundo real. Há uma troca na-tural de nomenclatura: entidadespassam a se chamar tabelas, tuplasviram registros ou linhas, e atribu-tos tornam-se colunas ou campos. Amenos que haja alguma necessida-de muito específica, basta acrescen-tar o tipo de dado e o tamanho decada um dos campos ou colunas, es-tabelecer chaves primárias e estran-geiras (normalmente as ferramen-tas CASE fazem esse trabalho pornós), definir regras de integridade,criação de visões (views), índices eoutros aspectos físicos do projeto.

Hora de criar as estruturas físicas,com tabelas, relacionamentos, cha-ves e tudo a que temos direito. Nor-malmente, as ferramentas CASE tam-bém fazem a maior parte do traba-lho. Algumas são capazes de se co-nectar ao banco e criar as estruturas.

Outras geram os scripts para seremexecutados no banco de dados. Sóque, para chegar aqui, é necessárioficar atento a alguns detalhes.

PADRONIZAÇÃOÉ sempre importante manter um pa-drão para o nome dos objetos, colu-nas e outros elementos. Mesmo quevocê trabalhe sozinho em um proje-to, é bem provável que no futuro ou-tras pessoas tenham de atualizar aqui-lo que você fez. A padronização co-meça na documentação do projetoe continua em todo o processo físi-co de criação do banco de dados.

Toda equipe deve estar envolvidapara definir o que e como será essepadrão. Imagina-se que, quanto maisclaro for o nome da entidade, porexemplo, melhor será para a pessoaentender o que está armazenado ali.Parece óbvio, mas algum tempo atrásera comum utilizar nomes estranhos,muito mais vinculados aos progra-mas que mantinham a entidade doque ao objetivo dela. Algunsanalistas até se valiam des-se expediente para manter-se no emprego — quantomais obscuro, mais depen-dência do analista.

TABELAS E COLUNASSe eu identifiquei um objetoque armazene as informaçõesde um veículo, devo dar-lheo nome de VEICULO. Em cer-tos casos, alguns analistas pre-ferem indicar qual o módulo

CÓDIGO

NÚMERO

DESCRIÇÃO

NOME

DATA

VALOR

QUANTIDADE

SIGLA

DOMÍNIO

PADRONIZE AS COLUNAS

OPÇÃO 2

CD

NR

DS

NM

DT

VL

QT

SG

DM

OPÇÃO 1

COD

NUM

DES

NOM

DAT

VAL

QTD

SIG

DOM

do sistema que mantém aquela es-trutura. Em outros, acrescenta-se aestrutura departamental que realizaesse trabalho. Essa última opção é apior, visto que há mudanças freqüen-tes nas funções departamentais deuma empresa moderna. Particular-mente, creio que ambas situações sãodesnecessárias, visto que atualmen-te uma classe é destacada para essafunção. A classe normalmente tam-bém tem um nome claro e objetivo.

Se há atributos importantes pa-ra serem mantidos, como cor, mo-delo, ano de fabricação, ano do mo-delo e montadora, deve-se colocaresses nomes nas colunas.

Outro ponto importante, mas nãodeterminante, é especificar a classifi-cação do dado junto com o nome. As-sim, se a cor do veículo fizer referên-cia a uma tabela de cores e, portan-to, eu for armazenar o código da cor,é comum utilizar-se CD ou COD antesdo nome. O nome do campo ficariaCDCOR, por exemplo.

CLASSIFICAÇÃO

024_CRIACAO 25/02/2006 21:57 Page 26

Page 26: Colecao InfoBanco de Dados

CRIAÇÃO

COLEÇÃO INFO > 29

CRIAÇÃO

28 < COLEÇÃO INFO

Como não é possível utilizar es-paços na definição do nome das co-lunas (ou mesmo objetos), utiliza-se o caractere sublinhado (_) parasubstituir o espaço. A tabela ficariacomo no exemplo da figura abaixo.

TIPOS DE DADOSA definição do tipo de dados tam-bém exige padronização. Pareceóbvio que um dado que receberáapenas conteúdo numérico devaser definido como NUMBER, DECI-MAL, INTEGER, FLOAT ou qualqueroutro tipo que seja otimizado pa-ra este fim. O mesmo acontece comalfanuméricos e datas, mas há al-gumas observações a considerarnessa escolha.

O tipo de dado numérico, de ummodo geral, possui mecanismosque fazem com que as buscas se-jam mais rápidas do que as queocorrem em colunas alfanuméri-cas. Ele também ocupa menos es-paço físico para armazenamento.Por isso, chaves primárias (e con-

seqüentemente estrangeiras) sãodefinidas por campos numéricos.Colunas pesquisadas com freqüên-cia, como CPF, também são defi-nidas como numéricas.

A maioria dos gerenciadores debanco de dados trabalha com doisgrupos de tipos de dados alfanu-méricos: CHAR e VARCHAR (ouVARCHAR2, no Oracle). O primei-ro utiliza todo o espaço especifi-cado, enquanto que o segundo évariável, usando, no máximo, o es-paço predeterminado. Isso faz comque o segundo, por utilizar apenaso espaço efetivamente ocupadopelo conteúdo, otimize o armaze-namento e não deixe buracos nosconteúdos. DBAs experientes le-vam em consideração o volume dealterações no conteúdo para essadefinição. Isso porque, caso umconteúdo seja alterado com fre-qüência, a atualização poderá ge-rar uma fragmentação da informa-ção — quando incluído, o conteú-do ocupou um espaço e, depois deuma alteração para maior, quan-do não há espaço na seqüência,será colocado em outro espaço fí-sico do disco.

Campos que armazenam datasdevem ser definidos dessa formapara facilitar operações de buscae até mesmo operações matemá-ticas entre elas. O padrão SQL pos-sui uma série de comandos espe-cíficos para calcular intervalo en-tre datas, extrair ano, dia, mês etc.Para conteúdos muito grandes, co-

mo arquivos XML, imagens, sons etextos extensos deve-se utilizar oLOB. Normalmente há uma separa-ção para binários (BLOB), adequa-dos para armazenamento de ima-gens e sons, e alfanuméricos (CLOB).No caso específico de XML, é pos-sível que o gerenciador de bancode dados tenha algum mecanismomelhor de armazenamento.

PROGRAMAÇÃOSempre que possível, prefira criaros módulos que utilizam e manipu-lam dados dentro do banco de da-dos. Apesar de atualmente haveruma grande difusão da necessida-de de independência de banco dedados por meio da utilização de umacamada intermediária que assumaessa responsabilidade, é inegávelque o gerenciador do banco de da-dos é o ambiente mais adequadopara manter e atualizar dados.

Ao se programar em qualqueroutra camada que não a de dados,o tráfego de informações pela re-

de é aumentado. Se você optar porcolocar a camada de aplicação nomesmo servidor (ou servidores),poderá comprometer seu desem-penho pelo excesso de uso.

Assim, prefira programar o ban-co de dados para rotinas que en-volvam acesso e manipulação dedados. Os programas devem seguira padronização da empresa no quediz respeito aos módulos: definiçãode variáveis, letras maiúsculas e/ouminúsculas para comandos etc.

INTERFACES DE ADMINISTRAÇÃOTão importante quanto criar estru-turas estáveis para suprir as ne-cessidades de informação da em-presa é a tarefa de manter o ban-co de dados com um nível aceitá-vel de tempo de resposta. Para is-so, é necessário ter uma atençãoespecial na administração.

As interfaces de administraçãotêm evoluído bastante para sim-plificar o processo. Mesmo os ge-renciadores de código aberto pos-suem interfaces amigáveis que per-mitem criar e manter todas as es-truturas do banco rapidamente. Al-gumas podem ser acessadas re-motamente, o que facilita o pro-cesso de manutenção e acompa-nhamento que o DBA faz no ban-co de dados.

A tendência é que os gerencia-dores sejam cada vez mais auto-matizados, em especial no que dizrespeito ao desempenho. Os ajus-

PROJETO LÓGICO DE DADOS

PROJETO FÍSICO DE DADOS

CRIAÇÃO DO BANCO DE DADOS

Análise e modelagemutilizando o Modelo deEntidade eRelacionamento eNormalização de Dados

Desenho com definiçãode tabelas, índices,visões etc.

Criação de scripts paraexecução do gerenciadorde banco de dados

BANCO DE DADOS CRIADO

PROCESSO DE CRIAÇÃO DE BANCODE DADOS

Programação: no SQL Server 2005 dápara criar consultas sem escrever código

024_CRIACAO 25/02/2006 22:17 Page 28

Page 27: Colecao InfoBanco de Dados

CRIAÇÃO

COLEÇÃO INFO > 29

CRIAÇÃO

28 < COLEÇÃO INFO

Como não é possível utilizar es-paços na definição do nome das co-lunas (ou mesmo objetos), utiliza-se o caractere sublinhado (_) parasubstituir o espaço. A tabela ficariacomo no exemplo da figura abaixo.

TIPOS DE DADOSA definição do tipo de dados tam-bém exige padronização. Pareceóbvio que um dado que receberáapenas conteúdo numérico devaser definido como NUMBER, DECI-MAL, INTEGER, FLOAT ou qualqueroutro tipo que seja otimizado pa-ra este fim. O mesmo acontece comalfanuméricos e datas, mas há al-gumas observações a considerarnessa escolha.

O tipo de dado numérico, de ummodo geral, possui mecanismosque fazem com que as buscas se-jam mais rápidas do que as queocorrem em colunas alfanuméri-cas. Ele também ocupa menos es-paço físico para armazenamento.Por isso, chaves primárias (e con-

seqüentemente estrangeiras) sãodefinidas por campos numéricos.Colunas pesquisadas com freqüên-cia, como CPF, também são defi-nidas como numéricas.

A maioria dos gerenciadores debanco de dados trabalha com doisgrupos de tipos de dados alfanu-méricos: CHAR e VARCHAR (ouVARCHAR2, no Oracle). O primei-ro utiliza todo o espaço especifi-cado, enquanto que o segundo évariável, usando, no máximo, o es-paço predeterminado. Isso faz comque o segundo, por utilizar apenaso espaço efetivamente ocupadopelo conteúdo, otimize o armaze-namento e não deixe buracos nosconteúdos. DBAs experientes le-vam em consideração o volume dealterações no conteúdo para essadefinição. Isso porque, caso umconteúdo seja alterado com fre-qüência, a atualização poderá ge-rar uma fragmentação da informa-ção — quando incluído, o conteú-do ocupou um espaço e, depois deuma alteração para maior, quan-do não há espaço na seqüência,será colocado em outro espaço fí-sico do disco.

Campos que armazenam datasdevem ser definidos dessa formapara facilitar operações de buscae até mesmo operações matemá-ticas entre elas. O padrão SQL pos-sui uma série de comandos espe-cíficos para calcular intervalo en-tre datas, extrair ano, dia, mês etc.Para conteúdos muito grandes, co-

mo arquivos XML, imagens, sons etextos extensos deve-se utilizar oLOB. Normalmente há uma separa-ção para binários (BLOB), adequa-dos para armazenamento de ima-gens e sons, e alfanuméricos (CLOB).No caso específico de XML, é pos-sível que o gerenciador de bancode dados tenha algum mecanismomelhor de armazenamento.

PROGRAMAÇÃOSempre que possível, prefira criaros módulos que utilizam e manipu-lam dados dentro do banco de da-dos. Apesar de atualmente haveruma grande difusão da necessida-de de independência de banco dedados por meio da utilização de umacamada intermediária que assumaessa responsabilidade, é inegávelque o gerenciador do banco de da-dos é o ambiente mais adequadopara manter e atualizar dados.

Ao se programar em qualqueroutra camada que não a de dados,o tráfego de informações pela re-

de é aumentado. Se você optar porcolocar a camada de aplicação nomesmo servidor (ou servidores),poderá comprometer seu desem-penho pelo excesso de uso.

Assim, prefira programar o ban-co de dados para rotinas que en-volvam acesso e manipulação dedados. Os programas devem seguira padronização da empresa no quediz respeito aos módulos: definiçãode variáveis, letras maiúsculas e/ouminúsculas para comandos etc.

INTERFACES DE ADMINISTRAÇÃOTão importante quanto criar estru-turas estáveis para suprir as ne-cessidades de informação da em-presa é a tarefa de manter o ban-co de dados com um nível aceitá-vel de tempo de resposta. Para is-so, é necessário ter uma atençãoespecial na administração.

As interfaces de administraçãotêm evoluído bastante para sim-plificar o processo. Mesmo os ge-renciadores de código aberto pos-suem interfaces amigáveis que per-mitem criar e manter todas as es-truturas do banco rapidamente. Al-gumas podem ser acessadas re-motamente, o que facilita o pro-cesso de manutenção e acompa-nhamento que o DBA faz no ban-co de dados.

A tendência é que os gerencia-dores sejam cada vez mais auto-matizados, em especial no que dizrespeito ao desempenho. Os ajus-

PROJETO LÓGICO DE DADOS

PROJETO FÍSICO DE DADOS

CRIAÇÃO DO BANCO DE DADOS

Análise e modelagemutilizando o Modelo deEntidade eRelacionamento eNormalização de Dados

Desenho com definiçãode tabelas, índices,visões etc.

Criação de scripts paraexecução do gerenciadorde banco de dados

BANCO DE DADOS CRIADO

PROCESSO DE CRIAÇÃO DE BANCODE DADOS

Programação: no SQL Server 2005 dápara criar consultas sem escrever código

024_CRIACAO 25/02/2006 22:17 Page 28

Page 28: Colecao InfoBanco de Dados

CRIAÇÃO

30 < COLEÇÃO INFO

tes (tuning) podem ser realizadossem a interferência direta do DBA.O administrador supervisiona e va-lida o que foi feito e, em caso deproblemas, adota outras medidas.

SEGURANÇANunca é pouco lembrar que acriação de usuários e a rotina debackup seja planejada com coe-rência. Usuários com “superpode-res” não são desejáveis em bancosde dados. Deve haver poucos, depreferência um único DBA por ban-co. Deve ser objeto de estudo cons-tante a verificação e a auditoria dosusuários e as transações realiza-das. Não basta confiar apenas nosistema para esse controle. Os ge-renciadores possuem interfaces deadministração relativamente sim-ples. Usuários genéricos podemcomprometer a segurança dos da-dos nessa situação.

A rotina de backup deve ser tes-tada inclusive com restaurações pe-riódicas, para determinar a exatidãoe o conhecimento do processo. Nor-malmente, para backup, há al-gumas formas disponíveis nosprincipais gerenciadores. Asprincipais são:■ CÓPIA COMPLETA DOS DA-DOS (OFF LINE): interrompe-se a execução do banco de da-dos e copiam-se os arquivosde dados. Em caso de pane,pode-se restaurar todo o ban-co que retornará ao momen-to em que foi feita a cópia.

■ CÓPIA COMPLETA DOS DADOS(ON LINE): as transações que são efe-tuadas são armazenadas em local es-pecífico para serem copiadas paraum meio físico. Em caso de pane nobanco de dados, é possível retornara um ponto no tempo, até o limitedas transações gravadas no disco. Is-so faz com que a perda de dados se-ja consideravelmente menor.■ SERVIDOR STANDBY: a cópia dastransações é realizada em um ser-vidor separado. Em caso de pane,o outro servidor assume a funçãodo servidor que falhou.

CONCLUSÃOCom planejamento, padronização econtrole é possível fazer com queos dados da empresa possam seracessados em segurança e rapida-mente. Unir diversas tabelas não écriar um banco. O processo come-ça com a escolha do gerenciadoradequado às necessidades e termi-na com a execução de um plano ro-busto e completo para o que é pre-ciso hoje e será necessário amanhã.

BI: ferramenta para necessidade atual e futura

024_CRIACAO 25/02/2006 22:18 Page 30

Page 29: Colecao InfoBanco de Dados

O BANCO FALASQLQUÊS

CONHEÇA O IDIOMA DOS BANCOS DE DADOS E ASLINGUAGENS DE ACESSO A ELES

POR ANDRÉ CARDOZO

LINGUAGENS

COLEÇÃO INFO > 31© ILUSTRAÇÃO PAVÃO

s programadores podemescolher a linguagem quequiserem para construiraplicativos que acessem

o banco de dados. Mas não têm comoescapar da SQL (Structured Query Lan-guage). Se o TCP/IP é o idioma da in-ternet, podemos dizer que a SQL tema mesma função nos bancos de da-dos. A linguagem foi desenvolvida nadécada de 70 pela IBM com uma úni-

ca finalidade: manipular bancos de da-dos. A SQL — em muitos casos pro-nunciada como SEQUEL — é adotadapor todos os sistemas gerenciadoresmais utilizados no mercado, como Ora-cle, MySQL e Microsoft SQL Server.

No nível mais avançado, um pro-gramador precisa se dedicar paradominar a SQL, mesmo porque di-versos bancos de dados possuem ex-tensões proprietárias, funções mais

O

031_LINGUAGENS 25/02/2006 22:21 Page 31

Page 30: Colecao InfoBanco de Dados

LINGUAGENS

COLEÇÃO INFO > 33

LINGUAGENS

32 < COLEÇÃO INFO

avançadas que só funcionam naque-le sistema. Os comandos básicos sãointuitivos e podem ser usados semdificuldade por quem tem noção deprogramação. Veja alguns:CREATE: cria tabelasSELECT: seleciona dadosINSERT: inclui dados em tabelasUPDATE: atualiza dadosDELETE: apaga dados

Além das expressões principais,outros comandos muito usados sãoo “where”, que inclui a condição, eo “order by”, que ordena o resulta-do da consulta SQL. Veja como elasfuncionam no exemplo abaixo:“SELECT nome,endereco FROMclientes WHERE estado = ‘sp’ORDER BY nome”

Esse comando seleciona as colu-nas “nome” e “endereco” da tabela“clientes” em que o estado é iguala “sp” (condição imposta pela ex-pressão “where”). Portanto, somen-te os clientes de São Paulo. Os re-sultados são ordenados por “nome”.A tabela poderia conter outras co-lunas, como “idade” e “sexo”, masnesse exemplo usamos só “nome”e “endereco”. Para selecionar todasas colunas, basta trocar “nome,en-dereco” por *, como abaixo:“SELECT * FROM clientesWHERE estado = ‘sp’ ORDERBY nome”

PL/SQL, A TURBINADAA linguagem PL/SQL é uma extensãoda SQL especializada no banco de da-dos Oracle. Ela combina a facilidade de

manipulação de dados da SQL com asfacilidades de programação de uma lin-guagem procedural. Permite criar ob-jetos de esquema, como gatilhos, pro-cedimentos armazenados e pacotes.

A linguagem PL/SQL utiliza o con-ceito de bloco estruturado. Esses blo-cos são compostos por procedures efunções. Um bloco tem a estruturabásica composta por três partes:DECLARE: seção opcional, em quetodos os objetos são declarados; BEGIN: em que os comandosPL/SQL são colocados;EXCEPTION: em que os erros sãotratados.

> LINGUAGENS DE ACESSOOpções não faltam para os desen-volvedores de programas de acessoa banco de dados. As mais popula-res são ASP, Perl, PHP e Java. Cadauma dessas linguagens tem suas van-tagens e desvantagens, e a escolhadepende de uma série de fatores, co-mo compatibilidade, custo e porta-bilidade. Conheça essas opções.

PHP, A POPULARUma soluçãobastante popularentre os web-masters de sites

dinâmicos é o PHP (Personal HomePage), criado pelo programador Ras-mus Leedorf. A linguagem funcio-na tanto em Unix quanto em Win-dows e possui suporte para diver-sos bancos de dados, incluindoMySQL, Sybase, SQL e Oracle.

A sintaxe possui alguns elemen-tos derivados do Perl, mas é bemmais simples e exige apenas noçõesbásicas de programação. Além dis-so, há outra qualidade muito impor-tante, que beneficia uma parte sen-sível de todos nós: o bolso. O inter-pretador PHP (programa que pro-cessa as páginas feitas nesse for-mato) é gratuito, e basta baixar einstalar no servidor para começara criar um website dinâmico.

ASP, A OPÇÃO WINDOWS O ASP (Active Ser-ver Pages) não éexatamente umalinguagem de

programação, mas o que a Microsoftdefine como “ambiente de execuçãode scripts”. Na maior parte das vezes,as instruções são escritas em VBScript,que é derivado do Visual Basic, tam-bém filhote da Microsoft.

A penetração do Visual Basic nomercado contribui bastante para ocrescimento do ASP. Como a quanti-dade de programadores VB é gran-de, fica mais fácil para as empresascontratarem profissionais que desen-volvam aplicações em VBScript.

Aderir ao ASP significa quase sem-pre optar pelo mundo Windows, umavez que as páginas ASP só rodam na-tivamente em servidores Windowscom servidor web IIS (Internet Infor-mation Server), da Microsoft. É pos-sível rodar páginas ASP em sistemasUnix por intermédio de soluções co-merciais, como o ChiliASP, ou usan-

do o OpenASP, no servidor web Apa-che. Mas a implementação desse ti-po de solução costuma ser problemá-tica para os webmasters.

JAVA, A ECLÉTICAA linguagem Java é a al-ternativa de programa-ção criada pela Sun Mi-crosystems. É uma lin-guagem robusta, comfunções complexas.

Possui como principal vantagem, aportabilidade — roda em qualquerplataforma, de palmtop a main-frame, de sistemas embarcados aprogramas sérios de internetbanking, por exemplo. Profissionaisespecializados em Java estão entreos mais disputados do mercado.

PERL, A VETERANAA linguagem Perl(Practical Extractionand Reporting Lan-guage) foi criada em1987 pelo progra-

mador Larry Wall para resolver tare-fas de administração em sistemas Unix.Wall divulgou a primeira versão dePerl nas listas de discussão da Use-net e logo programadores de todo omundo começaram a dar sugestõespara o aprimoramento da linguagem.Uma das vantagens de Perl é a por-tabilidade. Os scripts podem ser trans-feridos do Unix para o Windows e vi-ce-versa com pouca ou nenhuma mo-dificação. A linguagem é expandidapelo uso de módulos.

031_LINGUAGENS 25/02/2006 22:22 Page 32

Page 31: Colecao InfoBanco de Dados

LINGUAGENS

COLEÇÃO INFO > 33

LINGUAGENS

32 < COLEÇÃO INFO

avançadas que só funcionam naque-le sistema. Os comandos básicos sãointuitivos e podem ser usados semdificuldade por quem tem noção deprogramação. Veja alguns:CREATE: cria tabelasSELECT: seleciona dadosINSERT: inclui dados em tabelasUPDATE: atualiza dadosDELETE: apaga dados

Além das expressões principais,outros comandos muito usados sãoo “where”, que inclui a condição, eo “order by”, que ordena o resulta-do da consulta SQL. Veja como elasfuncionam no exemplo abaixo:“SELECT nome,endereco FROMclientes WHERE estado = ‘sp’ORDER BY nome”

Esse comando seleciona as colu-nas “nome” e “endereco” da tabela“clientes” em que o estado é iguala “sp” (condição imposta pela ex-pressão “where”). Portanto, somen-te os clientes de São Paulo. Os re-sultados são ordenados por “nome”.A tabela poderia conter outras co-lunas, como “idade” e “sexo”, masnesse exemplo usamos só “nome”e “endereco”. Para selecionar todasas colunas, basta trocar “nome,en-dereco” por *, como abaixo:“SELECT * FROM clientesWHERE estado = ‘sp’ ORDERBY nome”

PL/SQL, A TURBINADAA linguagem PL/SQL é uma extensãoda SQL especializada no banco de da-dos Oracle. Ela combina a facilidade de

manipulação de dados da SQL com asfacilidades de programação de uma lin-guagem procedural. Permite criar ob-jetos de esquema, como gatilhos, pro-cedimentos armazenados e pacotes.

A linguagem PL/SQL utiliza o con-ceito de bloco estruturado. Esses blo-cos são compostos por procedures efunções. Um bloco tem a estruturabásica composta por três partes:DECLARE: seção opcional, em quetodos os objetos são declarados; BEGIN: em que os comandosPL/SQL são colocados;EXCEPTION: em que os erros sãotratados.

> LINGUAGENS DE ACESSOOpções não faltam para os desen-volvedores de programas de acessoa banco de dados. As mais popula-res são ASP, Perl, PHP e Java. Cadauma dessas linguagens tem suas van-tagens e desvantagens, e a escolhadepende de uma série de fatores, co-mo compatibilidade, custo e porta-bilidade. Conheça essas opções.

PHP, A POPULARUma soluçãobastante popularentre os web-masters de sites

dinâmicos é o PHP (Personal HomePage), criado pelo programador Ras-mus Leedorf. A linguagem funcio-na tanto em Unix quanto em Win-dows e possui suporte para diver-sos bancos de dados, incluindoMySQL, Sybase, SQL e Oracle.

A sintaxe possui alguns elemen-tos derivados do Perl, mas é bemmais simples e exige apenas noçõesbásicas de programação. Além dis-so, há outra qualidade muito impor-tante, que beneficia uma parte sen-sível de todos nós: o bolso. O inter-pretador PHP (programa que pro-cessa as páginas feitas nesse for-mato) é gratuito, e basta baixar einstalar no servidor para começara criar um website dinâmico.

ASP, A OPÇÃO WINDOWS O ASP (Active Ser-ver Pages) não éexatamente umalinguagem de

programação, mas o que a Microsoftdefine como “ambiente de execuçãode scripts”. Na maior parte das vezes,as instruções são escritas em VBScript,que é derivado do Visual Basic, tam-bém filhote da Microsoft.

A penetração do Visual Basic nomercado contribui bastante para ocrescimento do ASP. Como a quanti-dade de programadores VB é gran-de, fica mais fácil para as empresascontratarem profissionais que desen-volvam aplicações em VBScript.

Aderir ao ASP significa quase sem-pre optar pelo mundo Windows, umavez que as páginas ASP só rodam na-tivamente em servidores Windowscom servidor web IIS (Internet Infor-mation Server), da Microsoft. É pos-sível rodar páginas ASP em sistemasUnix por intermédio de soluções co-merciais, como o ChiliASP, ou usan-

do o OpenASP, no servidor web Apa-che. Mas a implementação desse ti-po de solução costuma ser problemá-tica para os webmasters.

JAVA, A ECLÉTICAA linguagem Java é a al-ternativa de programa-ção criada pela Sun Mi-crosystems. É uma lin-guagem robusta, comfunções complexas.

Possui como principal vantagem, aportabilidade — roda em qualquerplataforma, de palmtop a main-frame, de sistemas embarcados aprogramas sérios de internetbanking, por exemplo. Profissionaisespecializados em Java estão entreos mais disputados do mercado.

PERL, A VETERANAA linguagem Perl(Practical Extractionand Reporting Lan-guage) foi criada em1987 pelo progra-

mador Larry Wall para resolver tare-fas de administração em sistemas Unix.Wall divulgou a primeira versão dePerl nas listas de discussão da Use-net e logo programadores de todo omundo começaram a dar sugestõespara o aprimoramento da linguagem.Uma das vantagens de Perl é a por-tabilidade. Os scripts podem ser trans-feridos do Unix para o Windows e vi-ce-versa com pouca ou nenhuma mo-dificação. A linguagem é expandidapelo uso de módulos.

031_LINGUAGENS 25/02/2006 22:22 Page 32

Page 32: Colecao InfoBanco de Dados

UM SQL SERVERFÁCIL DE USAR

A VERSÃO GRÁTIS DO BANCO DE DADOS DA MICROSOFTTEM ASSISTENTE E MUITOS RECURSOS

POR NIVALDO FORESTI

TESTE/SQL SERVER

34 < COLEÇÃO INFO

que não faz a concorrên-cia. Bastou os bancos dedados de código abertocomeçarem a ganhar es-

paço nas corporações, os fabricantestradicionais passarama oferecer versões gra-tuitas com a maioriados recursos das ver-sões pagas e algumasrestrições. A Microsoftinaugurou esse movi-mento, lançando no fi-nal do ano passado o SQL Server 2005Express e seus três irmãos pagos:Workgroup, Standard e Enterprise. De-pois, vieram a Oracle e a IBM.

Como as versõescomerciais irmãs, oSQL Server 2005 Ex-press vem integradoao Visual Studio .Net,o que se traduz em fa-cilidade para o desen-volvimento de aplica-ções. O INFOLAB tes-tou o programa num

servidor Pentium 4 de 2 GHz com 1GB de memória RAM.

Seguindo o padrão dos produtos de-senvolvidos pela Microsoft, a instala-ção do Express é extremamente sim-

ples e fácil de fazer. Umassistente leva o usuá-rio pela mão por todasas etapas do processo.Com alguns cliques demouse, você instalauma instância do ge-renciador de banco de

dados. Mas nem tudo é perfeito. A suí-te de administração e desenvolvimen-to SQL Server Express ManagementStudio — Community Technology Pre-

OFIQUE LIGADO

>Pequenas empresase desenvolvedores sãoo alvo do SQL Server2005 Express

Management Studio:suíte de administraçãoe desenvolvimento

034_SQL_SERVEREXPRESS 25/02/2006 23:01 Page 34

Page 33: Colecao InfoBanco de Dados

TESTE/SQL SERVER

COLEÇÃO INFO > 35

SQL SERVER 2005 EXPRESSFABRICANTE

PRÓ

CONTRAS

INSTALAÇÃO

GERENCIAMENTO

FERRAMENTAS

DESENVOLVIMENTO

SEGURANÇA

AVALIAÇÃO TÉCNICA (1)

PREÇO

CUSTO/BENEFÍCIO

ONDE ENCONTRAR

Microsoft

Fácil de usar e gerenciar

Suporta apenas umprocessador, 1 GB dememória e bancos de até 4GB

8,5Rápida, com verificaçãode pré-requisitos eprimeiros passos

7,5Possui administraçãosimilar à da versãoStandard, mas faltamfuncionalidades

6,5Fica devendo ferramentascomo o DTS para aimportação de dados

8,5Traz todos os recursos dasdemais versões, inclusivesuporte nativo a XML

8,0Conta com criptografiabaseada em chaves e replicação de dados via web

7,6

Gratuito

www.info.abril.com.br/download/4339.shtml

(1) Média ponderada considerando os seguintes itens e respectivos pesos:Instalação (10%), Gerenciamento (35%), Ferramentas (35%),Desenvolvimento (10%) e Segurança dos dados (10%). O SQL ServerExpress ganha 0,2 ponto na avaliação técnica devido ao bom desempenhodo seu fabricante na Pesquisa INFO de Marcas 2005.

view (CTP) não acompanha a instala-ção. É preciso fazer o download se-paradamente do CTP no endereçowww.info.abril.com.br/download/4454.shtml.

RECURSOSNão espere que a Microsoft tenha da-do tudo de bandeja nessa versão dis-ponível gratuitamente para você. Fal-tam vários recursos. Você não encon-trará o DTS (Data TransformationSystem), o que dará muita dor de ca-beça na hora de importar dados deoutros formatos de arquivo para den-tro do banco de dados. Também nãoterá a pesquisa em texto, os serviçosde notificação e os recursos de busi-ness intelligence que tornam a ver-são Enterprise bastante atraente pa-ra as empresas maiorzinhas.

Outras restrições importantes sãoo suporte a apenas um processador,somente 1 GB de memória RAM e até4 GB de tamanho do banco de dados.Se bem que é difícil uma pequena em-presa bater nesses limites.

FUNCIONALIDADESNem tudo é problema. O mecanismode acesso a dados MSDE (MicrosoftDesktop Engine), um SQL Server ru-dimentar para desktops, desapare-ceu com o advento do Express. E, comele, sumiu a restrição de desempe-nho quando existiam mais de cincoconexões simultâneas ao banco dedados. Toda a funcionalidade progra-mática está no Express, até mesmo osuporte a XML e a integração da lin-

guagem CLR (Common LanguageRuntime) da .Net com a Transact-SQL,a linguagem de comandos SQL da Mi-crosoft. O novo conjunto de objetose a habilidade de agir como clientena replicação de dados e nos cená-rios de envio de mensagens não fal-taram na versão gratuita. Em suma,dá para aproveitar bastante até seremnecessárias mais funcionalidades.

034_SQL_SERVEREXPRESS 25/02/2006 22:28 Page 35

Page 34: Colecao InfoBanco de Dados

Utilitários: inclui importação de XML

ORACLE EMVERSÃO LIGHT

A EDIÇÃO GRATUITA DO PODEROSO BANCO DE DADOSCHEGA COM RECURSOS DE SOBRA

POR ERIC COSTA

TESTE/ORACLE EXPRESS

36 < COLEÇÃO INFO

Página principal: portal de acesso a funções e links com a comunidade Oracle

eguindo os rastros daMicrosoft, a Oracle pro-duziu uma versão ma-gra de seu poderoso

banco de dados, a Oracle 10g ExpressEdition, de olho nas pequenas em-presas. O software inclui os princi-pais recursos das versões comerciaisdo irmão robusto e é gratuito. Emcontrapartida, limita o tamanho má-ximo da base de dados a 4 GB, alémdo hardware usado. O gerenciadorde bancos de dadosusa apenas um pro-cessador (caso o com-putador tenha maisde um) e, no máximo,1 GB de RAM, mesmoque o micro possuamais memória.

A licença do Oracle Express é bas-tante aberta: é possível, sem pagarnada, distribuir e implantar o pro-grama, além de usá-lo para desen-volvimento de software. Nos testesda INFO, feitos com o sistema ope-racional SUSE Linux 10.0, o OracleExpress Edition teve bom desem-penho, sendo instalado rapidamen-te num micro com processador Pen-tium 4 de 2,4 GHz, com 512 MB dememória RAM. A instalação é bas-

tante simples. Toda aadministração dobanco de dados é fei-ta pelo browser, o quetambém facilita oacesso remoto, paraquem quer deixar oservidor afastado.

S

TESTE/ORACLE EXPRESS

COLEÇÃO INFO > 37

Apesar de ser relativamente sim-ples, a interface web funciona bem,trazendo recursos suficientes paraa criação e a manutenção de ban-cos de dados. Ainda existe, claro,uma ferramenta para migrar umbanco de dados do Oracle Expresspara o Oracle 10g pago.

Uma grande vantagem da versãoExpress do Oracle em relação ao tam-bém gratuito MySQL está no supor-te ao PL/SQL, a versão turbinada doSQL feita pela Oracle. Com ela, é pos-sível acrescentar mais funcionalida-de em stored procedures (ou rotinasarmazenadas), o que pode diminuira necessidade de manutenção futu-ra dos programas que usem o ban-co de dados. Outra vantagem do Ora-cle Express é a robustez do bancode dados, que traz a base do respei-tado Oracle 10g. Para quem vai de-senvolver software, a versão Expresstem o mesmo suporte a linguagensde programação do Oracle 10g, in-tegrando-se com Java, C++, PHP,com os principais dialetos da tecno-logia .Net (como C# e VB.NET), en-tre outros. O suporte do Oracle Ex-press é feito pelos próprios usuários,que ajudam uns aos outros em um

Browser: controle sobre cada objeto

ORACLE 10G EXPRESS EDITION

FABRICANTE

PRÓS

CONTRAS

COMPATIBILIDADE

INSTALAÇÃO

RECURSOS

FERRAMENTAS

AVALIAÇÃO TÉCNICA

PREÇO (R$) (1)

CUSTO/BENEFÍCIO

ONDE ENCONTRAR

Oracle

Dispensa hardwareparrudo, traz recursos de primeira

Limitações ao tamanho dobanco de dados, àmemória e CPU usadas

8,0Roda em Windows e Linux(distribuições compatíveiscom pacotes RPM)

8,0Instalação simples e diretatanto no Windows quantono Linux

8,5Suporte a PL/SQL, integra-se com Java, C++,VB.NET, entre outras linguagens

8,0Gerenciamento pelobrowser, com ferramentade construção de consultas

8,4

Gratuito

www.info.abril.com.br/download/4346.shtml

(1) Média ponderada considerando os seguintes itens e respectivos pesos:Compatibilidade (20%), Instalação (20%), Recursos (30%) e Ferramentas(30%). O Oracle Express ganha 0,2 ponto na Avaliação Técnica devido aobom desempenho do seu fabricante na Pesquisa INFO de Marcas 2005.

grupo de discussão mediado por pro-fissionais da Oracle. Ao baixar o Ora-cle Express, é possível cadastrar-senesse grupo automaticamente.

FIQUE LIGADO

> Limitações tornamo Oracle 10g Expressindicado para aspequenas empresas eos desenvolvedores

036_ORACLE_EXPRESS-8 25/02/2006 22:30 Page 36

Page 35: Colecao InfoBanco de Dados

Utilitários: inclui importação de XML

ORACLE EMVERSÃO LIGHT

A EDIÇÃO GRATUITA DO PODEROSO BANCO DE DADOSCHEGA COM RECURSOS DE SOBRA

POR ERIC COSTA

TESTE/ORACLE EXPRESS

36 < COLEÇÃO INFO

Página principal: portal de acesso a funções e links com a comunidade Oracle

eguindo os rastros daMicrosoft, a Oracle pro-duziu uma versão ma-gra de seu poderoso

banco de dados, a Oracle 10g ExpressEdition, de olho nas pequenas em-presas. O software inclui os princi-pais recursos das versões comerciaisdo irmão robusto e é gratuito. Emcontrapartida, limita o tamanho má-ximo da base de dados a 4 GB, alémdo hardware usado. O gerenciadorde bancos de dadosusa apenas um pro-cessador (caso o com-putador tenha maisde um) e, no máximo,1 GB de RAM, mesmoque o micro possuamais memória.

A licença do Oracle Express é bas-tante aberta: é possível, sem pagarnada, distribuir e implantar o pro-grama, além de usá-lo para desen-volvimento de software. Nos testesda INFO, feitos com o sistema ope-racional SUSE Linux 10.0, o OracleExpress Edition teve bom desem-penho, sendo instalado rapidamen-te num micro com processador Pen-tium 4 de 2,4 GHz, com 512 MB dememória RAM. A instalação é bas-

tante simples. Toda aadministração dobanco de dados é fei-ta pelo browser, o quetambém facilita oacesso remoto, paraquem quer deixar oservidor afastado.

S

TESTE/ORACLE EXPRESS

COLEÇÃO INFO > 37

Apesar de ser relativamente sim-ples, a interface web funciona bem,trazendo recursos suficientes paraa criação e a manutenção de ban-cos de dados. Ainda existe, claro,uma ferramenta para migrar umbanco de dados do Oracle Expresspara o Oracle 10g pago.

Uma grande vantagem da versãoExpress do Oracle em relação ao tam-bém gratuito MySQL está no supor-te ao PL/SQL, a versão turbinada doSQL feita pela Oracle. Com ela, é pos-sível acrescentar mais funcionalida-de em stored procedures (ou rotinasarmazenadas), o que pode diminuira necessidade de manutenção futu-ra dos programas que usem o ban-co de dados. Outra vantagem do Ora-cle Express é a robustez do bancode dados, que traz a base do respei-tado Oracle 10g. Para quem vai de-senvolver software, a versão Expresstem o mesmo suporte a linguagensde programação do Oracle 10g, in-tegrando-se com Java, C++, PHP,com os principais dialetos da tecno-logia .Net (como C# e VB.NET), en-tre outros. O suporte do Oracle Ex-press é feito pelos próprios usuários,que ajudam uns aos outros em um

Browser: controle sobre cada objeto

ORACLE 10G EXPRESS EDITION

FABRICANTE

PRÓS

CONTRAS

COMPATIBILIDADE

INSTALAÇÃO

RECURSOS

FERRAMENTAS

AVALIAÇÃO TÉCNICA

PREÇO (R$) (1)

CUSTO/BENEFÍCIO

ONDE ENCONTRAR

Oracle

Dispensa hardwareparrudo, traz recursos de primeira

Limitações ao tamanho dobanco de dados, àmemória e CPU usadas

8,0Roda em Windows e Linux(distribuições compatíveiscom pacotes RPM)

8,0Instalação simples e diretatanto no Windows quantono Linux

8,5Suporte a PL/SQL, integra-se com Java, C++,VB.NET, entre outras linguagens

8,0Gerenciamento pelobrowser, com ferramentade construção de consultas

8,4

Gratuito

www.info.abril.com.br/download/4346.shtml

(1) Média ponderada considerando os seguintes itens e respectivos pesos:Compatibilidade (20%), Instalação (20%), Recursos (30%) e Ferramentas(30%). O Oracle Express ganha 0,2 ponto na Avaliação Técnica devido aobom desempenho do seu fabricante na Pesquisa INFO de Marcas 2005.

grupo de discussão mediado por pro-fissionais da Oracle. Ao baixar o Ora-cle Express, é possível cadastrar-senesse grupo automaticamente.

FIQUE LIGADO

> Limitações tornamo Oracle 10g Expressindicado para aspequenas empresas eos desenvolvedores

036_ORACLE_EXPRESS-8 25/02/2006 22:30 Page 36

Page 36: Colecao InfoBanco de Dados

TESTE/DB2 EXPRESS

COLEÇÃO INFO > 39

TESTE/DB2 EXPRESS

38 < COLEÇÃO INFO

epois da Microsoft e daOracle, foi a vez da IBMcriar uma versão gratui-ta de seu robusto ban-

co de dados DB2. Como as demaisedições “expressas” dos concorren-tes, o DB2 Express-C tem limitações— suporta até 4 GB de memóriaRAM —, mas possui característicasque permitem seu uso em aplicaçõescomerciais e sensíveis. Tem a vanta-gem de suportar tanto a plataformaWindows quanto a Linux e roda emmáquinas com até dois processado-res, enquanto as edições expressasdo SQL Server e do Oracle só aceitam

um. Acompanhe a seguir o teste doINFOLAB, realizado num PC Pentium4 de 2,8 MHz, com 512 MB de RAM eWindows 2003 Server Standard.

INSTALAÇÃOO processo de instalação do DB2 Ex-press-C é rápido, mas fazer o down-load pela web pode ser torturante.O arquivo tem pouco mais de 450MB e, mesmo numa conexão vitami-nada, irá demorar mais de uma ho-ra para baixar. Ler os pré-requisitose as notas nos menus do instaladorevitará problemas durante e após ainstalação. Por exemplo, um dos pré-

requisitos é que naplataforma Windowsse use o Windows XPProfissional.

Durante a instala-ção, o próprio sistemacoloca em ação as op-ções Java necessárias.Além disso, permitetestar imediatamente

D

seu funcionamento,criando ou carregan-do os bancos de da-dos de exemplo queo acompanham. Umasérie de caixas de diá-logo e janelas de con-firmação indicam oque fazer a cada pas-so da instalação em bom português.

A atualização para versões maisrecentes fica a um clique de distân-cia no próprio instalador. Basta acio-nar Atualizar Versão para o progra-ma verificar qual é a versão em usoe executar o upgrade. Acessando oitem Visualizar Introdução, o usuá-rio encontra tutoriais e informaçõesdetalhadas sobre o produto e ou-tros assuntos de interesse, como amigração de versões anteriores. Osoutros primeiros passos disponíveis— criar banco de dados e acessarexemplos — abrem aCentral de Controle.

NAS RÉDEASO Centro de Controleé o ponto de partidade todas as opera-ções, controles e ad-ministração das bases de dados cria-das no DB2 Express-C. Como podehaver mais de uma instância ope-rando na mesma máquina, o Cen-tro de Controle pode dar conta de

todas elas. É um utilitário bastanterico em funcionalidade para criar emodificar tabelas, executar consul-tas (queries) e análises complexas,monitorar o status dos bancos dedados, funções de importação e ex-portação de dados, dentre outras.

Os usuários contam com uma in-terface bastante fácil de usar, simi-lar nos sistemas operacionais Win-dows e Linux. Essa estratégia seguea da concorrente Oracle, que estáusando os navegadores para man-ter interfaces semelhantes em to-

das as plataformasque suporta.

Na plataforma Win-dows, a Central deControle pode seraberta a partir do me-nu Iniciar ou clican-do-se com o botão di-

reito no ícone do DB2 na bandeja desistema. Uma janela com uma listasimilar à do Explorer, contendo ban-co de dados e seus objetos, é mos-trada ao abrir o programa.

DB2 GRÁTIS COMTUDO DENTRO

A VERSÃO DEGUSTAÇÃO DO BANCO DE DADOS DA IBMVEM REPLETA DE BOAS FERRAMENTAS

POR NIVALDO FORESTI

Instalação: o assistenteguia o usuário durantetodo o processo

Centro de Controle: dáconta de todas asinstâncias em operação

FIQUE LIGADO

> Fácil de usar e cheiode ferramentas, o DB2Express-C vai bem naspequenas empresas

038_DB2_EXPRESS 25/02/2006 22:31 Page 38

Page 37: Colecao InfoBanco de Dados

TESTE/DB2 EXPRESS

COLEÇÃO INFO > 39

TESTE/DB2 EXPRESS

38 < COLEÇÃO INFO

epois da Microsoft e daOracle, foi a vez da IBMcriar uma versão gratui-ta de seu robusto ban-

co de dados DB2. Como as demaisedições “expressas” dos concorren-tes, o DB2 Express-C tem limitações— suporta até 4 GB de memóriaRAM —, mas possui característicasque permitem seu uso em aplicaçõescomerciais e sensíveis. Tem a vanta-gem de suportar tanto a plataformaWindows quanto a Linux e roda emmáquinas com até dois processado-res, enquanto as edições expressasdo SQL Server e do Oracle só aceitam

um. Acompanhe a seguir o teste doINFOLAB, realizado num PC Pentium4 de 2,8 MHz, com 512 MB de RAM eWindows 2003 Server Standard.

INSTALAÇÃOO processo de instalação do DB2 Ex-press-C é rápido, mas fazer o down-load pela web pode ser torturante.O arquivo tem pouco mais de 450MB e, mesmo numa conexão vitami-nada, irá demorar mais de uma ho-ra para baixar. Ler os pré-requisitose as notas nos menus do instaladorevitará problemas durante e após ainstalação. Por exemplo, um dos pré-

requisitos é que naplataforma Windowsse use o Windows XPProfissional.

Durante a instala-ção, o próprio sistemacoloca em ação as op-ções Java necessárias.Além disso, permitetestar imediatamente

D

seu funcionamento,criando ou carregan-do os bancos de da-dos de exemplo queo acompanham. Umasérie de caixas de diá-logo e janelas de con-firmação indicam oque fazer a cada pas-so da instalação em bom português.

A atualização para versões maisrecentes fica a um clique de distân-cia no próprio instalador. Basta acio-nar Atualizar Versão para o progra-ma verificar qual é a versão em usoe executar o upgrade. Acessando oitem Visualizar Introdução, o usuá-rio encontra tutoriais e informaçõesdetalhadas sobre o produto e ou-tros assuntos de interesse, como amigração de versões anteriores. Osoutros primeiros passos disponíveis— criar banco de dados e acessarexemplos — abrem aCentral de Controle.

NAS RÉDEASO Centro de Controleé o ponto de partidade todas as opera-ções, controles e ad-ministração das bases de dados cria-das no DB2 Express-C. Como podehaver mais de uma instância ope-rando na mesma máquina, o Cen-tro de Controle pode dar conta de

todas elas. É um utilitário bastanterico em funcionalidade para criar emodificar tabelas, executar consul-tas (queries) e análises complexas,monitorar o status dos bancos dedados, funções de importação e ex-portação de dados, dentre outras.

Os usuários contam com uma in-terface bastante fácil de usar, simi-lar nos sistemas operacionais Win-dows e Linux. Essa estratégia seguea da concorrente Oracle, que estáusando os navegadores para man-ter interfaces semelhantes em to-

das as plataformasque suporta.

Na plataforma Win-dows, a Central deControle pode seraberta a partir do me-nu Iniciar ou clican-do-se com o botão di-

reito no ícone do DB2 na bandeja desistema. Uma janela com uma listasimilar à do Explorer, contendo ban-co de dados e seus objetos, é mos-trada ao abrir o programa.

DB2 GRÁTIS COMTUDO DENTRO

A VERSÃO DEGUSTAÇÃO DO BANCO DE DADOS DA IBMVEM REPLETA DE BOAS FERRAMENTAS

POR NIVALDO FORESTI

Instalação: o assistenteguia o usuário durantetodo o processo

Centro de Controle: dáconta de todas asinstâncias em operação

FIQUE LIGADO

> Fácil de usar e cheiode ferramentas, o DB2Express-C vai bem naspequenas empresas

038_DB2_EXPRESS 25/02/2006 22:31 Page 38

Page 38: Colecao InfoBanco de Dados

TESTE/DB2 EXPRESS

COLEÇÃO INFO > 41

TESTE/DB2 EXPRESS

40 < COLEÇÃO INFO

A quantidade deutilitários disponíveisno DB2 Express-Cimpressiona. Há pro-gramas para moni-toramento de me-mória, de aplicativos,um Centro de Tare-fas em que podemser programadas ta-refas específicas pa-ra execução em lo-te e a configuraçãodo sistema. Para fa-cilitar a vida do ad-ministrador ou doprogramador, funções como criar oualterar banco de dados, backup e re-store são controladas por assistentes.

DESEMPENHOConseguir um desempenho ótimodas aplicações com banco de dadosé considerada uma combinação demagia negra e ciência. Na tentativade se aproximar do ótimo, o DB2 Ex-press-C oferece ferramentas em sua

maioria gráficas, pa-ra assegurar que asaplicações não se-jam prejudicadas pe-lo mau uso dos re-cursos. São várias asferramentas dispo-níveis: db2batch, queverifica o desempe-nho das queries emtempo real; VisualExplain, que analisagraficamente as con-sultas; Design Advi-sor, que sugere a co-locação de índices

em tabelas para diminuir o tempode acesso baseado nas consultas exe-cutadas, e, finalmente, o Activity Mo-nitor, que gera relatórios do desem-penho dos sistemas para análise.

DESENVOLVIMENTOO DB2 Express-C inclui os drivers ea interface necessários para o de-senvolvimento de aplicações naslinguagens C/C++, Java e .Net, além

de PHP e Perl. Su-porta linguagens noservidor para o de-senvolvimento destored procedures,triggers e funções.Elas podem ser es-critas em C/C++, Co-bol, Java (JDBC e

SQLJ), .Net (qualquer linguagem su-portada pelo compilador CLR) e SQLPL (Procedure Language). A SQL PLé considerada nativa e guardadano banco de dados como objetoDB2, reconhecida como um padrãoANSI SQL. Uma ferramenta gráfi-ca, o Centro de Desenvolvimento,permite o gerenciamento, desen-volvimento, teste e implantação destored procedures.

A integração e o desenvolvimen-to de aplicações Java são pontosfortes do produto. Os mais conhe-cidos drivers estão incluídos no pa-cote. O ambiente Websphere Stu-dio, da IBM, pode ser usado no de-senvolvimento de aplicações como DB2 Express-C, da mesma formaque o Visual Studio 2003, da Micro-soft. Um driver de acesso compatí-vel com o ambiente de desenvolvi-mento 1.1 está disponível no produ-to. A documentação não é tão com-pleta como deveria, mas o usuárioconsegue as informações, em in-glês, pesquisando no site da IBM.

CONJUNTONo conjunto da obra, o DB2 Express-C é um banco de dados que vale apena experimentar, principalmen-te por conta do Centro de Contro-le, que é poderoso, fácil de usar epossui muitos utilitários e ferramen-tas. Além disso, não há limitação denúmero de usuários ou de tamanhopara os bancos de dados nas apli-cações desenvolvidas para a plata-forma. A única restrição existente

DB2 EXPRESS-C 8.2

FABRICANTE

PRÓS

CONTRAS

INSTALAÇÃO

GERENCIAMENTO

FERRAMENTAS

DESENVOLVIMENTO

SEGURANÇA

AVALIAÇÃO TÉCNICA (1)

PREÇO (R$)

CUSTO/BENEFÍCIO

ONDE ENCONTRAR

IBM

Bons utilitários, suporte a máquinas com doisprocessadores ereplicações complexas

Não tem ferramentas de datawarehouse e limita a capacidade dememória

8,4Rápida, com verificaçãode pré-requisitos eprimeiros passos

9,0Permite gerenciar váriasinstâncias do programa,um ou mais bancos,projetos e diagnósticos

8,5Replicação, central detarefas, centro defuncionamento comalertas, centro de dados inteligentes

8,0Em WebSphere Studio,Java, C, C++, Fortran,Rexx, Perl entre outraslinguagens

7,5Replicação de dados entrebancos, usando sistemasde mensagens

8,5

Gratuito

www.info.abril.com.br/download/4435.shtml

(1) Média ponderada considerando os seguintes itens e respectivos pesos:Instalação (10%), Gerenciamento (35%), Ferramentas (35%),Desenvolvimento (10%) e Segurança dos dados (10%).

Visual Explain: ferramentaespecial para a análise gráfica dasconsultas ao banco de dados

é o limite de 4GB para a memóriaRAM. Alguns recursos encontradosnas versões pagas, como ferramen-tas de datawarehouse e drivers pa-ra o banco de dados Informix, nãoacompanham o DB2 Express-C. Masquando esses recursos forem ne-cessários, o usuário poderá adotaruma versão paga do produto semas dores e os custos de migração.

Desenvolvimento:stored procedures emambiente gráfico

038_DB2_EXPRESS 25/02/2006 22:32 Page 40

Page 39: Colecao InfoBanco de Dados

TESTE/DB2 EXPRESS

COLEÇÃO INFO > 41

TESTE/DB2 EXPRESS

40 < COLEÇÃO INFO

A quantidade deutilitários disponíveisno DB2 Express-Cimpressiona. Há pro-gramas para moni-toramento de me-mória, de aplicativos,um Centro de Tare-fas em que podemser programadas ta-refas específicas pa-ra execução em lo-te e a configuraçãodo sistema. Para fa-cilitar a vida do ad-ministrador ou doprogramador, funções como criar oualterar banco de dados, backup e re-store são controladas por assistentes.

DESEMPENHOConseguir um desempenho ótimodas aplicações com banco de dadosé considerada uma combinação demagia negra e ciência. Na tentativade se aproximar do ótimo, o DB2 Ex-press-C oferece ferramentas em sua

maioria gráficas, pa-ra assegurar que asaplicações não se-jam prejudicadas pe-lo mau uso dos re-cursos. São várias asferramentas dispo-níveis: db2batch, queverifica o desempe-nho das queries emtempo real; VisualExplain, que analisagraficamente as con-sultas; Design Advi-sor, que sugere a co-locação de índices

em tabelas para diminuir o tempode acesso baseado nas consultas exe-cutadas, e, finalmente, o Activity Mo-nitor, que gera relatórios do desem-penho dos sistemas para análise.

DESENVOLVIMENTOO DB2 Express-C inclui os drivers ea interface necessários para o de-senvolvimento de aplicações naslinguagens C/C++, Java e .Net, além

de PHP e Perl. Su-porta linguagens noservidor para o de-senvolvimento destored procedures,triggers e funções.Elas podem ser es-critas em C/C++, Co-bol, Java (JDBC e

SQLJ), .Net (qualquer linguagem su-portada pelo compilador CLR) e SQLPL (Procedure Language). A SQL PLé considerada nativa e guardadano banco de dados como objetoDB2, reconhecida como um padrãoANSI SQL. Uma ferramenta gráfi-ca, o Centro de Desenvolvimento,permite o gerenciamento, desen-volvimento, teste e implantação destored procedures.

A integração e o desenvolvimen-to de aplicações Java são pontosfortes do produto. Os mais conhe-cidos drivers estão incluídos no pa-cote. O ambiente Websphere Stu-dio, da IBM, pode ser usado no de-senvolvimento de aplicações como DB2 Express-C, da mesma formaque o Visual Studio 2003, da Micro-soft. Um driver de acesso compatí-vel com o ambiente de desenvolvi-mento 1.1 está disponível no produ-to. A documentação não é tão com-pleta como deveria, mas o usuárioconsegue as informações, em in-glês, pesquisando no site da IBM.

CONJUNTONo conjunto da obra, o DB2 Express-C é um banco de dados que vale apena experimentar, principalmen-te por conta do Centro de Contro-le, que é poderoso, fácil de usar epossui muitos utilitários e ferramen-tas. Além disso, não há limitação denúmero de usuários ou de tamanhopara os bancos de dados nas apli-cações desenvolvidas para a plata-forma. A única restrição existente

DB2 EXPRESS-C 8.2

FABRICANTE

PRÓS

CONTRAS

INSTALAÇÃO

GERENCIAMENTO

FERRAMENTAS

DESENVOLVIMENTO

SEGURANÇA

AVALIAÇÃO TÉCNICA (1)

PREÇO (R$)

CUSTO/BENEFÍCIO

ONDE ENCONTRAR

IBM

Bons utilitários, suporte a máquinas com doisprocessadores ereplicações complexas

Não tem ferramentas de datawarehouse e limita a capacidade dememória

8,4Rápida, com verificaçãode pré-requisitos eprimeiros passos

9,0Permite gerenciar váriasinstâncias do programa,um ou mais bancos,projetos e diagnósticos

8,5Replicação, central detarefas, centro defuncionamento comalertas, centro de dados inteligentes

8,0Em WebSphere Studio,Java, C, C++, Fortran,Rexx, Perl entre outraslinguagens

7,5Replicação de dados entrebancos, usando sistemasde mensagens

8,5

Gratuito

www.info.abril.com.br/download/4435.shtml

(1) Média ponderada considerando os seguintes itens e respectivos pesos:Instalação (10%), Gerenciamento (35%), Ferramentas (35%),Desenvolvimento (10%) e Segurança dos dados (10%).

Visual Explain: ferramentaespecial para a análise gráfica dasconsultas ao banco de dados

é o limite de 4GB para a memóriaRAM. Alguns recursos encontradosnas versões pagas, como ferramen-tas de datawarehouse e drivers pa-ra o banco de dados Informix, nãoacompanham o DB2 Express-C. Masquando esses recursos forem ne-cessários, o usuário poderá adotaruma versão paga do produto semas dores e os custos de migração.

Desenvolvimento:stored procedures emambiente gráfico

038_DB2_EXPRESS 25/02/2006 22:32 Page 40

Page 40: Colecao InfoBanco de Dados

O MYSQL GANHAMÚSCULOS

PREFERIDO PELA TURMA DO LINUX, O BANCODE DADOS INCORPORA NOVAS FUNÇÕES E CORTEJA

O MERCADO CORPORATIVOPOR CARLOS MACHADO, COM LUIZ CRUZ

TESTE/MYSQL

42 < COLEÇÃO INFO

banco de dados de có-digo aberto MySQL te-ve um belo upgrade naversão 5.0, liberada no

final de outubro de 2005. De alter-nativa rápida, eficaz e pouco sofis-ticada para sites simples, o produ-to passou à categoria dos robustos.Com suporte a novas funções, co-mo transações e stored procedures,o banco de dados se propõe a ta-refas mais ambiciosas. Essas mu-danças sinalizam que o MySQL es-tá cultivando músculos para enca-rar o mercado corporativo.

Produzido pela empresa suecaMySQL AB, o MySQL tem uma for-ma de licenciamento duplo. Ousuário pode adotá-lo como pro-duto gratuito, segundo a licençaGPL, mas também tem a opção deadquiri-lo comercialmente, comdireito a suporte e outros benefí-cios. Parte fundamental do cha-mado padrão LAMP — sigla de umconjunto de produtos de códigoaberto formado por Linux, Apa-che, MySQL, PHP/Perl/Python —,o MySQL tem hoje uma enorme

base instalada. A MySQL AB come-morou a marca de mais de 1 mi-lhão de downloads nas três pri-meiras semanas de lançamento daversão 5.0. O número é sem dúvi-da indicativo do grau de interes-se em torno do banco de dados.

MULTIPLATAFORMADesde o início, o MySQL se des-

tacou pela velocidade, que permi-te seu uso em máquinas de recur-sos relativamente modestos. Isso otransformou no sistema preferidodos sites profissionais pequenos emédios. Também contribui para osucesso sua disponibilidade em

O

TESTE/MYSQL

COLEÇÃO INFO > 43

quase todos os siste-mas operacionaismais importantes. Háversões do MySQLpara Windows, Linux,Unix, Solaris, Mac OSX, FreeBSD, HP-UX,IBM AIX e outros. Hátambém versões para plataformasde hardware Intel e AMD, de 32 e64 bits, além dos chips Sparc, Al-pha, PowerPC etc. INFO analisou aversão 5.0.15 do MySQL para Linuxnum servidor Pentium 4 de 3 GHz,rodando a distribuição SUSE 10 de64 bits. Também instalamos o ban-co de dados num computador como Windows XP. Nos dois casos, ainstalação não ofereceu nenhumadificuldade especial.

Algumas das funções que es-tréiam no MySQL 5.0 eram há mui-to tempo reclamadas pelos usuá-

rios. A principal de-las é o suporte atransações. Agora, ogerenciador é capazde processar transa-ções do tipo ACID,obrigatórias em apli-cações de missão crí-

tica. Uma transação, para os nãoiniciados, é uma operação que sófaz sentido se todos os seus pas-sos forem executados. Um exem-plo clássico é a transferência dedinheiro de uma conta bancáriapara outra. Há duas tarefas: debi-tar o valor numa conta e creditá-lo na outra. Se apenas uma das ta-refas é executada, o sistema se tor-na inconsistente. Nos bancos dedados profissionais, o processa-mento de transações garante a in-tegridade de operações desse ti-po. Se, por exemplo, o hardware

Controles: uma só interface para controlar usuários, montar rotinas e verificar carga

MySQL Administrator: interfacegráfica de gerenciamento

FIQUE LIGADO

>Muito utilizado emsites simples, o MySQL5.0 já dá conta deaplicações corportivas

42_BANCO_SQL5-1 25/02/2006 22:33 Page 42

Page 41: Colecao InfoBanco de Dados

O MYSQL GANHAMÚSCULOS

PREFERIDO PELA TURMA DO LINUX, O BANCODE DADOS INCORPORA NOVAS FUNÇÕES E CORTEJA

O MERCADO CORPORATIVOPOR CARLOS MACHADO, COM LUIZ CRUZ

TESTE/MYSQL

42 < COLEÇÃO INFO

banco de dados de có-digo aberto MySQL te-ve um belo upgrade naversão 5.0, liberada no

final de outubro de 2005. De alter-nativa rápida, eficaz e pouco sofis-ticada para sites simples, o produ-to passou à categoria dos robustos.Com suporte a novas funções, co-mo transações e stored procedures,o banco de dados se propõe a ta-refas mais ambiciosas. Essas mu-danças sinalizam que o MySQL es-tá cultivando músculos para enca-rar o mercado corporativo.

Produzido pela empresa suecaMySQL AB, o MySQL tem uma for-ma de licenciamento duplo. Ousuário pode adotá-lo como pro-duto gratuito, segundo a licençaGPL, mas também tem a opção deadquiri-lo comercialmente, comdireito a suporte e outros benefí-cios. Parte fundamental do cha-mado padrão LAMP — sigla de umconjunto de produtos de códigoaberto formado por Linux, Apa-che, MySQL, PHP/Perl/Python —,o MySQL tem hoje uma enorme

base instalada. A MySQL AB come-morou a marca de mais de 1 mi-lhão de downloads nas três pri-meiras semanas de lançamento daversão 5.0. O número é sem dúvi-da indicativo do grau de interes-se em torno do banco de dados.

MULTIPLATAFORMADesde o início, o MySQL se des-

tacou pela velocidade, que permi-te seu uso em máquinas de recur-sos relativamente modestos. Isso otransformou no sistema preferidodos sites profissionais pequenos emédios. Também contribui para osucesso sua disponibilidade em

O

TESTE/MYSQL

COLEÇÃO INFO > 43

quase todos os siste-mas operacionaismais importantes. Háversões do MySQLpara Windows, Linux,Unix, Solaris, Mac OSX, FreeBSD, HP-UX,IBM AIX e outros. Hátambém versões para plataformasde hardware Intel e AMD, de 32 e64 bits, além dos chips Sparc, Al-pha, PowerPC etc. INFO analisou aversão 5.0.15 do MySQL para Linuxnum servidor Pentium 4 de 3 GHz,rodando a distribuição SUSE 10 de64 bits. Também instalamos o ban-co de dados num computador como Windows XP. Nos dois casos, ainstalação não ofereceu nenhumadificuldade especial.

Algumas das funções que es-tréiam no MySQL 5.0 eram há mui-to tempo reclamadas pelos usuá-

rios. A principal de-las é o suporte atransações. Agora, ogerenciador é capazde processar transa-ções do tipo ACID,obrigatórias em apli-cações de missão crí-

tica. Uma transação, para os nãoiniciados, é uma operação que sófaz sentido se todos os seus pas-sos forem executados. Um exem-plo clássico é a transferência dedinheiro de uma conta bancáriapara outra. Há duas tarefas: debi-tar o valor numa conta e creditá-lo na outra. Se apenas uma das ta-refas é executada, o sistema se tor-na inconsistente. Nos bancos dedados profissionais, o processa-mento de transações garante a in-tegridade de operações desse ti-po. Se, por exemplo, o hardware

Controles: uma só interface para controlar usuários, montar rotinas e verificar carga

MySQL Administrator: interfacegráfica de gerenciamento

FIQUE LIGADO

>Muito utilizado emsites simples, o MySQL5.0 já dá conta deaplicações corportivas

42_BANCO_SQL5-1 25/02/2006 22:33 Page 42

Page 42: Colecao InfoBanco de Dados

TESTE/MYSQL

44 < COLEÇÃO INFO

falha no meio de uma operação,ela é completamente anulada. Aprimeira regra do modelo ACID éexatamente esta: ou tudo ou na-da. O MySQL 5.0 também suportatransações distribuídas, ou seja,transações complexas envolvendomúltiplos bancos de dados locali-zados em diferentes ambientes.

STORED PROCEDURESOutra novidade do MySQL 5.0 sãoas stored procedures. Uma storedprocedure — literalmente: rotinaarmazenada — é um programa, ouseqüência de comandos, guardadofisicamente no servidor. Uma sériede consultas complexas roda maisrápido como uma stored proced-ure do que uma lista de comandos,executados um a um, a partir deum computador cliente. As proced-ures também podem ser dispara-das dentro de uma transação.

Os novos recursos do MySQL jáexistem há muito tempo nos gran-des gerenciadores de bancos dedados. A MySQL AB sempre negouque compete com Oracle, IBM eMicrosoft. Mas, ao incorporar osnovos recursos, a empresa dá for-tes indicações de que está de olhono mercado corporativo. Outro si-nal evidente disso está no MySQLMigration Toolkit, conjunto de fer-ramentas oferecido para incenti-var a migração dos bancos de da-dos concorrentes para o MySQL.Obviamente, o produto ainda nãotem cacife, nem técnico nem co-

MYSQL 5.0FABRICANTE

PRÓ

CONTRA

INSTALAÇÃO

RECURSOS

FERRAMENTAS

AVALIAÇÃO TÉCNICA (1)

PREÇO LICENÇA

CUSTO/BENEFÍCIO

ONDE ENCONTRAR

MySQL AB

É multiplataforma: temversões para Windows,Linux, Unix

Não tem suporte a XML

8,6Simples, não oferece nenhumadificuldade especial

8,5As novas funções aumentam muito o poderde ação do programa

7,5O MySQL Administratoroferece poucos recursosgráficos

8,3Comparado com o JBoss,foi, em média, 3,6 vezesmais rápido no tempo deresposta

GratuitoGPL

www.info.abril.com.br/download/3641.shtml

(1) Média ponderada considerando os seguintes itens: Instalação (30%), Recursos (50%), Ferramentas (20%).

mercial, para encarar os gigantesdo setor. Mas, como se diz, estátentando comer pelas beiradas. Umrecurso importante que o produ-to ainda está devendo aos usuáriosé o suporte a XML.

O fabricante do MySQL tambémoferece o MySQL Administrator, umaferramenta visual para gerenciar ban-cos de dados e usuários. O Adminis-trator deve ser obtido num downloadà parte. Essa ferramenta permite criare alterar bancos de dados, montarstored procedures e verificar infor-mações de carga do sistema. Embo-ra execute bem as funções a que sepropõe, ainda não aproveita bem osrecursos da interface gráfica.

42_BANCO_SQL5-1 25/02/2006 22:34 Page 44

Page 43: Colecao InfoBanco de Dados

MISSÃO CRÍTICA ÉPARA POSTGRE

TESTE/POSTGRESQL

COLEÇÃO INFO > 47

elho conhecido das co-munidades de softwarelivre, o PostgreSQL de-morou um pouco mais do

que o MySQL para se popularizar, pro-vavelmente por ser focado em aplica-ções críticas. Muitos dos recursos queo MySQL apresenta na versão 5.0, taiscomo o suporte a gatilhos, stored pro-cedures e transações, já fazem partedo PostgreSQL há tempos. O impulsoveio com a versão para Windows e acolaboração de empresas como Sun,Fujitsu e Pervasive Software. Com ex-periência no desenvolvimento e em-pacotamento de versões comerciaisafinadas com as necessidades das cor-porações, elas estãocolocando terno egravata no produto.

O PostgreSQLtambém foi vítimados rótulos lento epesado. Pode-se di-zer que o logotipodo produto — umelefante azul — atéreforce essa ima-gem. Mas, debru-çando-se sobre a

versão 8.1, maisrecente, logo sepercebe que is-so não é verdade.

A distribuição decódigos binários do Post-greSQL 8.1 prontos para ins-talar está disponível apenas para Li-nux ou Windows. Para outras plata-formas Unix, é preciso baixar o códi-go-fonte e compilar o sistema.

No Linux, o PostgreSQL vem comopacote binário na maior parte das dis-tribuições, mas para quem gosta deaventura e tem bastante tempo, po-de baixar o código-fonte e compilar.

No ambiente Windows, o progra-

V

PostgreSQL: o pgAdmin faz a administração do banco

VERSÃO 8.1 CONTA COM DRIVERS E CAMADAS DE SOFTWARE QUE GARANTEM SUA CONECTIVIDADE

POR HELIO SILVA

047_POSTGRES 25/02/2006 22:39 Page 47

Page 44: Colecao InfoBanco de Dados

TESTE/POSTGRESQL

COLEÇÃO INFO > 49

TESTE/POSTGRESQL

48 < COLEÇÃO INFO

POSTGRESQL 8.1FABRICANTE

PRÓS

CONTRAS

INSTALAÇÃO

GERENCIAMENTO

FERRAMENTAS

DESENVOLVIMENTO

SEGURANÇA

AVALIAÇÃO TÉCNICA (1)

PREÇO LICENÇA

CUSTO/BENEFÍCIO

ONDE ENCONTRAR

PostgreSQL Global Development Group

Inclui replicação de dados,processamento paralelo,suporte a 64 bits e aclusters

Falta de suporte nativo aopadrão XML

7,0Fácil e rápida com pacotesbinários e instalador emportuguês

8,5O pgAdmin III dá acesso atodos os recursos dobanco, mas está só eminglês

8,5Conta com ferramentas degeoprocessamento,administração, tunning edatawarehouse na web

8,0Pode ser feito em Java,Perl, PHP, TCL, C, C++ equalquer linguagem comconectores de acessocomo o .Net

8,5Dispõe de criptografiapara protegerarmazenamento, tráfego,atributos e autenticação

8,3

GratuitoBSD

www.info.abril.com.br/download/4119.shtml

(1) Média ponderada considerando os seguintes itens e respectivos pesos:Instalação (10%), Gerenciamento (35%), Ferramentas (35%),Desenvolvimento (10%) e Segurança dos dados (10%).

ma pode ser instalado de duas for-mas: utilizando o ambiente Cygwin,que permite, com certas restrições,utilizar os programas escritos paraLinux, ou diretamente no WindowsXP. O Cygwin é mais indicado paraquem tem experiência no uso doPostgreSQL em ambiente Linux. Jáa versão pronta para o Windows émuito robusta, fácil e não decepcio-na. A instalação no Windows podeser feita em português, mas, no fi-nal, o software de administraçãopgAdmin se apresentará em inglês.

RECURSOSO PostgreSQL 8.1 chega bem abaste-cido de drivers e camadas de soft-ware que garantemsua conectividade comferramentas de criaçãoe extração de relató-rios além, é claro, de li-gá-lo com as lingua-gens de programaçãopopulares como Java,Visual Basic e Delphi. A plataforma.Net da Microsoft também não fica defora, contando com o data providerNpgSQL. É natural que o banco man-tenha conexões privilegiadas com seuspares do software livre, como as lin-guagens Phyton, Perl, TCL e PHP.

Se para escrever programas defront-end existem tantas opções, omesmo pode se dizer das linguagensdisponíveis para desenvolver funçõese processos que rodam dentro dobanco. As opções são: PL/Perl,PL/TCL, PL/Java e o PL/pgSQL do

próprio PostgreSQL, que equivale aoPL/SQL da Oracle. Essa diversidadefacilita a vida de quem já é versadoem uma dessas linguagens.

Além do pacote básico, é sem-pre bom dar uma checada em si-tes que mantém projetos ligadosao PostgreSQL. Um deles é o sitepgfoundry.org, onde podem serencontrados utilitários e até mes-mo sistemas completos.

Uma ausência sentida é o suportenativo ao XML. Em aplicações comtrocas de dados entre sistemas hete-rogêneos, como em operações detransmissão eletrônica de pedidos efaturas entre empresas ou intercâm-bio de dados bancários, é de se es-

perar que existam di-ferentes bancos atuan-do do outro lado, e omercado aponta parao XML como melhorforma de garantir es-sa conversa. Quemaderir ao PostgreSQL

terá de escrever suas interfaces XML.

BOA HERANÇAUm velho dilema da crescente co-munidade de programadores quetrabalham com a abordagem daorientação a objeto (OOP) é que elesraciocinam e projetam seus sistemaspensando em objetos e, no entanto,têm de lidar com bancos de dadosrelacionais na hora de depositar seusdados. Eles gostariam de ter bancosde dados que entendessem um pou-co mais sua abordagem. O Post-

greSQL faz um pequeno esforço nes-se sentido, implementando uma daspropriedades da orientação a obje-to que é a herança.

Para compreender a aplicação daherança em um banco de dados, ima-gine o desenvolvimento de um sis-tema para uma loja de barcos. A pri-meira providência é criar a tabelaBarcos com todas as característicascomuns a qualquer barco (código,preço, descrição etc.). Em seguida,cria-se uma tabela filha que trata es-pecificamente de veleiros e que her-da as características de Barcos, acres-centando-se os atributos específicosde um veleiro como a altura do mas-tro e o tipo de vela. Por fim, cria-seuma tabela Lanchas, que também éfilha de Barcos, adicionando-se a elaatributos como potência do motor.Alterações em Barcos, como a cria-ção do atributo Preço Promocional,por exemplo, automaticamente serefletem em Veleiros e Lanchas.

SINCRONIZAÇÃOUsando-se um dos seus diversos sis-temas de replicação, o PostgreSQLpode ser aplicado em empresas depequeno e médio porte que têm ne-cessidade de sincronização de dadosentre matriz e filiais.

Além da sincronização, o bancode dados tem evoluído em recursospara resistir a falhas e operar commúltiplos processadores, o que otorna uma boa opção para os pro-jetos de missão crítica. Possui tam-bém a habilidade de lidar com enor-

FIQUE LIGADO

>Recursos poderososindicam o PostgreSQLpara as aplicações demissão crítica

mes bases com respostas em tempoaceitável, requisito básico para siste-mas de datawarehouse, cujos bancosde dados podem chegar facilmenteaos terabytes. Esse tipo de sistemaestá na ordem do dia das empresasgraças à redução dos custos de pro-cessamento e armazenamento, além,é claro, da necessidade constante debuscar competitividade.

047_POSTGRES 25/02/2006 22:39 Page 48

Page 45: Colecao InfoBanco de Dados

TESTE/POSTGRESQL

COLEÇÃO INFO > 49

TESTE/POSTGRESQL

48 < COLEÇÃO INFO

POSTGRESQL 8.1FABRICANTE

PRÓS

CONTRAS

INSTALAÇÃO

GERENCIAMENTO

FERRAMENTAS

DESENVOLVIMENTO

SEGURANÇA

AVALIAÇÃO TÉCNICA (1)

PREÇO LICENÇA

CUSTO/BENEFÍCIO

ONDE ENCONTRAR

PostgreSQL Global Development Group

Inclui replicação de dados,processamento paralelo,suporte a 64 bits e aclusters

Falta de suporte nativo aopadrão XML

7,0Fácil e rápida com pacotesbinários e instalador emportuguês

8,5O pgAdmin III dá acesso atodos os recursos dobanco, mas está só eminglês

8,5Conta com ferramentas degeoprocessamento,administração, tunning edatawarehouse na web

8,0Pode ser feito em Java,Perl, PHP, TCL, C, C++ equalquer linguagem comconectores de acessocomo o .Net

8,5Dispõe de criptografiapara protegerarmazenamento, tráfego,atributos e autenticação

8,3

GratuitoBSD

www.info.abril.com.br/download/4119.shtml

(1) Média ponderada considerando os seguintes itens e respectivos pesos:Instalação (10%), Gerenciamento (35%), Ferramentas (35%),Desenvolvimento (10%) e Segurança dos dados (10%).

ma pode ser instalado de duas for-mas: utilizando o ambiente Cygwin,que permite, com certas restrições,utilizar os programas escritos paraLinux, ou diretamente no WindowsXP. O Cygwin é mais indicado paraquem tem experiência no uso doPostgreSQL em ambiente Linux. Jáa versão pronta para o Windows émuito robusta, fácil e não decepcio-na. A instalação no Windows podeser feita em português, mas, no fi-nal, o software de administraçãopgAdmin se apresentará em inglês.

RECURSOSO PostgreSQL 8.1 chega bem abaste-cido de drivers e camadas de soft-ware que garantemsua conectividade comferramentas de criaçãoe extração de relató-rios além, é claro, de li-gá-lo com as lingua-gens de programaçãopopulares como Java,Visual Basic e Delphi. A plataforma.Net da Microsoft também não fica defora, contando com o data providerNpgSQL. É natural que o banco man-tenha conexões privilegiadas com seuspares do software livre, como as lin-guagens Phyton, Perl, TCL e PHP.

Se para escrever programas defront-end existem tantas opções, omesmo pode se dizer das linguagensdisponíveis para desenvolver funçõese processos que rodam dentro dobanco. As opções são: PL/Perl,PL/TCL, PL/Java e o PL/pgSQL do

próprio PostgreSQL, que equivale aoPL/SQL da Oracle. Essa diversidadefacilita a vida de quem já é versadoem uma dessas linguagens.

Além do pacote básico, é sem-pre bom dar uma checada em si-tes que mantém projetos ligadosao PostgreSQL. Um deles é o sitepgfoundry.org, onde podem serencontrados utilitários e até mes-mo sistemas completos.

Uma ausência sentida é o suportenativo ao XML. Em aplicações comtrocas de dados entre sistemas hete-rogêneos, como em operações detransmissão eletrônica de pedidos efaturas entre empresas ou intercâm-bio de dados bancários, é de se es-

perar que existam di-ferentes bancos atuan-do do outro lado, e omercado aponta parao XML como melhorforma de garantir es-sa conversa. Quemaderir ao PostgreSQL

terá de escrever suas interfaces XML.

BOA HERANÇAUm velho dilema da crescente co-munidade de programadores quetrabalham com a abordagem daorientação a objeto (OOP) é que elesraciocinam e projetam seus sistemaspensando em objetos e, no entanto,têm de lidar com bancos de dadosrelacionais na hora de depositar seusdados. Eles gostariam de ter bancosde dados que entendessem um pou-co mais sua abordagem. O Post-

greSQL faz um pequeno esforço nes-se sentido, implementando uma daspropriedades da orientação a obje-to que é a herança.

Para compreender a aplicação daherança em um banco de dados, ima-gine o desenvolvimento de um sis-tema para uma loja de barcos. A pri-meira providência é criar a tabelaBarcos com todas as característicascomuns a qualquer barco (código,preço, descrição etc.). Em seguida,cria-se uma tabela filha que trata es-pecificamente de veleiros e que her-da as características de Barcos, acres-centando-se os atributos específicosde um veleiro como a altura do mas-tro e o tipo de vela. Por fim, cria-seuma tabela Lanchas, que também éfilha de Barcos, adicionando-se a elaatributos como potência do motor.Alterações em Barcos, como a cria-ção do atributo Preço Promocional,por exemplo, automaticamente serefletem em Veleiros e Lanchas.

SINCRONIZAÇÃOUsando-se um dos seus diversos sis-temas de replicação, o PostgreSQLpode ser aplicado em empresas depequeno e médio porte que têm ne-cessidade de sincronização de dadosentre matriz e filiais.

Além da sincronização, o bancode dados tem evoluído em recursospara resistir a falhas e operar commúltiplos processadores, o que otorna uma boa opção para os pro-jetos de missão crítica. Possui tam-bém a habilidade de lidar com enor-

FIQUE LIGADO

>Recursos poderososindicam o PostgreSQLpara as aplicações demissão crítica

mes bases com respostas em tempoaceitável, requisito básico para siste-mas de datawarehouse, cujos bancosde dados podem chegar facilmenteaos terabytes. Esse tipo de sistemaestá na ordem do dia das empresasgraças à redução dos custos de pro-cessamento e armazenamento, além,é claro, da necessidade constante debuscar competitividade.

047_POSTGRES 25/02/2006 22:39 Page 48

Page 46: Colecao InfoBanco de Dados

FIREBIRD POUPAA MÁQUINA

A VERSÃO 1.5.3 TEM RECURSOS PODEROSOS E DISPENSAEQUIPES DE MANUTENÇÃO

POR HELIO SILVA

TESTE/FIREBIRD

50 < COLEÇÃO INFO

banco de dados Firebirdestá cada vez melhor,acompanhando os avan-ços dos concorrentes de

código aberto MySQL e PostgreSQL.Nascido de uma iniciativa da Borlandde abrir o código do seu banco In-terbase 6, o Firebird chegou à ver-são 1.5.3 bem mudado, graças ao tra-balho do IBPhoenix. Esse grupo dedesenvolvedores já estabilizou a tra-dução do código da linguagem C pa-ra a C++, o que deve permitir ao pro-

duto alçar vôos mais altos entre asérie de versões 1.5.x e a 2.0.

No teste do INFOLAB, utilizamos oFirebird 1.5.3 Classic Server, a versãoestável mais recente, rodando numPC com processador Pentium HT de1,3 GHz e 512 MB de memória RAM.

INSTALAÇÃOA instalação é fácil, mas não atuali-za as outras versões previamenteinstaladas. Ao contrário, pede a re-moção de antigas edições de Inter-

O

EMS SQL Manager: interface gráfica elegante para Firebird com jeito de Windows XP

050_FIREBIRD 25/02/2006 22:41 Page 50

Page 47: Colecao InfoBanco de Dados

TESTE/FIREBIRD

COLEÇÃO INFO > 51

base ou Firebird. Aofinal do processodescobre-se que fo-ram criados algunstextos dos manuaisem arquivos texto ePDF e apenas umprograma baseadono velho prompt de comando. Issoporque o pacote básico não trazuma interface gráfica que facilite aadministração do banco. Existe umprojeto de interface gráfica de có-digo aberto chamado FlameRobin(www.flamerobin.org), que no fu-turo deve fazer parte do pacote,mas seu desenvolvimento ainda es-tá em estágio inicial.

INTERFACESDe qualquer forma, o usuário não fi-ca desprovido de interface de geren-ciamento. Pode escolher uma entreas diversas disponíveis no site do IB-Phoenix (www.ibphoenix.com).A maior parte delas é sharewarecom versões livres sem algumasfuncionalidades.

No teste do INFOLAB, utilizamostrês interfaces de ge-renciamento: a DB-Manager (www.info.abril.com.br/down-load/3682.shtml), daDBTools, a IBExpert(www.info.abril.com.

IBExpert: traz recursosarrojados, como análisede performance

br/download/4047.shtml), da H-Ksoftware, e a EMS SQL Manager(www.info.abril.com.br/down-load/4453.shtml), da EMS DatabaseManagement Solutions.

O gerenciador EMS SQL Managerempresta ao Firebird uma interfa-ce elegante e funcional, com apa-rência bem próxima do WindowsXP, usando o mesmo tipo de íco-nes. Na versão gratuita, ele já pro-vê todos os recursos necessários àadministração. Já o brasileiro DBMa-nager tem como vantagem o su-porte em português.

Se a intenção for adquirir umaferramenta para ir além das ativi-dades normais de administração,então vale a pena dar uma boa olha-da no IBExpert em sua versão co-mercial que, além da interface mais

completa para admi-nistração, conta comrecursos arrojadoscomo análise de per-formance e até pes-quisas OLAP. Relem-brando, por meio do

FIQUE LIGADO

> Feito para aplicaçõesde médio porte, o Fire-bird oferece baixo cus-to de manutenção

050_FIREBIRD 25/02/2006 22:43 Page 51

Page 48: Colecao InfoBanco de Dados

TESTE/FIREBIRD

COLEÇÃO INFO > 53

TESTE/FIREBIRD

52 < COLEÇÃO INFO

OLAP podem ser criadas visões mul-tidimensionais do banco já agrega-das, os famosos cubos. Esse tipo devisão facilita o desmembramento ea comparação de uma informaçãomensurável, como o faturamento,por exemplo. Com um cubo de fa-turamento fica fácil estabelecer asvendas por tipo de produto, por ti-po de consumidor e por região deforma fácil e rápida.

DRIVERSOutra providência necessária apósa instalação é cuidar da interope-rabilidade com linguagens, gerado-res de relatório e outros bancos dedados. O site do IBPhoenix ajuda,indicando drivers ODBC e camadasde conectividade com Java e .NET.Nem todos são gratuitos e, mesmoos livres, requerem análise do tipode licença de uso.

RECURSOSO esforço de instalação e implanta-ção vale a pena. A exemplo do In-terbase, o Firebird dá conta de apli-cações de médio porte. Seu dife-rencial é rodar em plataformas Win-dows e em muitos sabores de Unix,além de contar com recursos im-portantes, como suporte a transa-ções, gatilhos e stored proceduresdesde sua primeira versão, enquan-to o MySQL só trouxe esses recur-sos na 5.0, a mais recente.

O sistema de transações do Fire-bird é robusto e admite os aninha-mentos (nested transactions), quepermitem a aplicação de novas re-gras quando uma transação encon-tra um erro em um determinadoponto de seu processamento, dan-do alternativas à conclusão da tran-sação sem que se torne necessáriodesfazer toda a operação. As tran-sações aninhadas permitem a apli-cação de regras complexas de ne-gócio dentro do banco, eliminandoa programação na interface.

A transferência de lógica de ne-

gócio para o banco de dados flexi-biliza as opções de escolha de lin-guagens e ambientes de programa-ção para interfacear com o banco,uma vez que simplifica a quantida-de de regras que devem estar pre-sentes no código. Esse aspecto éimportante num mundo em que obanco tem de atender um servidorweb, uma aplicação .Net e outraslinguagens, mantendo sempre acoerência dos dados que lhe são in-seridos ou requisitados.

Outro ponto forte do Firebird ésua manutenção facilitada, pratica-mente dispensando a presença deum DBA dedicado a atividades deajustes de desempenho do bancoe controle de crescimento da base.A atividade de manutenção se re-sume ao backup e, eventualmente,uma recuperação de dados. Bancos

mais sofisticados como PostgreSQL,MS SQL Server, Oracle e DB2 entreoutros demandam ajustes especia-lizados durante seu ciclo de implan-tação, crescimento e produção.

O baixo custo de manutenção tor-na o Firebird uma boa opção paraempresas que não podem contarcom uma equipe especializada pa-ra dar suporte a suas aplicações. Aportabilidade do banco de dadosentre múltiplas plataformas o tornatambém indicado para aplicaçõesque operam com atualizações debases off line e que tenham neces-sidade de integração centralizada.

Quem pretende adotar o Fire-bird no Brasil, pode contar com oapoio de uma comunidade forte ecolaborativa, que pode ser conta-tada pelo portal Firebase (www.firebase.com.br).

FIREBIRD 1.5.3 CLASSIC SERVERFABRICANTE

PRÓS

CONTRA

INSTALAÇÃO

GERENCIAMENTO

FERRAMENTAS

DESENVOLVIMENTO

SEGURANÇA

AVALIAÇÃO TÉCNICA (1)

PREÇOLICENÇA

CUSTO/BENEFÍCIO

ONDE ENCONTRAR

FirebirdSQL Foundation

Conta com recursospoderosos, como views,transações concorrentes e gatilhos

Depende de aplicativos deterceiros para aadministração

6,5Bem traduzida, mas comlongas explicações queprecisam ser lidas

6,5Não tem interface gráficade administração,exigindo ferramentasauxiliares

8,5Ferramentas CASE, deadministração e até OLAPpodem ser encontradasna web

8,0Muito bom para Delphi,com abertura para PHP,Perl, Java e .NET.

6,5Não tem criptografia

7,4

GratuitoIPL

www.info.abril.com.br/download/2108.

(1) Média ponderada considerando os seguintes itens e respectivos pesos: Instalação (10%), Gerenciamento (35%), Ferramentas (35%),Desenvolvimento (10%) e Segurança dos dados (10%).

DBManager: produzida no Brasil, a interface dá suporte ao Firebird em português

050_FIREBIRD 25/02/2006 22:44 Page 52

Page 49: Colecao InfoBanco de Dados

TESTE/FIREBIRD

COLEÇÃO INFO > 53

TESTE/FIREBIRD

52 < COLEÇÃO INFO

OLAP podem ser criadas visões mul-tidimensionais do banco já agrega-das, os famosos cubos. Esse tipo devisão facilita o desmembramento ea comparação de uma informaçãomensurável, como o faturamento,por exemplo. Com um cubo de fa-turamento fica fácil estabelecer asvendas por tipo de produto, por ti-po de consumidor e por região deforma fácil e rápida.

DRIVERSOutra providência necessária apósa instalação é cuidar da interope-rabilidade com linguagens, gerado-res de relatório e outros bancos dedados. O site do IBPhoenix ajuda,indicando drivers ODBC e camadasde conectividade com Java e .NET.Nem todos são gratuitos e, mesmoos livres, requerem análise do tipode licença de uso.

RECURSOSO esforço de instalação e implanta-ção vale a pena. A exemplo do In-terbase, o Firebird dá conta de apli-cações de médio porte. Seu dife-rencial é rodar em plataformas Win-dows e em muitos sabores de Unix,além de contar com recursos im-portantes, como suporte a transa-ções, gatilhos e stored proceduresdesde sua primeira versão, enquan-to o MySQL só trouxe esses recur-sos na 5.0, a mais recente.

O sistema de transações do Fire-bird é robusto e admite os aninha-mentos (nested transactions), quepermitem a aplicação de novas re-gras quando uma transação encon-tra um erro em um determinadoponto de seu processamento, dan-do alternativas à conclusão da tran-sação sem que se torne necessáriodesfazer toda a operação. As tran-sações aninhadas permitem a apli-cação de regras complexas de ne-gócio dentro do banco, eliminandoa programação na interface.

A transferência de lógica de ne-

gócio para o banco de dados flexi-biliza as opções de escolha de lin-guagens e ambientes de programa-ção para interfacear com o banco,uma vez que simplifica a quantida-de de regras que devem estar pre-sentes no código. Esse aspecto éimportante num mundo em que obanco tem de atender um servidorweb, uma aplicação .Net e outraslinguagens, mantendo sempre acoerência dos dados que lhe são in-seridos ou requisitados.

Outro ponto forte do Firebird ésua manutenção facilitada, pratica-mente dispensando a presença deum DBA dedicado a atividades deajustes de desempenho do bancoe controle de crescimento da base.A atividade de manutenção se re-sume ao backup e, eventualmente,uma recuperação de dados. Bancos

mais sofisticados como PostgreSQL,MS SQL Server, Oracle e DB2 entreoutros demandam ajustes especia-lizados durante seu ciclo de implan-tação, crescimento e produção.

O baixo custo de manutenção tor-na o Firebird uma boa opção paraempresas que não podem contarcom uma equipe especializada pa-ra dar suporte a suas aplicações. Aportabilidade do banco de dadosentre múltiplas plataformas o tornatambém indicado para aplicaçõesque operam com atualizações debases off line e que tenham neces-sidade de integração centralizada.

Quem pretende adotar o Fire-bird no Brasil, pode contar com oapoio de uma comunidade forte ecolaborativa, que pode ser conta-tada pelo portal Firebase (www.firebase.com.br).

FIREBIRD 1.5.3 CLASSIC SERVERFABRICANTE

PRÓS

CONTRA

INSTALAÇÃO

GERENCIAMENTO

FERRAMENTAS

DESENVOLVIMENTO

SEGURANÇA

AVALIAÇÃO TÉCNICA (1)

PREÇOLICENÇA

CUSTO/BENEFÍCIO

ONDE ENCONTRAR

FirebirdSQL Foundation

Conta com recursospoderosos, como views,transações concorrentes e gatilhos

Depende de aplicativos deterceiros para aadministração

6,5Bem traduzida, mas comlongas explicações queprecisam ser lidas

6,5Não tem interface gráficade administração,exigindo ferramentasauxiliares

8,5Ferramentas CASE, deadministração e até OLAPpodem ser encontradasna web

8,0Muito bom para Delphi,com abertura para PHP,Perl, Java e .NET.

6,5Não tem criptografia

7,4

GratuitoIPL

www.info.abril.com.br/download/2108.

(1) Média ponderada considerando os seguintes itens e respectivos pesos: Instalação (10%), Gerenciamento (35%), Ferramentas (35%),Desenvolvimento (10%) e Segurança dos dados (10%).

DBManager: produzida no Brasil, a interface dá suporte ao Firebird em português

050_FIREBIRD 25/02/2006 22:44 Page 52

Page 50: Colecao InfoBanco de Dados

TESTE/ACCESS

COLEÇÃO INFO > 55

TESTE/ACCESS

54 < COLEÇÃO INFO

terface é realmente mais prática. Comela, será possível realizar mais tare-fas com menos cliques na tela. Masos usuários vão estranhar bastante.

FIM DOS MENUSO beta 1 do novo Office (o nome Of-fice 12 não é definitivo) traz os apli-cativos Excel, Word, PowerPoint, Ac-cess e Outlook, além de alguns pro-gramas auxiliares, como o InfoPath,usado para criar formulários emXML. O que mais chama a atençãoé a nova organização visual.

A idéia da Microsoft é que, commais e mais recursos embutidos emseus diferentes programas, estavadifícil para os usuários do Office en-contrar o que procuravam numa ár-vore de menus e submenus cadavez mais complexa.

OPÇÕES NOS PAINÉISO Office 12 tenta resolver o problemado excesso de comandos nos menuseliminando o mal pela raiz. Há um úni-co menu horizontal no alto da tela.Quando o usuário clica num dos itens,em vez de se abrir um submenu, apa-rece um painel com botões, ícones eoutros elementos que acionam co-mandos ou acrescentam coisas ao do-cumento. Está escrevendo um texto?O painel, com todos os comandos ne-cessários para a função, aparece. Vaiinserir uma imagem? Clique em Inse-rir na barra superior. Um painel quepermite inserir não só a imagem, mastambém planilhas, símbolos e qual-quer outra coisa, é exibido.

Note que o usuário não mais pre-cisa chamar uma caixa de diálogo de-pois de passar por vários menus. Bas-ta alterar o que quer diretamente nopainel, que fica na parte superior datela e sempre muda para adequar-seà tarefa sendo realizada. Coisas co-mo formatação de texto e dimensõesde figuras e links para páginas da web,por exemplo, podem ser definidasnesse painel superior. Em muitas si-tuações, o painel apropriado é exibi-do automaticamente. Por exemplo,ao clicar num gráfico, um painel depropriedades da imagem aparece.

FORMATOS DA GALERIAO Access e os outros programas doOffice passam a trabalhar extensa-mente com galerias. Trata-se de con-juntos predefinidos de formataçõesou propriedades, como, por exemplo,o posicionamento de uma imagemem um texto. Os padrões mais co-muns ou freqüentemente usados fi-cam disponíveis para uso imediato.Basta o usuário clicar sobre a repre-sentação gráfica do resultado paraque o conjunto de parâmetros sejaaplicado. Mas as tradicionais caixasde diálogo continuam disponíveis.

OFFICE LIVEComo já acontecia nas versões ante-riores, muitas das novidades do Offi-ce 12 são voltadas ao público empre-sarial. Uma delas é a integração comos serviços online que a Microsoft vemchamando de Office Live. Quando es-ses serviços estiverem disponíveis, os

O ACCESS ENTRAEM REFORMA

UMA MUDANÇA DRÁSTICA NA INTERFACE COM O USUÁRIOÉ A PRINCIPAL NOVIDADE DO OFFICE 12, DA MICROSOFT

POR PAULO SILVESTRE

interface baseada emmenus já é tão familiaraos usuários do Windowsque pode parecer teme-

rário substituí-la por outra. Mas é is-so que a Microsoft está fazendo como banco de dados Access e os demaisintegrantes do Office, seu pacote deaplicativos para escritório. O Office 12,nova versão com lançamento previs-

to para o fim de 2006, leva adianteuma tendência que já havia se esbo-çado nos betas do Windows Vista. Noprimeiro beta do Office 12, analisadopelo INFOLAB, os menus desparece-ram e deram lugar a uma interfacecom o usuário radicalmente diferen-te. A promessa é que, com isso, o soft-ware ficará mais fácil de usar. A ava-liação do INFOLAB é que a nova in-

A

Access 12: a interface substitui os vários menus por um menu horizontal no alto

054_ACCESS 25/02/2006 23:04 Page 54

Page 51: Colecao InfoBanco de Dados

TESTE/ACCESS

COLEÇÃO INFO > 55

TESTE/ACCESS

54 < COLEÇÃO INFO

terface é realmente mais prática. Comela, será possível realizar mais tare-fas com menos cliques na tela. Masos usuários vão estranhar bastante.

FIM DOS MENUSO beta 1 do novo Office (o nome Of-fice 12 não é definitivo) traz os apli-cativos Excel, Word, PowerPoint, Ac-cess e Outlook, além de alguns pro-gramas auxiliares, como o InfoPath,usado para criar formulários emXML. O que mais chama a atençãoé a nova organização visual.

A idéia da Microsoft é que, commais e mais recursos embutidos emseus diferentes programas, estavadifícil para os usuários do Office en-contrar o que procuravam numa ár-vore de menus e submenus cadavez mais complexa.

OPÇÕES NOS PAINÉISO Office 12 tenta resolver o problemado excesso de comandos nos menuseliminando o mal pela raiz. Há um úni-co menu horizontal no alto da tela.Quando o usuário clica num dos itens,em vez de se abrir um submenu, apa-rece um painel com botões, ícones eoutros elementos que acionam co-mandos ou acrescentam coisas ao do-cumento. Está escrevendo um texto?O painel, com todos os comandos ne-cessários para a função, aparece. Vaiinserir uma imagem? Clique em Inse-rir na barra superior. Um painel quepermite inserir não só a imagem, mastambém planilhas, símbolos e qual-quer outra coisa, é exibido.

Note que o usuário não mais pre-cisa chamar uma caixa de diálogo de-pois de passar por vários menus. Bas-ta alterar o que quer diretamente nopainel, que fica na parte superior datela e sempre muda para adequar-seà tarefa sendo realizada. Coisas co-mo formatação de texto e dimensõesde figuras e links para páginas da web,por exemplo, podem ser definidasnesse painel superior. Em muitas si-tuações, o painel apropriado é exibi-do automaticamente. Por exemplo,ao clicar num gráfico, um painel depropriedades da imagem aparece.

FORMATOS DA GALERIAO Access e os outros programas doOffice passam a trabalhar extensa-mente com galerias. Trata-se de con-juntos predefinidos de formataçõesou propriedades, como, por exemplo,o posicionamento de uma imagemem um texto. Os padrões mais co-muns ou freqüentemente usados fi-cam disponíveis para uso imediato.Basta o usuário clicar sobre a repre-sentação gráfica do resultado paraque o conjunto de parâmetros sejaaplicado. Mas as tradicionais caixasde diálogo continuam disponíveis.

OFFICE LIVEComo já acontecia nas versões ante-riores, muitas das novidades do Offi-ce 12 são voltadas ao público empre-sarial. Uma delas é a integração comos serviços online que a Microsoft vemchamando de Office Live. Quando es-ses serviços estiverem disponíveis, os

O ACCESS ENTRAEM REFORMA

UMA MUDANÇA DRÁSTICA NA INTERFACE COM O USUÁRIOÉ A PRINCIPAL NOVIDADE DO OFFICE 12, DA MICROSOFT

POR PAULO SILVESTRE

interface baseada emmenus já é tão familiaraos usuários do Windowsque pode parecer teme-

rário substituí-la por outra. Mas é is-so que a Microsoft está fazendo como banco de dados Access e os demaisintegrantes do Office, seu pacote deaplicativos para escritório. O Office 12,nova versão com lançamento previs-

to para o fim de 2006, leva adianteuma tendência que já havia se esbo-çado nos betas do Windows Vista. Noprimeiro beta do Office 12, analisadopelo INFOLAB, os menus desparece-ram e deram lugar a uma interfacecom o usuário radicalmente diferen-te. A promessa é que, com isso, o soft-ware ficará mais fácil de usar. A ava-liação do INFOLAB é que a nova in-

A

Access 12: a interface substitui os vários menus por um menu horizontal no alto

054_ACCESS 25/02/2006 23:04 Page 54

Page 52: Colecao InfoBanco de Dados

TESTE/ACCESS

56 < COLEÇÃO INFO

passa a não aceitar mais alterações.O Office 12 deve ainda ganhar recur-sos que permitam a transferência dedados, conversas por áudio e por ví-deo entre usuários. Além disso, po-derão trocar mensagens instantâ-neas com colegas com comunicado-res do MSN, da AOL e do Yahoo!.

FORMATOS DE ARQUIVOSO Office 12 destaca a gravação dearquivos em XML com compressãono padrão Zip. O objetivo é facilitara troca de dados com outros apli-cativos, incluindo os que rodam emservidores corporativos. Os forma-tos de arquivos atualmente usadoscontinuarão disponíveis.

Essas mudanças são muito bem-vindas. Até porque, o Access conti-nua o mesmo há dois anos, desdequando foi lançado o Office 2003.Nessa versão, o banco de dados pas-sou a permitir aos desenvolvedo-res a criação de soluções mais so-fisticadas em menor tempo. A inte-gração com a web foi privilegiada.

O conceito de OfficeDeveloper Centerpermitiu o trabalhocom tecnologias co-mo XML e SQL Ser-ver. E o banco de da-dos passou a ter acapacidade de pro-duzir backups.

Access 2003: versãoatual permite incluirvídeo, foto e som

aplicativos poderão interagir com elesvia internet. Há um pacote básico deserviços, que pode atender a uma pe-quena empresa, que estará incluídona licença do Office. Ele oferece, porexemplo, 30 MB num servidor para ahospedagem de um site e cinco con-tas de e-mail com o domínio da em-presa. Outros serviços mais elabora-dos, como gerenciadores online deprojetos e relatórios de despesas, es-tarão disponíveis por assinatura.

COLABORAÇÃO NA EQUIPEO Office 12 também traz melhoriasnas ferramentas de colaboração. Osaplicativos permitem que usuários deum mesmo grupo realizem tarefasem conjunto. Além de poder gravarlocalmente seus documentos, os apli-cativos permitem armazená-los numservidor para acesso coletivo. As atua-lizações feitas remotamente são sin-cronizadas com os arquivos locais, fa-cilitando as revisões. Quando o tra-balho é concluído, um dos autorespode “encerrar” o documento, que

054_ACCESS 25/02/2006 23:05 Page 56

Page 53: Colecao InfoBanco de Dados

TESTE/INTERFACES

COLEÇÃO INFO > 57

ADMINISTRAÇÃOÉ TUDO

MERGULHE NAS INTERFACES E DESCUBRA RECURSOS BACANAS DO DB2 E DO SQL SERVER 2005

POR NIVALDO FORESTI

m sistema de banco dedados não é nada sem asua parte de administra-ção. Sem ela, teriamos de

voltar a época em que comandos commais de duas linhas precisavam ser di-gitados para criar um campo em umatabela. Além disso, controlar índices,utilização de campos e consumo dememória continuaria impensável em

bancos de dados para pequenas e mé-dias empresas. Para a alegria geral dosusuarios, as versões Express gratuitasdos grandes competidoras dessa are-na, Microsoft, Oracle e IBM, contêm re-cursos tão poderosos quanto os dosseus irmãos pagos. Aqui vamos explo-rar o mundo administrativo de duasversões Express, a do DB2, da IBM, e ado SQL Server 2005, da Microsoft.

U

Centro de Controle: caixas de diálogo e assistentes conduzem o usuario

057_INTERF_ADMINIS 25/02/2006 23:06 Page 57

Page 54: Colecao InfoBanco de Dados

TESTE/INTERFACES

COLEÇÃO INFO > 59

TESTE/INTERFACES

58 < COLEÇÃO INFO

te aqui. Existe um debate intenso en-tre os especialistas para definir on-de essas regras devem existir, se ca-dastradas nos campos das tabelas(restrições), nos programas de vali-dação das aplicações ou em servido-res específicos para regras de negó-cio. Para você ter paz de espírito, éaconselhável usar as restrições emcampos, para que no futuro seus da-dos se mostrem inúteis. Outro deta-lhe importante é que a forma de ca-dastrar as restrições não é encontra-da na documentação. Foi necessáriopesquisar exemplos na internet pa-ra descobrir como fazer.

JANELA DE ERROSFinalmente, há alguns recursos e fun-cionalidades interessantes nesse pro-cesso. Primeiro, você pode voltar aqualquer momento em qualquer pas-so e modificar opções. Segundo, aofinal você pode ver o código SQL ge-rado e salvá-lo para reutilização, mo-dificá-lo ou simplesmente rever oque será feito na criação da tabela.O melhor de tudo é que o DB2 mos-tra uma janela apontandoerros ou com a informa-ção de sucesso durante acriação da tabela.

Um trabalho importan-te realizado nas interfacesde administração são asconsultas (queries). O ad-ministrador ou programa-dor precisa verificar infor-mações, exportar dadospara outros programas e

modificar ou criar novos dados. OCentro de Controle permite escrevere verificar os resultados de uma con-sulta em SQL diretamente na janelaVisualizar comandos. No entanto, me-lhor do que isso é ter o programaguiando-o pelo árduo mundo dos co-mandos SQL. Basta clicar no íconeSQL e um assistente facilitará a cria-ção e execução de sua consulta.

Com mais um clique em Executare Acessar Plano é possível determi-nar o custo desses comandos dentrodo seu programa. Entenda-se porcusto o tempo que cada pedaço de-mora para ser executado. Assim, comalgumas modificações, um progra-ma otimizado será construído ou pro-blemas de desempenho detectados.

Outro procedimento comum eminterfaces de administração são osbackups. Com o Centro de Contro-le dá para fazer backups manuaisou cronogramados de forma sim-ples e prática. Mais um assistente

DB2 EXPRESS-CCom uma interface extremamentesimples e fácil de usar, o Centro deControle programa de administra-ção do DB2 Express-C, encara defrente qualquer ferramenta paga.Clique em qualquer ícone ou me-nu, e uma série de caixas de diálo-go e assistentes o levarão a concluira tarefa desejada.

Para criar suas próprias tabelasno banco de dados de exemplo,basta expandir a árvore de visua-lização existente na janela Todosos Bancos de Dados, clicar na op-ção Tabelas com o botão direito domouse e escolher a opção Criar Ta-belas. Um assistente o levará pe-los sete passos do processo. É im-portante usá-lo, pois recursos co-mo criação de índices, restriçõesaos dados e multidimensões sãotratadas com bastante clareza e naordem correta de uso.

Para adicionar uma coluna na ta-

bela, basta clicar no bo-tão Incluir. Uma janela per-mite criar campos do tipoINT (inteiro) com três ti-pos diferentes, Char (Ca-racteres) com quatro ti-pos diferentes, bináriosincluindo BLOB, quatro ti-pos de campos gráficos,Data, Hora, TIMESTAMP,Decimal, Numérico, Real,ponto flutuante e Doublé.

Caso você deseje incluir vários cam-pos na tabela, clique em Aplicar emvez de OK, assim a janela permane-ce aberta para a inclusão dos demaiscampos.

O usuário pode definir valores-pa-drão para os tipos CHAR, DATE, TIMEe TIMESTAMP. Eles devem ser defi-nidos dentro de aspas simples. Adi-cionalmente, é possível determinaruma fórmula para o preenchimentodo campo. No entanto, em nenhumlugar da documentação foram en-contradas funções, tais como Hoje ouAgora, ou como construir essas fór-mulas para incluir nos campos.

Os passos seguintes são os de es-colher em que espaço a tabela se-rá criada, a definição de que cam-pos serão chaves, as dimensões erestrições. Com as restrições é pos-sível controlar o lixo que irá popu-lar a sua tabela. Você pode impe-dir que valores acima de 10 ou me-nores que 5 sejam preenchidos emuma coluna ou que somente deter-minados textos existam nela.

Uma palavra de aviso é importan-

Centro de tarefas: permiteexecutar programas em lote

Análise de consulta: um clique emAnexar Plano diz o custo do comando

057_INTERF_ADMINIS 25/02/2006 23:10 Page 58

Page 55: Colecao InfoBanco de Dados

TESTE/INTERFACES

COLEÇÃO INFO > 59

TESTE/INTERFACES

58 < COLEÇÃO INFO

te aqui. Existe um debate intenso en-tre os especialistas para definir on-de essas regras devem existir, se ca-dastradas nos campos das tabelas(restrições), nos programas de vali-dação das aplicações ou em servido-res específicos para regras de negó-cio. Para você ter paz de espírito, éaconselhável usar as restrições emcampos, para que no futuro seus da-dos se mostrem inúteis. Outro deta-lhe importante é que a forma de ca-dastrar as restrições não é encontra-da na documentação. Foi necessáriopesquisar exemplos na internet pa-ra descobrir como fazer.

JANELA DE ERROSFinalmente, há alguns recursos e fun-cionalidades interessantes nesse pro-cesso. Primeiro, você pode voltar aqualquer momento em qualquer pas-so e modificar opções. Segundo, aofinal você pode ver o código SQL ge-rado e salvá-lo para reutilização, mo-dificá-lo ou simplesmente rever oque será feito na criação da tabela.O melhor de tudo é que o DB2 mos-tra uma janela apontandoerros ou com a informa-ção de sucesso durante acriação da tabela.

Um trabalho importan-te realizado nas interfacesde administração são asconsultas (queries). O ad-ministrador ou programa-dor precisa verificar infor-mações, exportar dadospara outros programas e

modificar ou criar novos dados. OCentro de Controle permite escrevere verificar os resultados de uma con-sulta em SQL diretamente na janelaVisualizar comandos. No entanto, me-lhor do que isso é ter o programaguiando-o pelo árduo mundo dos co-mandos SQL. Basta clicar no íconeSQL e um assistente facilitará a cria-ção e execução de sua consulta.

Com mais um clique em Executare Acessar Plano é possível determi-nar o custo desses comandos dentrodo seu programa. Entenda-se porcusto o tempo que cada pedaço de-mora para ser executado. Assim, comalgumas modificações, um progra-ma otimizado será construído ou pro-blemas de desempenho detectados.

Outro procedimento comum eminterfaces de administração são osbackups. Com o Centro de Contro-le dá para fazer backups manuaisou cronogramados de forma sim-ples e prática. Mais um assistente

DB2 EXPRESS-CCom uma interface extremamentesimples e fácil de usar, o Centro deControle programa de administra-ção do DB2 Express-C, encara defrente qualquer ferramenta paga.Clique em qualquer ícone ou me-nu, e uma série de caixas de diálo-go e assistentes o levarão a concluira tarefa desejada.

Para criar suas próprias tabelasno banco de dados de exemplo,basta expandir a árvore de visua-lização existente na janela Todosos Bancos de Dados, clicar na op-ção Tabelas com o botão direito domouse e escolher a opção Criar Ta-belas. Um assistente o levará pe-los sete passos do processo. É im-portante usá-lo, pois recursos co-mo criação de índices, restriçõesaos dados e multidimensões sãotratadas com bastante clareza e naordem correta de uso.

Para adicionar uma coluna na ta-

bela, basta clicar no bo-tão Incluir. Uma janela per-mite criar campos do tipoINT (inteiro) com três ti-pos diferentes, Char (Ca-racteres) com quatro ti-pos diferentes, bináriosincluindo BLOB, quatro ti-pos de campos gráficos,Data, Hora, TIMESTAMP,Decimal, Numérico, Real,ponto flutuante e Doublé.

Caso você deseje incluir vários cam-pos na tabela, clique em Aplicar emvez de OK, assim a janela permane-ce aberta para a inclusão dos demaiscampos.

O usuário pode definir valores-pa-drão para os tipos CHAR, DATE, TIMEe TIMESTAMP. Eles devem ser defi-nidos dentro de aspas simples. Adi-cionalmente, é possível determinaruma fórmula para o preenchimentodo campo. No entanto, em nenhumlugar da documentação foram en-contradas funções, tais como Hoje ouAgora, ou como construir essas fór-mulas para incluir nos campos.

Os passos seguintes são os de es-colher em que espaço a tabela se-rá criada, a definição de que cam-pos serão chaves, as dimensões erestrições. Com as restrições é pos-sível controlar o lixo que irá popu-lar a sua tabela. Você pode impe-dir que valores acima de 10 ou me-nores que 5 sejam preenchidos emuma coluna ou que somente deter-minados textos existam nela.

Uma palavra de aviso é importan-

Centro de tarefas: permiteexecutar programas em lote

Análise de consulta: um clique emAnexar Plano diz o custo do comando

057_INTERF_ADMINIS 25/02/2006 23:10 Page 58

Page 56: Colecao InfoBanco de Dados

TESTE/INTERFACES

COLEÇÃO INFO > 61

TESTE/INTERFACES

60 < COLEÇÃO INFO

o leva pelo caminho certo. O DB2Express-C conta ainda com um Con-trole de Replicação que será mui-to útil nas situações em que vocêquer manter seus sistemas em fun-cionamento, mesmo quando hou-ver panes de energia ou outras ca-tástrofes ou para ativar outros apli-cativos quando determinados da-dos são modificados.

Por fim, o Controle de Tarefas per-mite executar programas em lote taiscomo manutenções, exportações dearquivo, importações de dados deoutras aplicações etc.

SQL SERVER 2005 EXPRESSO SQL Server 2005 Express veio subs-tituir o MSDE (Microsoft SQL ServerDesktop Engine). Essa mudança es-tá fazendo bem a todos que usavama versão Express anterior. Foi elimi-nado o Governor do MSDE, que tor-nava mais lenta a aplicação quandoo programa tinha mais de cinco co-

nexões simultâneas, tor-nando o SQL Server Ex-press muito mais usável. Mas existem limitações. Amemória máxima supor-tada é de 1GB de RAM elimitado a somente umprocessador. O tamanhomáximo do banco de da-dos é de 4GB. Além disso,nem todos os recursosexistentes nas versões pa-

gas estão disponíveis, o que inclui oserviço de relatórios (que estará dis-ponível em uma versão avançada doExpress), o serviço de notificação, oserviço de análise, a pesquisa full text,DTS e as facilidades de OLAP (Onli-ne Analytical Processing).

O SQL Management Server Stu-dio Express CTP é a suíte de admi-nistração e desenvolvimento do SQLServer Express Edition que substi-tui o Query Analyser e o EnterpriseManager da versão anterior, alémde trazer várias facilidades. Embo-ra complexa, a ferramenta é únicae integrada para a realização de to-das as tarefas necessárias. Você po-de mudar a estrutura de uma basede dados, realizar consultas e ou-tras tarefas importantes.

Uma série de assistentes e facili-dades fazem do SQL ManagementServer Studio Express uma grandeferramenta para os administradorese programadores. Particularmente,a capacidade de usar e reusar scriptspara a criação ou manutenção dasbases de dados. Além disso, as diver-

sas configurações de visualização per-mitem criar um ambiente único pa-ra cada usuário.

UM CLIQUECriar tabelas e colunas é trabalho pa-ra um clique no mouse. Todas as in-formações se encontram disponíveis,o banco de dados, a tabela, as colu-nas e as todas as propriedades en-volvidas em cada um deles. Os cam-pos suportam os mais variados tipose alguns criados pelo próprio usuá-rio para facilitar a padronização portodo o sistema. Por exemplo, vocêpode criar um campo chamado no-me que tenha um tamanho específi-co e pode ser escolhido em qualquertabela criada. O DB2 também tem es-sa função, mas ela está um pouco de-sorganizada e escondida na ferra-menta de administração.

As consultas podem ser feitas co-mo no QBE, selecionado-se tabelas,campos e opções de filtro, ou escre-vendo-se o comando SQL diretamen-te. Nesse caso, o DB2 é um pouco maisintuitivo para os iniciantes com o seuassistente. Em todas as ja-nelas é possível se realizarfiltros. Os filtros abrem ja-nelas que permitem umacesso mais amigável pa-ra os que estão começan-do no trabalho de progra-mação. Criar índices é fácile intuitivo. Basta clicar nocampo ou na pasta índiceda tabela e criar índices, atémesmo em XML. Além dis-

so, desse menu é possível reorgani-za-los ou recria-los. O mesmo acon-tece com funções e stored procedu-res, todas a um clique do seu mouse.

Outro recurso interessante é o demonitoração. Uma janela específicapermite verificar quem ou que pro-cessos estão consumindo os recur-sos do servidor onde está o SQL Ser-ver Express 2005. Muito útil para diag-nosticar problemas de desempenho.

No geral o programa de adminis-tração é bom de se utilizar. No en-tanto, alguns recursos estão faltan-do. Por exemplo, as tarefas de ma-nutenção se resumem a um assisten-te para backup, pouco para suportaraplicações robustas. Sentimos a fal-ta também de importadores e expor-tadores de dados, o que dificulta aosnovatos migrar dados de outros apli-cativos. Essa função existe, mas so-mente para importar dados previa-mente exportados de alguma tabelado SQL Express.

SQL Express: todos os elementosdisponiveis para criar tabelas

Monitoraçao: verifica os processosque consomem recursos do servidor

057_INTERF_ADMINIS 25/02/2006 23:11 Page 60

Page 57: Colecao InfoBanco de Dados

TESTE/INTERFACES

COLEÇÃO INFO > 61

TESTE/INTERFACES

60 < COLEÇÃO INFO

o leva pelo caminho certo. O DB2Express-C conta ainda com um Con-trole de Replicação que será mui-to útil nas situações em que vocêquer manter seus sistemas em fun-cionamento, mesmo quando hou-ver panes de energia ou outras ca-tástrofes ou para ativar outros apli-cativos quando determinados da-dos são modificados.

Por fim, o Controle de Tarefas per-mite executar programas em lote taiscomo manutenções, exportações dearquivo, importações de dados deoutras aplicações etc.

SQL SERVER 2005 EXPRESSO SQL Server 2005 Express veio subs-tituir o MSDE (Microsoft SQL ServerDesktop Engine). Essa mudança es-tá fazendo bem a todos que usavama versão Express anterior. Foi elimi-nado o Governor do MSDE, que tor-nava mais lenta a aplicação quandoo programa tinha mais de cinco co-

nexões simultâneas, tor-nando o SQL Server Ex-press muito mais usável. Mas existem limitações. Amemória máxima supor-tada é de 1GB de RAM elimitado a somente umprocessador. O tamanhomáximo do banco de da-dos é de 4GB. Além disso,nem todos os recursosexistentes nas versões pa-

gas estão disponíveis, o que inclui oserviço de relatórios (que estará dis-ponível em uma versão avançada doExpress), o serviço de notificação, oserviço de análise, a pesquisa full text,DTS e as facilidades de OLAP (Onli-ne Analytical Processing).

O SQL Management Server Stu-dio Express CTP é a suíte de admi-nistração e desenvolvimento do SQLServer Express Edition que substi-tui o Query Analyser e o EnterpriseManager da versão anterior, alémde trazer várias facilidades. Embo-ra complexa, a ferramenta é únicae integrada para a realização de to-das as tarefas necessárias. Você po-de mudar a estrutura de uma basede dados, realizar consultas e ou-tras tarefas importantes.

Uma série de assistentes e facili-dades fazem do SQL ManagementServer Studio Express uma grandeferramenta para os administradorese programadores. Particularmente,a capacidade de usar e reusar scriptspara a criação ou manutenção dasbases de dados. Além disso, as diver-

sas configurações de visualização per-mitem criar um ambiente único pa-ra cada usuário.

UM CLIQUECriar tabelas e colunas é trabalho pa-ra um clique no mouse. Todas as in-formações se encontram disponíveis,o banco de dados, a tabela, as colu-nas e as todas as propriedades en-volvidas em cada um deles. Os cam-pos suportam os mais variados tipose alguns criados pelo próprio usuá-rio para facilitar a padronização portodo o sistema. Por exemplo, vocêpode criar um campo chamado no-me que tenha um tamanho específi-co e pode ser escolhido em qualquertabela criada. O DB2 também tem es-sa função, mas ela está um pouco de-sorganizada e escondida na ferra-menta de administração.

As consultas podem ser feitas co-mo no QBE, selecionado-se tabelas,campos e opções de filtro, ou escre-vendo-se o comando SQL diretamen-te. Nesse caso, o DB2 é um pouco maisintuitivo para os iniciantes com o seuassistente. Em todas as ja-nelas é possível se realizarfiltros. Os filtros abrem ja-nelas que permitem umacesso mais amigável pa-ra os que estão começan-do no trabalho de progra-mação. Criar índices é fácile intuitivo. Basta clicar nocampo ou na pasta índiceda tabela e criar índices, atémesmo em XML. Além dis-

so, desse menu é possível reorgani-za-los ou recria-los. O mesmo acon-tece com funções e stored procedu-res, todas a um clique do seu mouse.

Outro recurso interessante é o demonitoração. Uma janela específicapermite verificar quem ou que pro-cessos estão consumindo os recur-sos do servidor onde está o SQL Ser-ver Express 2005. Muito útil para diag-nosticar problemas de desempenho.

No geral o programa de adminis-tração é bom de se utilizar. No en-tanto, alguns recursos estão faltan-do. Por exemplo, as tarefas de ma-nutenção se resumem a um assisten-te para backup, pouco para suportaraplicações robustas. Sentimos a fal-ta também de importadores e expor-tadores de dados, o que dificulta aosnovatos migrar dados de outros apli-cativos. Essa função existe, mas so-mente para importar dados previa-mente exportados de alguma tabelado SQL Express.

SQL Express: todos os elementosdisponiveis para criar tabelas

Monitoraçao: verifica os processosque consomem recursos do servidor

057_INTERF_ADMINIS 25/02/2006 23:11 Page 60

Page 58: Colecao InfoBanco de Dados

TUTORIAL/TABELAS

COLEÇÃO INFO > 63

TABELAS SEMMISTÉRIO

UM ROTEIRO ESPERTO PARA ENTENDER CADA ITEM E CRIAR TABELAS COM TOQUE PROFISSIONAL

POR DANILO WITZEL

TUTORIAL/TABELAS

62 < COLEÇÃO INFO

riar tabelas é uma tare-fa muito simples e atéintuitiva. Mas só até cer-to ponto. Montar uma

tabela de um modo que os seus da-dos sejam realmente úteis e confiá-veis exige um bom conhecimentode detalhes, até porque as tabelastêm características peculiares. As-sim, pensando em quem acaba dedesembarcar no mundo dos bancosde dados, vamos tratar aqui de ca-da uma de suas propriedades rele-vantes. Usaremos o banco de dadosAccess como exemplo. Embora al-gumas características sejam própriasdas tabelas do Access, a maioria seaplica a outros pro-gramas do gênero.

TIPO DE DADOS O tipo de dados é apropriedade maisimportante da tabe-la. Quando se criaum campo, o Accessoferece uma lista de

opções na coluna Tipo de Dados. Es-sas opções são comentadas a seguir.■ TEXTO Armazena qualquer tipode caractere. O limite de caracterespode ser definido por quem estácriando a tabela, mas só pode ir até255. Para isso, basta informar o ta-manho desejado na propriedade.■ TAMANHO DO CAMPO Definir olimite aqui é complicado. Você po-de, por exemplo, definir em 50 o ta-manho de um campo que vai arma-zenar a razão social. Na prática, ousuário quer cadastrar uma razãosocial que tem 55 caracteres, nãovai conseguir e dirá que seu progra-ma tem um bug terrível e chamar

Cvocê para consertá-lo somente porcausa desses cinco caracteres. Pa-ra evitar problemas desse tipo, de-fina sempre um número grande —no caso, pode ser 100. O Access nãoreserva espaço para partes não uti-lizadas de um campo texto. Ou se-ja, mesmo que você reserve 100, seo usuário só utilizar 30, o Access sóconsumirá o espaço corresponden-te a 30 caracteres. Não estranhe es-sa observação: há bancos de dadosque usam toda a capacidade docampo, mesmo que esteja vazio. ■ MEMORANDO É idêntico ao tipode dados Texto, mas sua capacida-de é muito maior: até 65 535 carac-teres. Não tem a propriedade Ta-manho do Campo. O campo memo-rando é muito utilizado para arma-zenar observações ou quando sequer guardar muitas informaçõesnum campo só. ■ NÚMERO Destina-se a guardarnúmeros, geralmente utilizados emcálculos matemáticos ou como có-digo de identificação. A proprieda-

de Tamanho doCampo para esse ti-po de dado é tam-bém muito impor-tante. Veja na tabe-la “O tamanho dosnúmeros” o quantocada especificaçãonumérica ocupa em

cada caso. Com essa tabela, vocêpode definir o tamanho correto pa-ra o campo, levando em conta a in-formação que você quer guardar eo espaço em disco que ela usará.

No entanto, mais importante queo tamanho ocupado é a capacida-de do campo numérico. Se, porexemplo, você escolher para umcampo o tipo Número Inteiro, pre-cisa saber de antemão que essecampo não poderá armazenar nú-meros, positivos ou negativos, atécerca de 32700. Seu sistema daráerro se o usuário tentar registrar nocampo o valor 40000. ■ DATA/HORA Usado para guardardata e hora. Note que não é dataou hora. O Access guarda esse tipode dados em 8 bytes. Os limites dedatas vão de 1 de janeiro do ano100 até 31 de dezembro de 9999.Quando você insere apenas a dataneste campo, o Access grava a ho-ra zero (00:00:00) como comple-mento da data. Situação idênticaacontece se você informar apenas

Tipo de Dados:cuidado na escolha daopção salva a tabela

Campo com valores:as opções aparecem nacaixa de combinação

062_GUIA_TAB_ACCESS 25/02/2006 23:15 Page 62

Page 59: Colecao InfoBanco de Dados

TUTORIAL/TABELAS

COLEÇÃO INFO > 63

TABELAS SEMMISTÉRIO

UM ROTEIRO ESPERTO PARA ENTENDER CADA ITEM E CRIAR TABELAS COM TOQUE PROFISSIONAL

POR DANILO WITZEL

TUTORIAL/TABELAS

62 < COLEÇÃO INFO

riar tabelas é uma tare-fa muito simples e atéintuitiva. Mas só até cer-to ponto. Montar uma

tabela de um modo que os seus da-dos sejam realmente úteis e confiá-veis exige um bom conhecimentode detalhes, até porque as tabelastêm características peculiares. As-sim, pensando em quem acaba dedesembarcar no mundo dos bancosde dados, vamos tratar aqui de ca-da uma de suas propriedades rele-vantes. Usaremos o banco de dadosAccess como exemplo. Embora al-gumas características sejam própriasdas tabelas do Access, a maioria seaplica a outros pro-gramas do gênero.

TIPO DE DADOS O tipo de dados é apropriedade maisimportante da tabe-la. Quando se criaum campo, o Accessoferece uma lista de

opções na coluna Tipo de Dados. Es-sas opções são comentadas a seguir.■ TEXTO Armazena qualquer tipode caractere. O limite de caracterespode ser definido por quem estácriando a tabela, mas só pode ir até255. Para isso, basta informar o ta-manho desejado na propriedade.■ TAMANHO DO CAMPO Definir olimite aqui é complicado. Você po-de, por exemplo, definir em 50 o ta-manho de um campo que vai arma-zenar a razão social. Na prática, ousuário quer cadastrar uma razãosocial que tem 55 caracteres, nãovai conseguir e dirá que seu progra-ma tem um bug terrível e chamar

Cvocê para consertá-lo somente porcausa desses cinco caracteres. Pa-ra evitar problemas desse tipo, de-fina sempre um número grande —no caso, pode ser 100. O Access nãoreserva espaço para partes não uti-lizadas de um campo texto. Ou se-ja, mesmo que você reserve 100, seo usuário só utilizar 30, o Access sóconsumirá o espaço corresponden-te a 30 caracteres. Não estranhe es-sa observação: há bancos de dadosque usam toda a capacidade docampo, mesmo que esteja vazio. ■ MEMORANDO É idêntico ao tipode dados Texto, mas sua capacida-de é muito maior: até 65 535 carac-teres. Não tem a propriedade Ta-manho do Campo. O campo memo-rando é muito utilizado para arma-zenar observações ou quando sequer guardar muitas informaçõesnum campo só. ■ NÚMERO Destina-se a guardarnúmeros, geralmente utilizados emcálculos matemáticos ou como có-digo de identificação. A proprieda-

de Tamanho doCampo para esse ti-po de dado é tam-bém muito impor-tante. Veja na tabe-la “O tamanho dosnúmeros” o quantocada especificaçãonumérica ocupa em

cada caso. Com essa tabela, vocêpode definir o tamanho correto pa-ra o campo, levando em conta a in-formação que você quer guardar eo espaço em disco que ela usará.

No entanto, mais importante queo tamanho ocupado é a capacida-de do campo numérico. Se, porexemplo, você escolher para umcampo o tipo Número Inteiro, pre-cisa saber de antemão que essecampo não poderá armazenar nú-meros, positivos ou negativos, atécerca de 32700. Seu sistema daráerro se o usuário tentar registrar nocampo o valor 40000. ■ DATA/HORA Usado para guardardata e hora. Note que não é dataou hora. O Access guarda esse tipode dados em 8 bytes. Os limites dedatas vão de 1 de janeiro do ano100 até 31 de dezembro de 9999.Quando você insere apenas a dataneste campo, o Access grava a ho-ra zero (00:00:00) como comple-mento da data. Situação idênticaacontece se você informar apenas

Tipo de Dados:cuidado na escolha daopção salva a tabela

Campo com valores:as opções aparecem nacaixa de combinação

062_GUIA_TAB_ACCESS 25/02/2006 23:15 Page 62

Page 60: Colecao InfoBanco de Dados

TUTORIAL/TABELAS

COLEÇÃO INFO > 65

TUTORIAL/TABELAS

64 < COLEÇÃO INFO

as horas, só que a data é gravadacomo 30/12/1899, o dia inicial docalendário interno do Access e deoutros programas do Office. Enfim,o Access grava as duas partes, da-ta e hora, e você utiliza a que de-sejar no campo que está criando. ■ MOEDA É um tipo de dado nu-mérico designado para armazenarvalores monetários. O tamanho ocu-pado em disco é de 8 bytes, igualao tipo de dados numérico com ta-manho duplo. No entanto, só háquatro casas decimais e a parte in-teira vai até 15 dígitos. ■AUTONUMERAÇÃO É um tipo nu-mérico de dados que é preenchidoautomaticamente pelo Access. Émuito utilizado como código deidentificação. Exemplo: código docliente, código do pedido etc. Umapropriedade interessante desse ti-po de dado é Novos Valores, quepode ser Incremento ou Aleatório.A primeira, Incremento, que é o pa-drão, gera números seqüenciais. Aoutra produz valores aleatórios, que

podem ser negativosou positivos. ■ SIM/NÃO Ocupaapenas 1 bit de es-paço em disco. É uti-lizado para guardarinformações que vo-cê tem certeza quesó podem conter um

entre dois valores. Exemplo: umcampo que indica se a pessoa é ca-sada só pode ter o valor sim ou não.■ OBJETO OLE Serve para guardarobjetos como documentos do Word,planilhas do Excel, gráficos, sons eoutros. O objeto pode ser incorpo-rado à tabela ou vinculado. ■ HYPERLINK Utilizado para guar-dar endereços web, e-mails etc. Bas-ta clicar no endereço e abre-se apágina ou arquivo a que ele se re-fere. Esse tipo de dado se divide emtrês partes: textodeexibição (o tex-to que aparece no campo ou con-trole); endereço (o caminho de umarquivo, ou URL); e subendereço(uma localização dentro do arqui-vo ou página). Cada uma dessas par-tes pode ter até 2048 caracteres. ■ ASSISTENTE DE PESQUISA Esseé um tipo de dado interessante, quepoucas pessoas conhecem. Na ver-dade não é bem um tipo de dado,e sim uma opção que inicia um as-sistente para criar uma caixa decombinação, cuja lista de dados po-

de ser baseada em outra tabela, ounuma lista de valores que você po-de criar no próprio assistente. Apósexecutar essa opção, você pode verque as propriedades da guia Pes-quisa do campo criado estão preen-chidas conforme o que foi escolhi-do no assistente.

ENTRADA DE DADOS Imagine que você tem um campoque armazena o número do docu-mento de identidade de seus clien-tes e que os usuários ora digitamde um jeito ora de outro. Portanto,você não confiará nas informaçõesdigitadas. Para evitar isso, a pro-priedade Máscara de Entrada defi-ne exatamente como deve ser digi-tado o RG, o CPF, o CEP e outros da-dos que você queira padronizar. Pa-ra o caso do RG, você coloca a se-guinte máscara de entrada: 99.000.000C\->a;0;_

A máscara de entrada se divideem três partes, separadas pelo pon-to-e-vírgula: a primeira é a própriadefinição da entra-da; a segunda, quepode ser 0 ou 1, in-dica se os caracteresliterais, como o hí-fen do RG(-), devemser gravados nocampo ou não. A op-ção 0 grava esses

caracteres; a terceira parte é o ca-ractere que deve ser mostradoquando um dígito não está preen-chido. Você pode colocar qualquerum — o padrão é o sublinhado ( _ ).Para que serve cada caractere namáscara de entrada? A resposta vo-cê tem na tabela Máscaras de En-trada, que mostra cada caractere esua função. Outro exemplo é a más-cara de entrada do telefone: "(0XX"99") "#999\-9999;0;_

Preenchido o campo, a máscaraacima produz um resultado como:(0XX11) _867-9926. Uma opção in-teressante da propriedade Másca-ra de Entrada é que ela pode serdefinida como Senha. Basta vocêdigitar senha nessa propriedade eo que o usuário digitar nesse cam-po será exibido como asterisco(*). O Access tem ainda um assistentepara máscara de entrada. Clique nobotão Construtor e o programa exi-be exemplos de máscara que vocêpode escolher e definir automati-camente para o seu campo. Outra

Assistente dePesquisa: orientaçãosobre a origem do dado

Assistente demáscara: guia para adigitação correta

062_GUIA_TAB_ACCESS 25/02/2006 23:19 Page 64

Page 61: Colecao InfoBanco de Dados

TUTORIAL/TABELAS

COLEÇÃO INFO > 65

TUTORIAL/TABELAS

64 < COLEÇÃO INFO

as horas, só que a data é gravadacomo 30/12/1899, o dia inicial docalendário interno do Access e deoutros programas do Office. Enfim,o Access grava as duas partes, da-ta e hora, e você utiliza a que de-sejar no campo que está criando. ■ MOEDA É um tipo de dado nu-mérico designado para armazenarvalores monetários. O tamanho ocu-pado em disco é de 8 bytes, igualao tipo de dados numérico com ta-manho duplo. No entanto, só háquatro casas decimais e a parte in-teira vai até 15 dígitos. ■AUTONUMERAÇÃO É um tipo nu-mérico de dados que é preenchidoautomaticamente pelo Access. Émuito utilizado como código deidentificação. Exemplo: código docliente, código do pedido etc. Umapropriedade interessante desse ti-po de dado é Novos Valores, quepode ser Incremento ou Aleatório.A primeira, Incremento, que é o pa-drão, gera números seqüenciais. Aoutra produz valores aleatórios, que

podem ser negativosou positivos. ■ SIM/NÃO Ocupaapenas 1 bit de es-paço em disco. É uti-lizado para guardarinformações que vo-cê tem certeza quesó podem conter um

entre dois valores. Exemplo: umcampo que indica se a pessoa é ca-sada só pode ter o valor sim ou não.■ OBJETO OLE Serve para guardarobjetos como documentos do Word,planilhas do Excel, gráficos, sons eoutros. O objeto pode ser incorpo-rado à tabela ou vinculado. ■ HYPERLINK Utilizado para guar-dar endereços web, e-mails etc. Bas-ta clicar no endereço e abre-se apágina ou arquivo a que ele se re-fere. Esse tipo de dado se divide emtrês partes: textodeexibição (o tex-to que aparece no campo ou con-trole); endereço (o caminho de umarquivo, ou URL); e subendereço(uma localização dentro do arqui-vo ou página). Cada uma dessas par-tes pode ter até 2048 caracteres. ■ ASSISTENTE DE PESQUISA Esseé um tipo de dado interessante, quepoucas pessoas conhecem. Na ver-dade não é bem um tipo de dado,e sim uma opção que inicia um as-sistente para criar uma caixa decombinação, cuja lista de dados po-

de ser baseada em outra tabela, ounuma lista de valores que você po-de criar no próprio assistente. Apósexecutar essa opção, você pode verque as propriedades da guia Pes-quisa do campo criado estão preen-chidas conforme o que foi escolhi-do no assistente.

ENTRADA DE DADOS Imagine que você tem um campoque armazena o número do docu-mento de identidade de seus clien-tes e que os usuários ora digitamde um jeito ora de outro. Portanto,você não confiará nas informaçõesdigitadas. Para evitar isso, a pro-priedade Máscara de Entrada defi-ne exatamente como deve ser digi-tado o RG, o CPF, o CEP e outros da-dos que você queira padronizar. Pa-ra o caso do RG, você coloca a se-guinte máscara de entrada: 99.000.000C\->a;0;_

A máscara de entrada se divideem três partes, separadas pelo pon-to-e-vírgula: a primeira é a própriadefinição da entra-da; a segunda, quepode ser 0 ou 1, in-dica se os caracteresliterais, como o hí-fen do RG(-), devemser gravados nocampo ou não. A op-ção 0 grava esses

caracteres; a terceira parte é o ca-ractere que deve ser mostradoquando um dígito não está preen-chido. Você pode colocar qualquerum — o padrão é o sublinhado ( _ ).Para que serve cada caractere namáscara de entrada? A resposta vo-cê tem na tabela Máscaras de En-trada, que mostra cada caractere esua função. Outro exemplo é a más-cara de entrada do telefone: "(0XX"99") "#999\-9999;0;_

Preenchido o campo, a máscaraacima produz um resultado como:(0XX11) _867-9926. Uma opção in-teressante da propriedade Másca-ra de Entrada é que ela pode serdefinida como Senha. Basta vocêdigitar senha nessa propriedade eo que o usuário digitar nesse cam-po será exibido como asterisco(*). O Access tem ainda um assistentepara máscara de entrada. Clique nobotão Construtor e o programa exi-be exemplos de máscara que vocêpode escolher e definir automati-camente para o seu campo. Outra

Assistente dePesquisa: orientaçãosobre a origem do dado

Assistente demáscara: guia para adigitação correta

062_GUIA_TAB_ACCESS 25/02/2006 23:19 Page 64

Page 62: Colecao InfoBanco de Dados

TUTORIAL/TABELAS

66 < COLEÇÃO INFO

nota importante: os controles deformulário não herdam essa pro-priedade. Você pode estabeleceruma máscara de entrada para ocampo, porém o controle vincula-do ao campo, no formulário, podeter outra máscara. Você então per-gunta: então para que eu vou defi-nir uma máscara de entrada para ocampo? Calma, a máscara definidano campo vai automaticamente pa-ra o controle. Só que ela não é obri-gatória. Se quiser, você pode defi-nir outra. Mas o melhor de tudo éque, definida uma vez na tabela, elapode permanecer igual em outrassituações, o que ajuda na padroni-zação do sistema.

A EXIBIÇÃO DOS DADOS Diferentemente da propriedadeMáscara de Entrada, que define co-mo os dados devem ser digitados,a propriedade Formato controla asua exibição. Ou seja, você até po-de estabelecer uma máscara de en-trada que informa a data completa(00/00/0099), masvocê quer que, noformulário ou rela-tório, ela apareçaapenas com o ano eo mês, e nessa or-dem (yyyy/mm). As-sim como no caso damáscara de entrada,os controles do for-

mulário não herdam essa proprie-dade, ou seja, você pode mudar oformato do controle vinculado aocampo, no formulário, conforme asua necessidade. A propriedade For-mato é a mais interessante. Ela pos-sibilita obter muitos resultados: ■ TEXTO E MEMORANDO O forma-to para textos e memorandos en-volve duas partes, separadas porponto-e-vírgula. A primeira defineo formato, se o dado for preenchi-do; e a segunda, se ele não forpreenchido. Vamos esclarecer me-lhor com um exemplo. Imagine umcampo de preenchimento não obri-gatório, como hobbies da pessoa.Pode-se definir o seguinte formatopara esse campo: >[Preto];“não in-formado”[Vermelho]. Se os hobbiesforem informados, o texto inseridoserá exibido em maiúsculas e coma cor preta. Caso contrário, apare-cerá a expressão “não informado”em vermelho. É isso mesmo, podetestar à vontade. Você pode pesqui-sar na Ajuda do Access e descobrir

Construtor de campo:exemplos prontos compropriedades definidas

062_GUIA_TAB_ACCESS 25/02/2006 23:22 Page 66

Page 63: Colecao InfoBanco de Dados

TUTORIAL/TABELAS

COLEÇÃO INFO > 67

outras preciosidadessobre como exibir otexto quando ele édigitado. ■ NÚMERO EMOEDA Segue omesmo padrão do ti-po Texto e Memo-rando, porém comquatro partes. A pri-meira trata os positivos; a segunda,os negativos; a terceira, o zero; e aúltima, o nulo. Um campo que in-forma saldos financeiros pode tero seguinte formato: “R$”#,00[Azul];“R$”#,00[Verme-lho];“Zero”;“não informado”

Se o saldo é positivo, ele é exibi-do em formato moeda e em cor azul;se negativo, aparece em vermelho;se zero, mostra “Zero”; e se não háinformações naquele campo, apa-rece a expressão “não informado”. ■ SIM/NÃO Esse formato se divi-de em três partes. A primeira nãoafeta em nada os resultados, porémtem de existir. Portanto, o formatocomeça com ponto-e-vírgula (ou se-ja, o primeiro item fica em branco);a segunda é o formato para valoresverdadeiros; e a terceira para valo-res falsos. Um exemplo clássico: ocampo Situação informa se o fun-cionário está ativo ou não. Então,ele pode ter o seguinte formato:;“Ativo”[Vermelho]; “Inativo” [Pre-to]. Se o funcionário está na ativa,

aparece “Ativo”, em vermelho; ca-so contrário, “Inativo”, em preto. ■ DATA/HORA Esse formato nãosegue o mesmo padrão dos anterio-res: não é dividido em partes. O má-ximo que você pode fazer é definira cor do texto. Mas a propriedadedo formato de um campo do tipoData/Hora é muito importante, poisele é que define o que será exibidoda informação digitada pelo usuá-rio. Você pode fazer várias combi-nações. Por exemplo: para exibirapenas o mês, o ano, a hora e os mi-nutos, defina o formato assim: mm/yyyy hh:nn (veja bem: as duas últi-mas letras são enes, de navio, e nãoemes, de minuto, como se espera).Recomendo que você veja na Aju-da as letras e caracteres que vocêpode utilizar no formato de datas,pois tem algumas muito interessan-tes, como as que retornam o trimes-tre, a semana e outros. Quero apro-veitar o assunto para mostrar comose deve definir o formato juntamen-te com a máscara de entrada para

Índice duplo: chaveprimária da tabelacriada com dois campos

062_GUIA_TAB_ACCESS 25/02/2006 23:23 Page 67

Page 64: Colecao InfoBanco de Dados

TUTORIAL/TABELAS

COLEÇÃO INFO > 69

TUTORIAL/TABELAS

68 < COLEÇÃO INFO

não deixar que seu campo caia nobug do ano 2000, que nada mais édo que entrar com os quatro dígi-tos do ano e exibi-los. Deve-se de-finir para os campos que irão arma-zenar datas a seguinte máscara deentrada: 00/00/0099. E o seu for-mato deve ser: dd/mm/yyyy

CONSISTÊNCIA DOS DADOS A propriedade Regra de Validação ésuperimportante para obter dadosmais seguros desde o momento desua edição, não permitindo que ousuário digite qualquer coisa e aca-be gerando erros no sistema. Imagi-ne que o seu cadastro de funcioná-rios tem o campo Sexo, que deve serpreenchido com “M” ou “F”. Mas umusuário engraçadinho resolve colo-car “H” na ficha de um funcionário.Numa parte qualquer do sistema, vo-cê filtra homens num bloco e mulhe-res em outro. Por causa do usuárioque resolveu fazer graça, o funcio-nário em questão não aparecerá em

nenhum dos filtros. Um sistema pro-fissional não pode deixar que issoaconteça. Para isso existe a regra devalidação do campo. É muito simples:para o caso mencionado, basta digi-tar a seguinte regra na propriedadeRegra de Validação do campo Sexo:“F” Ou “M”. Pronto, o campo só acei-tará F ou M como conteúdo.

Uma nota quanto a essa regra im-posta ao campo Sexo é que o cam-po passa a ser de preenchimento obri-gatório. Ou seja, ele não aceitará nu-lo (vazio). Outro exemplo: num cam-po onde se deve cadastrar o saláriodo funcionário numa empresa cujosalário mínimo é 500 reais. A regraseria, então, “maior que 500”. No en-tanto, pode-se não saber o salário dofuncionário no momento em que eleé cadastrado: o valor será informa-do depois. Para dar incluir essa hipó-tese, a regra deve ser a seguinte: >500 Ou Nulo

Ao contrário das outras proprie-dades até aqui apresentadas, os con-troles vinculados ao campo com re-

gra de validação her-dam, no formulário,a regra definida natabela. Portanto,mesmo que vocêmude a regra para ocontrole vinculadoao campo, o valorque o usuário digi-tar deve satisfazer

sempre à regra definida na tabela.Se porventura você definiu outraregra para o controle, o valor digi-tado terá que atender às duas re-gras, tanto a do campo na tabelaquanto a do controle. A consistên-cia ainda pode ser feita no nível doregistro. Os exemplos do campo Se-xo e do Salário cuidam da consis-tência no nível do campo.

A consistência de registro funcio-na da seguinte forma: imagine umatabela onde são cadastrados os pro-dutos e a porcentagem de cada se-tor da empresa na participação dasvendas. A tabela contém os cam-pos Produto, SetorA, SetorB, SetorC.Como se trata de porcentagem, asoma das parcelas de todos os se-tores deve ser igual a 100. Para im-plementar essa regra, com a tabe-la aberta em modo Design, cliqueno botão Propriedades, na barra deferramentas, a fim de exibir a folha

de propriedades da tabela. Na pro-priedade Regra de Validação, digi-te a seguinte regra: [SetorA]+[SetorB]+[SetorC]=100

Uma propriedade complementar àRegra de Validação é a Texto de Vali-dação. Nessa propriedade você inse-re um texto personalizado para sermostrado, em vez da mensagem-pa-drão do Access, quando o usuário di-gita um valor incorreto.

INTEGRIDADE DOS DADOS Exemplo clássico: o número de CPFde uma pessoa é único — ou seja, ne-nhuma outra pessoa pode ter um CPFigual ao de outra. Portanto, não podehaver em seu cadastro de clientes doisou mais RGs iguais. Para evitar isso,basta selecionar, na propriedade In-dexado do campo CPF, a opção Sim(Duplicação não autorizada). Você po-de querer uma integridade com doiscampos. O número de um aluno na

Regra de Validação:feita para garantirdados consistentes

CARACTERE

L0

9

#

L

?

a

A

&

CARACTERE

C

, , : ; - /

<

>

!

\

DESCRIÇÃO

Dígito (de 0 a 9, entrada obrigatória)

Dígito ou espaço (entrada não obrigatória)

Dígito ou espaço (entrada não obri-gatória; os espaços são exibidos comovazios quando no modo Edição, mas osvazios são removidos quando os dadossão salvos; sinais de adição e subtraçãosão permitidos)

Letra (de A a Z, entrada obrigatória)

Letra (de A a Z, entrada opcional)

Letra ou dígito (entrada opcional)

Letra ou dígito (entrada obrigatória)

Qualquer caractere ou um espaço(entrada obrigatória)

DESCRIÇÃO

Qualquer caractere ou um espaço (entrada opcional)

Marcador decimal e separadoresde milhares, de data e de hora

Converte todos os caracterespara letras minúsculas

Converte todos os caracterespara letras maiúsculas

Define que a máscara de entradaseja exibida da direita para aesquerda, e não da esquerdapara a direita

Define que o caractere seguinteseja exibido como caractereliteral (por exemplo, \A é exibidosimplesmente como A)

MÁSCARAS DE ENTRADACaracteres utilizados na propriedade Máscaras de Entrada

062_GUIA_TAB_ACCESS 25/02/2006 23:53 Page 68

Page 65: Colecao InfoBanco de Dados

TUTORIAL/TABELAS

COLEÇÃO INFO > 69

TUTORIAL/TABELAS

68 < COLEÇÃO INFO

não deixar que seu campo caia nobug do ano 2000, que nada mais édo que entrar com os quatro dígi-tos do ano e exibi-los. Deve-se de-finir para os campos que irão arma-zenar datas a seguinte máscara deentrada: 00/00/0099. E o seu for-mato deve ser: dd/mm/yyyy

CONSISTÊNCIA DOS DADOS A propriedade Regra de Validação ésuperimportante para obter dadosmais seguros desde o momento desua edição, não permitindo que ousuário digite qualquer coisa e aca-be gerando erros no sistema. Imagi-ne que o seu cadastro de funcioná-rios tem o campo Sexo, que deve serpreenchido com “M” ou “F”. Mas umusuário engraçadinho resolve colo-car “H” na ficha de um funcionário.Numa parte qualquer do sistema, vo-cê filtra homens num bloco e mulhe-res em outro. Por causa do usuárioque resolveu fazer graça, o funcio-nário em questão não aparecerá em

nenhum dos filtros. Um sistema pro-fissional não pode deixar que issoaconteça. Para isso existe a regra devalidação do campo. É muito simples:para o caso mencionado, basta digi-tar a seguinte regra na propriedadeRegra de Validação do campo Sexo:“F” Ou “M”. Pronto, o campo só acei-tará F ou M como conteúdo.

Uma nota quanto a essa regra im-posta ao campo Sexo é que o cam-po passa a ser de preenchimento obri-gatório. Ou seja, ele não aceitará nu-lo (vazio). Outro exemplo: num cam-po onde se deve cadastrar o saláriodo funcionário numa empresa cujosalário mínimo é 500 reais. A regraseria, então, “maior que 500”. No en-tanto, pode-se não saber o salário dofuncionário no momento em que eleé cadastrado: o valor será informa-do depois. Para dar incluir essa hipó-tese, a regra deve ser a seguinte: >500 Ou Nulo

Ao contrário das outras proprie-dades até aqui apresentadas, os con-troles vinculados ao campo com re-

gra de validação her-dam, no formulário,a regra definida natabela. Portanto,mesmo que vocêmude a regra para ocontrole vinculadoao campo, o valorque o usuário digi-tar deve satisfazer

sempre à regra definida na tabela.Se porventura você definiu outraregra para o controle, o valor digi-tado terá que atender às duas re-gras, tanto a do campo na tabelaquanto a do controle. A consistên-cia ainda pode ser feita no nível doregistro. Os exemplos do campo Se-xo e do Salário cuidam da consis-tência no nível do campo.

A consistência de registro funcio-na da seguinte forma: imagine umatabela onde são cadastrados os pro-dutos e a porcentagem de cada se-tor da empresa na participação dasvendas. A tabela contém os cam-pos Produto, SetorA, SetorB, SetorC.Como se trata de porcentagem, asoma das parcelas de todos os se-tores deve ser igual a 100. Para im-plementar essa regra, com a tabe-la aberta em modo Design, cliqueno botão Propriedades, na barra deferramentas, a fim de exibir a folha

de propriedades da tabela. Na pro-priedade Regra de Validação, digi-te a seguinte regra: [SetorA]+[SetorB]+[SetorC]=100

Uma propriedade complementar àRegra de Validação é a Texto de Vali-dação. Nessa propriedade você inse-re um texto personalizado para sermostrado, em vez da mensagem-pa-drão do Access, quando o usuário di-gita um valor incorreto.

INTEGRIDADE DOS DADOS Exemplo clássico: o número de CPFde uma pessoa é único — ou seja, ne-nhuma outra pessoa pode ter um CPFigual ao de outra. Portanto, não podehaver em seu cadastro de clientes doisou mais RGs iguais. Para evitar isso,basta selecionar, na propriedade In-dexado do campo CPF, a opção Sim(Duplicação não autorizada). Você po-de querer uma integridade com doiscampos. O número de um aluno na

Regra de Validação:feita para garantirdados consistentes

CARACTERE

L0

9

#

L

?

a

A

&

CARACTERE

C

, , : ; - /

<

>

!

\

DESCRIÇÃO

Dígito (de 0 a 9, entrada obrigatória)

Dígito ou espaço (entrada não obrigatória)

Dígito ou espaço (entrada não obri-gatória; os espaços são exibidos comovazios quando no modo Edição, mas osvazios são removidos quando os dadossão salvos; sinais de adição e subtraçãosão permitidos)

Letra (de A a Z, entrada obrigatória)

Letra (de A a Z, entrada opcional)

Letra ou dígito (entrada opcional)

Letra ou dígito (entrada obrigatória)

Qualquer caractere ou um espaço(entrada obrigatória)

DESCRIÇÃO

Qualquer caractere ou um espaço (entrada opcional)

Marcador decimal e separadoresde milhares, de data e de hora

Converte todos os caracterespara letras minúsculas

Converte todos os caracterespara letras maiúsculas

Define que a máscara de entradaseja exibida da direita para aesquerda, e não da esquerdapara a direita

Define que o caractere seguinteseja exibido como caractereliteral (por exemplo, \A é exibidosimplesmente como A)

MÁSCARAS DE ENTRADACaracteres utilizados na propriedade Máscaras de Entrada

062_GUIA_TAB_ACCESS 25/02/2006 23:53 Page 68

Page 66: Colecao InfoBanco de Dados

TUTORIAL/TABELAS

70 < COLEÇÃO INFO

classe deve ser único, porém esse nú-mero pode se repetir em outra clas-se. Logo, a chave deve ser o númeroda classe mais o número do aluno. Cli-que no botão Índices, na barra de fer-ramentas, e serão exibidos os índicesda tabela. Na coluna Nome do Índicedê um nome sugestivo: ClasseAluno.Depois selecione os campos do nú-mero da classe e o do número do alu-no. A propriedade Exclusivo do índi-ce deve conter o valor Sim. A figura 2mostra como deve ficar a janela de ín-dice dessa tabela, que tem como ín-dice primário o campo matrícula.

VALOR-PADRÃOO Valor-padrão de um campo tam-bém é uma propriedade muito im-portante. Ele facilita para o usuário otrabalho de edição. Normalmente, de-fine-se como valor-padrão de um cam-po o valor de preenchimento maisfreqüente. Se a loja está localizada emSão Paulo, é bem provável que a maio-ria dos clientes seja dessa cidade. En-tão, os campos Cidade e Estado já de-

vem aparecer preen-chidos com os valo-res “São Paulo”, “SP”.Assim, o operadorpraticamente nãoprecisará digitar. É im-portante lembrartambém que zero nãoé nulo. Zero é valor

numérico — aliás, esse é o valor-pa-drão adotado pelo Access para os ti-pos de dados numéricos. Nulo é o va-lor de um campo não preenchido. Ouseja, nulo é igual a vazio.

Quanto ao relacionamento do va-lor-padrão de um campo na tabelacom o controle vinculado a ele numformulário, fica valendo, primeiramen-te, o definido para o controle. Contu-do, se você não especificar um valor-padrão para o controle, será utiliza-do o definido para o campo.

Neste tutorial você tomou contatocom todos os itens que envolvem acriação de tabelas de um modo bemprofissional. Vale lembrar que o ban-co de dados Access ainda tem um as-sistente para construir campos. Paraacioná-lo, posicione o cursor na co-luna Nome do Campo e clique no bo-tão Construir, na barra de ferramen-tas. Será exibida uma lista de exem-plos de campos. Se você selecionarum, o assistente já o definirá por in-teiro (ou seja, com todas as proprie-dades) na sua tabela.

Valor-padrão: não épreciso digitar o itemque se repete no campo

062_GUIA_TAB_ACCESS 25/02/2006 23:31 Page 70

Page 67: Colecao InfoBanco de Dados

RELATÓRIO FEITOCOM VIEWS

APRENDA A CRIAR UMA TABELA VIRTUAL QUE FAÇA ASCONTAS NECESSÁRIAS PARA UM RELATÓRIO DE VENDAS

POR CARLOS CHERNIJ, COM FRED CARBONARE

TUTORIAL/ORACLE EXPRESS

COLEÇÃO INFO > 71

Oracle XE: a criação da views e a administração do banco de dados é feita via web

ma das boas funciona-lidades disponíveis nogratuito Oracle 10g Ex-press Edition — ou Ora-

cle XE — são as views, tabelas vir-tuais que podem ser usadas parapoupar trabalho do programadorna hora de criar consultas no ban-co de dados. As views não existemfisicamente — são geradas pelasconsultas. Mas, depois de criadas,elas se comportam exatamente co-mo uma tabela. Assim, as alteraçõesrealizadas na view são repassadaspara a tabela física envolvida.

UAs views são muito usadas em ban-

cos de dados complexos com diver-sas tabelas que formam conjuntos dedados, relatórios etc. E não são privi-légio do Oracle — podem ser encon-tradas também em bancos de dadoscomo PostgreSQL, MS SQL Server eMySQL 5.0. Neste tutorial, utilizaremosas views para gerar um relatório devendas. Detalhe importante: o OracleXE ainda está em versão beta (no co-meço de fevereiro de 2006, foi colo-cada à disposição dos internautas aedição Release Candidate 3). Por con-ta disso, algumas funções podem apre-

071_RELA_VEND_ORACLE 25/02/2006 23:56 Page 71

Page 68: Colecao InfoBanco de Dados

TUTORIAL/ORACLE EXPRESS

COLEÇÃO INFO > 73

TUTORIAL/ORACLE EXPRESS

72 < COLEÇÃO INFO

sentar problemas. No teste do INFO-LAB, por exemplo, o upload de scriptsnão funcionou corretamente no na-vegador Firefox.

1. INSTALANDOFaça o download do Oracle XE emwww.info.abril.com.br/download/4346.shtml e execute o instalador.Apesar de o arquivo do programa pos-suir 200 MB, a instalação vai consu-mir cerca de 1 GB de espaço no discorígido. Um momento importante doprocesso é a solicitação da senha pa-ra o usuário System, que tem os di-reitos administrativos. Vamos colocara senha como sendo system, para fa-cilitar. Após a instalação, clique no ata-lho Goto database homepage, que se-rá criado dentro do grupo de progra-mas Oracle Database 10g Express Edi-tion. O atalho abrirá uma janela de

browser com a página de login do mó-dulo de administração — é tudo feitovia web. A página pode ser acessadatambém por meio do endereçohttp://127.0.0.1:8080/htmldb/htmldb na máquina em que o soft-ware foi instalado.

2. CARREGANDO OS SCRIPTSNa página de login, entre com o no-me de usuário System e a senha es-colhida durante a instalação. Vamosagora criar as tabelas que serão usa-das no tutorial. Faça o download dosarquivos de script em ftp://ftp.info.abril.com.br/bdoracle.zip. Depois dedescompactá-los, você terá dois ar-quivos de script: Criar.sql e View.sql.

Na tela inicial do módulo de admi-nistração, escolha a opção SQL. Cli-que então em SQL Scripts. Acione obotão Upload. No campo File, cliqueem Procurar e informe a localizaçãodo arquivo Criar.sql. No campo ScriptName, digite Criar. Clique então nobotão Upload, na parte superior datela. A partir de agora, o script vai apa-recer como um ícone sempre que seentrar na tela SQL Scripts.

3. CRIANDO AS TABELASAinda na tela SQL Scripts (Home > SQL> SQL Scripts), clique no ícone do scriptCriar. Será aberta a janela do ScriptEditor com o código referente à cria-ção das tabelas. Clique no botão Run,que fica na parte superior da tela. Se-rá aberta a tela Run Script, onde é ne-cessário confirmar a operação, clican-do novamente no botão Run. Após a

execução do script, terão sido criadasas tabelas TB_CLIENTE, com informa-ções dos clientes, TB_PEDIDO, comdados dos pedidos, TB_PRODUTO, cominformações dos produtos, e TB_PE-DIDO_PRODUTO, que relacionará osprodutos aos pedidos.

4. VISUALIZANDO OS DADOSA partir da tela inicial do módulo deadministração, clique em ObjectBrowser > Browse > Tables. À esquer-da da tela estará uma lista com to-das as tabelas do sistema, a maioriareferentes a controles internos doOracle XE. No final da lista, você ve-rá as tabelas do tutorial. Clique em

TB_CLIENTE e, depois, naaba Data para ver os da-dos iniciais que foraminseridos durante a cria-ção das tabelas.

5. GERANDO O RELATÓRIO

Vamos criar uma view que irá mos-trar o total pedido por cliente donosso banco de dados, gerando as-sim um relatório de vendas. Voltepara a página inicial e escolha a op-ção Object > Browser > Create >View. No campo View Name, digitevw_total_pedidos_cliente. Na jane-la Query, cole o conteúdo do arqui-vo View.sql. O código é o seguinte:SELECT sum(total_pedido) astotal, cod_cliente, nom_clienteFROM (SELECT tb_pedido.cod_pedido,tb_pedido.cod_cliente,

Scripts: carregue e use o ícone Criar Visualize: clique na aba Data para ver dados inseridos durante a criação das tabelas

Script Editor: um cliqueem Criar abre o códigode criação das tabelas

071_RELA_VEND_ORACLE 25/02/2006 23:33 Page 72

Page 69: Colecao InfoBanco de Dados

TUTORIAL/ORACLE EXPRESS

COLEÇÃO INFO > 73

TUTORIAL/ORACLE EXPRESS

72 < COLEÇÃO INFO

sentar problemas. No teste do INFO-LAB, por exemplo, o upload de scriptsnão funcionou corretamente no na-vegador Firefox.

1. INSTALANDOFaça o download do Oracle XE emwww.info.abril.com.br/download/4346.shtml e execute o instalador.Apesar de o arquivo do programa pos-suir 200 MB, a instalação vai consu-mir cerca de 1 GB de espaço no discorígido. Um momento importante doprocesso é a solicitação da senha pa-ra o usuário System, que tem os di-reitos administrativos. Vamos colocara senha como sendo system, para fa-cilitar. Após a instalação, clique no ata-lho Goto database homepage, que se-rá criado dentro do grupo de progra-mas Oracle Database 10g Express Edi-tion. O atalho abrirá uma janela de

browser com a página de login do mó-dulo de administração — é tudo feitovia web. A página pode ser acessadatambém por meio do endereçohttp://127.0.0.1:8080/htmldb/htmldb na máquina em que o soft-ware foi instalado.

2. CARREGANDO OS SCRIPTSNa página de login, entre com o no-me de usuário System e a senha es-colhida durante a instalação. Vamosagora criar as tabelas que serão usa-das no tutorial. Faça o download dosarquivos de script em ftp://ftp.info.abril.com.br/bdoracle.zip. Depois dedescompactá-los, você terá dois ar-quivos de script: Criar.sql e View.sql.

Na tela inicial do módulo de admi-nistração, escolha a opção SQL. Cli-que então em SQL Scripts. Acione obotão Upload. No campo File, cliqueem Procurar e informe a localizaçãodo arquivo Criar.sql. No campo ScriptName, digite Criar. Clique então nobotão Upload, na parte superior datela. A partir de agora, o script vai apa-recer como um ícone sempre que seentrar na tela SQL Scripts.

3. CRIANDO AS TABELASAinda na tela SQL Scripts (Home > SQL> SQL Scripts), clique no ícone do scriptCriar. Será aberta a janela do ScriptEditor com o código referente à cria-ção das tabelas. Clique no botão Run,que fica na parte superior da tela. Se-rá aberta a tela Run Script, onde é ne-cessário confirmar a operação, clican-do novamente no botão Run. Após a

execução do script, terão sido criadasas tabelas TB_CLIENTE, com informa-ções dos clientes, TB_PEDIDO, comdados dos pedidos, TB_PRODUTO, cominformações dos produtos, e TB_PE-DIDO_PRODUTO, que relacionará osprodutos aos pedidos.

4. VISUALIZANDO OS DADOSA partir da tela inicial do módulo deadministração, clique em ObjectBrowser > Browse > Tables. À esquer-da da tela estará uma lista com to-das as tabelas do sistema, a maioriareferentes a controles internos doOracle XE. No final da lista, você ve-rá as tabelas do tutorial. Clique em

TB_CLIENTE e, depois, naaba Data para ver os da-dos iniciais que foraminseridos durante a cria-ção das tabelas.

5. GERANDO O RELATÓRIO

Vamos criar uma view que irá mos-trar o total pedido por cliente donosso banco de dados, gerando as-sim um relatório de vendas. Voltepara a página inicial e escolha a op-ção Object > Browser > Create >View. No campo View Name, digitevw_total_pedidos_cliente. Na jane-la Query, cole o conteúdo do arqui-vo View.sql. O código é o seguinte:SELECT sum(total_pedido) astotal, cod_cliente, nom_clienteFROM (SELECT tb_pedido.cod_pedido,tb_pedido.cod_cliente,

Scripts: carregue e use o ícone Criar Visualize: clique na aba Data para ver dados inseridos durante a criação das tabelas

Script Editor: um cliqueem Criar abre o códigode criação das tabelas

071_RELA_VEND_ORACLE 25/02/2006 23:33 Page 72

Page 70: Colecao InfoBanco de Dados

TUTORIAL/ORACLE EXPRESS

74 < COLEÇÃO INFO

tb_pedido_produto.val_preco_produto * tb_pedido_produto.qtd_produto as total_pedido, tb_cliente.nom_clienteFROM tb_pedido, tb_pedido_produto,tb_clienteWHEREtb_pedido.cod_pedido = tb_pe-dido_produto.cod_pedido ANDtb_cliente.cod_cliente = tb_pe-dido.cod_cliente) totalGROUP BY cod_cliente,nom_cliente

Clique em Next e confirme, acio-nando Create. Na tela de confirmaçãovocê já poderá ver o resultado, clican-do na aba Data. Dessa forma, a viewpode ser utilizada como se fosse uma

Relatório: clique na aba Data

CRIE SUA VIEW

> Para criar uma view, deveser observada a seguinte es-trutura básica de comando SQL:CREATE VIEW vw_nome ASSELECT colunasFROM tabela1, tabela2WHERE tabela1.campo =tabela2.campoDessa forma, você irá unir duastabelas, criando uma tabela vir-tual na qual poderá fazer con-sultas e atualizações nos dadosde forma mais simples. Uma daspossibilidades de aplicação éconfigurar permissões diferen-tes para as tabelas e para asviews. Por exemplo, você podeter uma senha de usuário nobanco de dados sendo usadaapenas para os scripts da áreaaberta do seu site. O internau-ta só terá acesso às views, o su-ficiente para fazer as pesquisasque deseja. Para acessar astabelas originais, seria criadooutro usuário, aplicando assimmais uma camada de segurançano banco de dados.

tabela virtual, e todas as alteraçõesque forem feitas nela serão transmi-tidas para as tabelas que a compõem.Para gerar um relatório a partir daview que foi criada, basta usar o co-mando SELECT * FROM vw_total_pe-didos_cliente.

071_RELA_VEND_ORACLE 25/02/2006 23:35 Page 74

Page 71: Colecao InfoBanco de Dados

CRIE PESQUISASCOM CRITÉRIOS

SIGA OS PASSOS PARA MONTAR DE CONSULTAS SIMPLES ABUSCAS COM PARÂMETROS VARIÁVEIS NO DB2

POR FRED CARBONARE

TUTORIAL/CONSULTAS

COLEÇÃO INFO > 75

lguma vez você criou con-sultas a banco de dadoscom critério? É bem pro-vável que sim. E uma con-

sulta com o critério OU em determi-nado campo, como Rio de Janeiro OUSão Paulo? Provavelmente sim, tam-bém. Consultas com critérios são mui-to úteis. Quando desejamos que es-sas consultas sejam mais flexíveis, po-demos substituir o critério fixo por umcritério com parâmetros. Exemplo:[Cidade1] OU [Cidade2]

Para treinar as consultas com crité-rio, neste tutorial faremos um cadas-tro de clientes acessando o banco dedados DB2 Express-C.

1. BAIXE OS COMANDOSPara facilitar a compreensão, primei-ramente faça o download do arquivodb2.zip no endereço ftp://ftp.info.abril.com.br/ebd_db2.zip e descom-pacte-o. Nesse arquivo você encon-trará os comandos SQL necessáriospara criar a tabela de exemplo.

2. CRIE A TABELA No DB2 Express-C, crie um banco dedados padrão chamado Consulta. Em

A

Identificação: dê o nome Consulta

No DB2: crie o banco de dados padrão

seguida, localize o arquivo Criar.sqlque você descompactou e execute-o. Ele irá criar uma tabela chamadaClientes com as seguintes colunas:id, nome, endereco, telefone, cida-de, estado, datanasc e incluirá algunsdados de exemplo.

Ao dar um duplo clique sobre a ta-bela Clientes, veremos o seu con-teúdo. Como você pode notar, tra-ta-se de uma tabela simples, quearmazena uma lista de clientes e assuas respectivas cidades.

075_TUT GUIA DB2 25/02/2006 23:41 Page 75

Page 72: Colecao InfoBanco de Dados

TUTORIAL/CONSULTAS

COLEÇÃO INFO > 77

TUTORIAL/CONSULTAS

76 < COLEÇÃO INFO

3. NOVA CONSULTAComo poderemos visualizar apenasos clientes localizados na cidade deSão Bernardo do Campo? Criando, éclaro, uma consulta com critério. Pa-ra isso, clique com o botão direito natabela e escolha Consultar. Na janelaNova Consulta que se abriu, fique coma opção Selecionado > Assistente SQL.Ainda Na janela Nova Consulta, sele-cione Instrução SELECT > From e es-colha a tabela Clientes.

dor “=”, e, em Valor, escolha a op-ção Listar valores. Na nova janelade valores, dê um duplo clique emSão Bernardo. Basta clicar no bo-tão > para adicionar o critério. Cli-que em OK e em Resultados da Con-sulta para ver o resultado.

5. CRITÉRIO OUQuando abrimos o assistente SQL doDB2 Express-C, ele zera toda a pro-gramação feita antes. Assim, para sa-ber quais são os clientes de São Ber-nardo OU São Paulo, é necessário criarnovamente o critério e adicionar umnovo para a cidade de São Paulo, cli-cando no botão OR >.

6. VISUALIZANDO O SQL Ao criarmos uma consulta no As-sistente SQL, o programa, nos bas-tidores, cria uma instrução SQL pa-ra realizar a pesquisa solicitada. Ve-ja como ficou no nosso primeiroexemplo:SELECT * FROM SQLJ.CLIENTES AS CLIENTESWHERE CLIENTES.CIDADE = ’SãoBernardo’

7. RESTRINGINDOVamos supor agora que você quervisualizar os clientes de “São Ber-nardo” OU “São Paulo”, mas ape-nas os que nasceram em 1990. Pa-ra isso usaremos o mesmo siste-ma de critérios, mas adicionandoum outro, do tipo AND.

De volta ao Assistente SQL, es-colha a coluna DATANASC e o ope-rador BETWEEN. Em valor mínimocoloque ‘1990-01-01’ e, em valormáximo, ‘1990-12-31’. Clique em"AND >". Agora, clique em OK eexecute o comando, acionando Re-sultados da Consulta.

Pronto, agora você pode usar oAssistente SQL para gerar coman-dos com critérios de acordo coma sua aplicação e extrair relató-rios cada vez mais precisos do seubanco de dados.

Esse exemplo, feito no DB2 Ex-press-C, pode ser aplicado em qual-quer outro banco de dados. A dife-rença vai ser mais visual do que con-ceitual, de acordo com o assisten-te do produto.Valores: adicione o novo critério

Como ficou: visualize o código SQL

Critério: escolha a opção Where

4. O CRITÉRIOAgora vamos colocar o critério. Pa-ra isso, escolha a opção WHERE.Nessa janela Where, escolha a co-luna CIDADE, (imagem 008) opera-

Tabela: clique duplo exibe conteúdo

AND OU OR?

> Dúvidas sobre a utilização doscritérios AND e OR costumam serfreqüentes entre os iniciantes naarte de armazenar informação.Quando colocamos a instrução OR,acrescentamos registros ao resul-tado. Quando utilizamos AND, res-tringimos. Para exemplificar, ima-

gine um amigo procurando na-morada. Ele prefere loiras deolhos azuis. Então deve especi-ficar loira AND olhos azuis. Ago-ra, se para você tanto faz se a mo-ça é loira ou morena, defina a con-sulta com loiras OR morenas. Suaspossibilidades serão maiores.

Quando adicionamos o critério paraas duas cidades, se você observar adeclaração SQL montada, vai notarque a cláusula WHERE mudou para:WHERE CLIENTES.CIDADE = ’SãoBernardo’ OR CLIENTES.CIDADE =’São Paulo’;

Note que a diferença entre asduas instruções SQL é a quantida-de de parâmetros contidos exata-mente na cláusula Where. Da mes-ma forma, a diferença da cláusulaWhere entre uma consulta que pos-sua o critério: “São Bernardo”, e ou-tra com o critério: “São Bernardo”OU “São Paulo”, será a quantidadede campos na cláusula Where.

075_TUT GUIA DB2 25/02/2006 23:58 Page 76

Page 73: Colecao InfoBanco de Dados

TUTORIAL/CONSULTAS

COLEÇÃO INFO > 77

TUTORIAL/CONSULTAS

76 < COLEÇÃO INFO

3. NOVA CONSULTAComo poderemos visualizar apenasos clientes localizados na cidade deSão Bernardo do Campo? Criando, éclaro, uma consulta com critério. Pa-ra isso, clique com o botão direito natabela e escolha Consultar. Na janelaNova Consulta que se abriu, fique coma opção Selecionado > Assistente SQL.Ainda Na janela Nova Consulta, sele-cione Instrução SELECT > From e es-colha a tabela Clientes.

dor “=”, e, em Valor, escolha a op-ção Listar valores. Na nova janelade valores, dê um duplo clique emSão Bernardo. Basta clicar no bo-tão > para adicionar o critério. Cli-que em OK e em Resultados da Con-sulta para ver o resultado.

5. CRITÉRIO OUQuando abrimos o assistente SQL doDB2 Express-C, ele zera toda a pro-gramação feita antes. Assim, para sa-ber quais são os clientes de São Ber-nardo OU São Paulo, é necessário criarnovamente o critério e adicionar umnovo para a cidade de São Paulo, cli-cando no botão OR >.

6. VISUALIZANDO O SQL Ao criarmos uma consulta no As-sistente SQL, o programa, nos bas-tidores, cria uma instrução SQL pa-ra realizar a pesquisa solicitada. Ve-ja como ficou no nosso primeiroexemplo:SELECT * FROM SQLJ.CLIENTES AS CLIENTESWHERE CLIENTES.CIDADE = ’SãoBernardo’

7. RESTRINGINDOVamos supor agora que você quervisualizar os clientes de “São Ber-nardo” OU “São Paulo”, mas ape-nas os que nasceram em 1990. Pa-ra isso usaremos o mesmo siste-ma de critérios, mas adicionandoum outro, do tipo AND.

De volta ao Assistente SQL, es-colha a coluna DATANASC e o ope-rador BETWEEN. Em valor mínimocoloque ‘1990-01-01’ e, em valormáximo, ‘1990-12-31’. Clique em"AND >". Agora, clique em OK eexecute o comando, acionando Re-sultados da Consulta.

Pronto, agora você pode usar oAssistente SQL para gerar coman-dos com critérios de acordo coma sua aplicação e extrair relató-rios cada vez mais precisos do seubanco de dados.

Esse exemplo, feito no DB2 Ex-press-C, pode ser aplicado em qual-quer outro banco de dados. A dife-rença vai ser mais visual do que con-ceitual, de acordo com o assisten-te do produto.Valores: adicione o novo critério

Como ficou: visualize o código SQL

Critério: escolha a opção Where

4. O CRITÉRIOAgora vamos colocar o critério. Pa-ra isso, escolha a opção WHERE.Nessa janela Where, escolha a co-luna CIDADE, (imagem 008) opera-

Tabela: clique duplo exibe conteúdo

AND OU OR?

> Dúvidas sobre a utilização doscritérios AND e OR costumam serfreqüentes entre os iniciantes naarte de armazenar informação.Quando colocamos a instrução OR,acrescentamos registros ao resul-tado. Quando utilizamos AND, res-tringimos. Para exemplificar, ima-

gine um amigo procurando na-morada. Ele prefere loiras deolhos azuis. Então deve especi-ficar loira AND olhos azuis. Ago-ra, se para você tanto faz se a mo-ça é loira ou morena, defina a con-sulta com loiras OR morenas. Suaspossibilidades serão maiores.

Quando adicionamos o critério paraas duas cidades, se você observar adeclaração SQL montada, vai notarque a cláusula WHERE mudou para:WHERE CLIENTES.CIDADE = ’SãoBernardo’ OR CLIENTES.CIDADE =’São Paulo’;

Note que a diferença entre asduas instruções SQL é a quantida-de de parâmetros contidos exata-mente na cláusula Where. Da mes-ma forma, a diferença da cláusulaWhere entre uma consulta que pos-sua o critério: “São Bernardo”, e ou-tra com o critério: “São Bernardo”OU “São Paulo”, será a quantidadede campos na cláusula Where.

075_TUT GUIA DB2 25/02/2006 23:58 Page 76

Page 74: Colecao InfoBanco de Dados

TUTORIAL/INTERFACE WEB

COLEÇÃO INFO > 79

O PHPMYADMINDOMA O MYSQL

APRENDA A USAR O PHPMYADMIN PARA CRIAR BANCOS DE DADOS SEM ESCREVER EM SQL

POR TONI CAVALHEIRO

TUTORIAL/INTERFACE WEB

78 < COLEÇÃO INFO

opular por ser um geren-ciador de bancos de da-dos confiável e gratuito,o MySQL fica devendo

uma interface gráfica para o desenvol-vedor. Sem ela, o uso desse softwarefica restrito aos programadores quedominam a linguagem SQL. A MySQLAB, que produz o banco de dados, ofe-rece o MySQL Administrator, uma fer-ramenta de gerenciamento, mas nãoé tão popular quanto o phpMyAdmin,que permite comandar o MySQL pormeio de uma interface via web. Comele, é possível criar e modificar bancosde dados sem escrever os comandosem SQL. O phpMyAdmin também é óti-mo para aprender SQL, uma vez quepode-se visualizar o código gerado.Neste tutorial, vamos criar um bancode dados com o phpMyAdmin. Paraisso, é preciso ter um servidor Apachecom PHP e MySQL, itens presentes emquase todas as distribuições do Linux.Se você quiser instalá-los no Windows,pode optar por um pacote como oApache2Triad (www.info.abril.com.br/download/3788.shtml), que reúneos três softwares. Vamos ao tutorial.

1. INSTALAÇÃOO primeiro passo é baixar o phpMyAd-min (www.info.abril.com.br/download/3260.shtml) e descompactar osarquivos. Crie uma pasta no servidorApache com o nome mysql e ponhaos arquivos do software nela.

2. CONFIGURAÇÃOVamos configurar. Abra, no Bloco deNotas, o arquivo config.inc.php, que es-tá na pasta mysql. Localize este trecho:$cfg[‘Servers’][$i]['host’] = ‘localhost’; // MySQL hostname orIP address$cfg[‘Servers’][$i][‘port’]= “; //MySQL port - leave blank for default Na primeira linha, altere o parâme-tro host para o nome ou o endere-ço IP do servidor. Se o phpMyAdminestiver na mesma máquina que oMySQL, deixe “localhost” mesmo.Caso seu MySQL utilize alguma por-ta especial, indique-a na linha se-guinte. Coloque o número da portaentre os apóstrofos logo após o si-nal de igual. A porta-padrão é a3306. Caso ocorra algum tipo de pro-

P

blema, verifique se essa porta estáliberada no firewall.

3. AUTENTICAÇÃOPor padrão, o phpMyAdmin usa aautenticação baseada no computa-dor. Você indica uma máquina clien-te e ele só faz a conexão com ela.Vamos alterar isso para que a au-tenticação seja feita com base nonome de usuário. Para isso, loca-lize a seguinte linha no arquivoconfig.inc.php:$cfg[‘Servers’][$i][‘auth_type’] =‘config’; // Authentication method(config, http or cookie based)?

Troque a palavra “config” por“http”, mantendo os apóstrofos. Sal-ve o arquivo e feche o Bloco de No-tas. Depois disso, o phpMyAdmin es-tará pronto para ser usado. Abra obrowser e digite a seguinte URL:http://localhost/mysql

Você verá uma tela de logon. Se éa primeira vez que você acessa oMySQL, digite rootcomo nome de usuá-rio e deixe a senhaem branco.

4. O BANCO DEDADOSUm servidor como oMySQL pode contervários bancos de da-dos. Cada um é for-mado por um certonúmero de tabelas.As tabelas são divi-didas em colunas e

linhas horizontais, que são chama-das, respectivamente, de campos eregistros. Vamos criar um pequenobanco de dados com o cadastro declientes de uma empresa qualquer.Para começar, na página inicial dophpMyAdmin, procure o campo“Criar novo banco de dados”. Digi-te a palavra empresa nele e cliqueno botão Criar. Todos os nomes dosbancos de dados devem ser grafa-dos em letras minúsculas.

5. TABELASO próximo passo será criar uma tabe-la. O próprio phpMyAdmin já sugereessa operação. Digite o nome tb_agen-da para a tabela. Como ela terá novecampos, coloque o número 9 em Cam-pos e pressione o botão Executar. É re-comendável iniciar o nome de cada ta-bela com as letras “tb_”. Com essa no-menclatura, você poderá encontrar astabelas mais facilmente no código-fon-te do seu programa.

Página inicial: ponto de partida do phpMyAdmin para acriação dos vários bancos de dados que o MySQL comporta

078_MY_ADMIN1 26/02/2006 00:00 Page 78

Page 75: Colecao InfoBanco de Dados

TUTORIAL/INTERFACE WEB

COLEÇÃO INFO > 79

O PHPMYADMINDOMA O MYSQL

APRENDA A USAR O PHPMYADMIN PARA CRIAR BANCOS DE DADOS SEM ESCREVER EM SQL

POR TONI CAVALHEIRO

TUTORIAL/INTERFACE WEB

78 < COLEÇÃO INFO

opular por ser um geren-ciador de bancos de da-dos confiável e gratuito,o MySQL fica devendo

uma interface gráfica para o desenvol-vedor. Sem ela, o uso desse softwarefica restrito aos programadores quedominam a linguagem SQL. A MySQLAB, que produz o banco de dados, ofe-rece o MySQL Administrator, uma fer-ramenta de gerenciamento, mas nãoé tão popular quanto o phpMyAdmin,que permite comandar o MySQL pormeio de uma interface via web. Comele, é possível criar e modificar bancosde dados sem escrever os comandosem SQL. O phpMyAdmin também é óti-mo para aprender SQL, uma vez quepode-se visualizar o código gerado.Neste tutorial, vamos criar um bancode dados com o phpMyAdmin. Paraisso, é preciso ter um servidor Apachecom PHP e MySQL, itens presentes emquase todas as distribuições do Linux.Se você quiser instalá-los no Windows,pode optar por um pacote como oApache2Triad (www.info.abril.com.br/download/3788.shtml), que reúneos três softwares. Vamos ao tutorial.

1. INSTALAÇÃOO primeiro passo é baixar o phpMyAd-min (www.info.abril.com.br/download/3260.shtml) e descompactar osarquivos. Crie uma pasta no servidorApache com o nome mysql e ponhaos arquivos do software nela.

2. CONFIGURAÇÃOVamos configurar. Abra, no Bloco deNotas, o arquivo config.inc.php, que es-tá na pasta mysql. Localize este trecho:$cfg[‘Servers’][$i]['host’] = ‘localhost’; // MySQL hostname orIP address$cfg[‘Servers’][$i][‘port’]= “; //MySQL port - leave blank for default Na primeira linha, altere o parâme-tro host para o nome ou o endere-ço IP do servidor. Se o phpMyAdminestiver na mesma máquina que oMySQL, deixe “localhost” mesmo.Caso seu MySQL utilize alguma por-ta especial, indique-a na linha se-guinte. Coloque o número da portaentre os apóstrofos logo após o si-nal de igual. A porta-padrão é a3306. Caso ocorra algum tipo de pro-

P

blema, verifique se essa porta estáliberada no firewall.

3. AUTENTICAÇÃOPor padrão, o phpMyAdmin usa aautenticação baseada no computa-dor. Você indica uma máquina clien-te e ele só faz a conexão com ela.Vamos alterar isso para que a au-tenticação seja feita com base nonome de usuário. Para isso, loca-lize a seguinte linha no arquivoconfig.inc.php:$cfg[‘Servers’][$i][‘auth_type’] =‘config’; // Authentication method(config, http or cookie based)?

Troque a palavra “config” por“http”, mantendo os apóstrofos. Sal-ve o arquivo e feche o Bloco de No-tas. Depois disso, o phpMyAdmin es-tará pronto para ser usado. Abra obrowser e digite a seguinte URL:http://localhost/mysql

Você verá uma tela de logon. Se éa primeira vez que você acessa oMySQL, digite rootcomo nome de usuá-rio e deixe a senhaem branco.

4. O BANCO DEDADOSUm servidor como oMySQL pode contervários bancos de da-dos. Cada um é for-mado por um certonúmero de tabelas.As tabelas são divi-didas em colunas e

linhas horizontais, que são chama-das, respectivamente, de campos eregistros. Vamos criar um pequenobanco de dados com o cadastro declientes de uma empresa qualquer.Para começar, na página inicial dophpMyAdmin, procure o campo“Criar novo banco de dados”. Digi-te a palavra empresa nele e cliqueno botão Criar. Todos os nomes dosbancos de dados devem ser grafa-dos em letras minúsculas.

5. TABELASO próximo passo será criar uma tabe-la. O próprio phpMyAdmin já sugereessa operação. Digite o nome tb_agen-da para a tabela. Como ela terá novecampos, coloque o número 9 em Cam-pos e pressione o botão Executar. É re-comendável iniciar o nome de cada ta-bela com as letras “tb_”. Com essa no-menclatura, você poderá encontrar astabelas mais facilmente no código-fon-te do seu programa.

Página inicial: ponto de partida do phpMyAdmin para acriação dos vários bancos de dados que o MySQL comporta

078_MY_ADMIN1 26/02/2006 00:00 Page 78

Page 76: Colecao InfoBanco de Dados

Esqueça as demais especificaçõesdo phpMyAdmin, como Atributos, Nu-lo e Padrão. Esses itens não serão ne-cessários e devem ser deixados embranco. Procure evitar o uso de cedi-lha, acentuação ou caracteres espe-ciais no nome dos campos. Isso podecriar problemas se você resolver trans-portar a base de dados para outro ser-vidor. Ao terminar, clique em Salvar.

8. CHAVEVamos definir a chave primária, umareferência que será usada como ín-dice para a tabela. Clique em Estru-tura e, em seguida, no ícone em for-ma de chave ao lado do campo codda tabela. Uma tela de confirmaçãoaparecerá. Clique em OK. Agora liguea numeração automática do campocod. Ainda na guia Estrutura, pres-sione o ícone em forma de lápis queestá ao lado desse campo e selecio-ne a opção auto_increment, disponí-vel em Extra. Clique em Salvar.

9. INSERINDO DADOSJá podemos inserir dados na tabe-la. Primeiro, mostraremos como in-

TUTORIAL/INTERFACE WEB

80 < COLEÇÃO INFO

TUTORIAL/INTERFACE WEB

COLEÇÃO INFO > 81

6. TIPOS DE CAMPOAs tabelas podem conter vários ti-pos de campo. Vamos dar uma olha-da nos principais.■ VARCHAR Armazena seqüênciasde letras e números. Valores armaze-nados nesse campo não podem serusados para cálculos matemáticos (sevocê somar “1” + “2”, receberá “12”como resultado, em vez de “3”).■ TEXT Usado para armazenar ostextos. Se você tiver um sistema denotícias online, por exemplo, iráguardar cada um dos artigos em umcampo TEXT.■ DATE Campo usado para datas. Es-tá presente na maioria das tabelas.■ INT É um dos tipos de campo maisusados. Armazena números inteiros,sejam eles negativos ou positivos. ■ DECIMAL Armazena números de-cimais. Repare que, ao lado desse cam-po, aparece o item “tamanho/definir”.Esse valor indica a precisão do cam-po decimal que você está criando. Sevocê preencher com o valor 10,3, porexemplo, estará informando ao servi-dor que a precisão será de dez dígi-tos e três casas decimais. Se você nãoespecificar nenhum valor, o sistemaassume 10,0 como formato-padrão.■ BLOB É normalmente usado paraarmazenar imagens.

7. DEFINIÇÕESO phpMyAdmin mostra um formu-lário que devemos preencher comas definições dos nove campos danossa tabela. Complete o formulá-rio com os valores da tabela a seguir:

10. DADOS NOATACADOA técnica do passoanterior para inserirdados não é muitoprática se você pre-cisar incluir muitosnomes. A melhorsaída é criar um ar-quivo de texto comos dados e importá-lo para o MySQL. Pa-ra isso, coloque osdados de cada clien-

te numa linha, usando ponto-e-vír-gula como separador. Os camposdevem estar na ordem especifica-da na tabela, como neste exemplo: ;“João da Silva”;“(11) 6000-1010”;“Rua do Endereço, 100”; “SãoPaulo”;“SP”;“Brasil”;“01000000”;“[email protected]”;“Paulo da Silva”;“(21)1000-1212”;“Rua do Teste, 200”;“Niterói”;“RJ”;“Brasil”;“10201000”;

CAMPO

cod

nome

telefone

endereco

cidade

estado

pais

cep

email

TAMANHO/DEFINIR

100

15

50

30

2

15

8

30

TIPO

INT

VARCHAR

VARCHAR

VARCHAR

VARCHAR

VARCHAR

VARCHAR

VARCHAR

VARCHAR

Campos: especifique o nome, o tipo e o tamanho

cluir dados da forma convencionale, em seguida, você verá como mon-tar o cadastro de clientes importan-do dados de um arquivo de texto.

Para incluir dados no MySQL, cli-que na guia Inserir, localizada na par-te superior da janela do phpMyAd-min. O programa permite que vocêinclua dois registros de cada vez, bas-tando preencher o formulário com in-formações tais como nome, endere-ço e telefone dosclientes. Nesse mo-mento, preencha ape-nas o item Valor. Oitem Funções permi-te que você dê umtratamento persona-lizado aos dados queestá digitando, masnão vamos usá-noneste tutorial. Casovocê queira incluiroutros novos dados,marque a opção “In-serir novo registro”.

Importar dados: faça um arquivo de texto e importe para o MySQL

078_MY_ADMIN1 26/02/2006 00:01 Page 80

Page 77: Colecao InfoBanco de Dados

Esqueça as demais especificaçõesdo phpMyAdmin, como Atributos, Nu-lo e Padrão. Esses itens não serão ne-cessários e devem ser deixados embranco. Procure evitar o uso de cedi-lha, acentuação ou caracteres espe-ciais no nome dos campos. Isso podecriar problemas se você resolver trans-portar a base de dados para outro ser-vidor. Ao terminar, clique em Salvar.

8. CHAVEVamos definir a chave primária, umareferência que será usada como ín-dice para a tabela. Clique em Estru-tura e, em seguida, no ícone em for-ma de chave ao lado do campo codda tabela. Uma tela de confirmaçãoaparecerá. Clique em OK. Agora liguea numeração automática do campocod. Ainda na guia Estrutura, pres-sione o ícone em forma de lápis queestá ao lado desse campo e selecio-ne a opção auto_increment, disponí-vel em Extra. Clique em Salvar.

9. INSERINDO DADOSJá podemos inserir dados na tabe-la. Primeiro, mostraremos como in-

TUTORIAL/INTERFACE WEB

80 < COLEÇÃO INFO

TUTORIAL/INTERFACE WEB

COLEÇÃO INFO > 81

6. TIPOS DE CAMPOAs tabelas podem conter vários ti-pos de campo. Vamos dar uma olha-da nos principais.■ VARCHAR Armazena seqüênciasde letras e números. Valores armaze-nados nesse campo não podem serusados para cálculos matemáticos (sevocê somar “1” + “2”, receberá “12”como resultado, em vez de “3”).■ TEXT Usado para armazenar ostextos. Se você tiver um sistema denotícias online, por exemplo, iráguardar cada um dos artigos em umcampo TEXT.■ DATE Campo usado para datas. Es-tá presente na maioria das tabelas.■ INT É um dos tipos de campo maisusados. Armazena números inteiros,sejam eles negativos ou positivos. ■ DECIMAL Armazena números de-cimais. Repare que, ao lado desse cam-po, aparece o item “tamanho/definir”.Esse valor indica a precisão do cam-po decimal que você está criando. Sevocê preencher com o valor 10,3, porexemplo, estará informando ao servi-dor que a precisão será de dez dígi-tos e três casas decimais. Se você nãoespecificar nenhum valor, o sistemaassume 10,0 como formato-padrão.■ BLOB É normalmente usado paraarmazenar imagens.

7. DEFINIÇÕESO phpMyAdmin mostra um formu-lário que devemos preencher comas definições dos nove campos danossa tabela. Complete o formulá-rio com os valores da tabela a seguir:

10. DADOS NOATACADOA técnica do passoanterior para inserirdados não é muitoprática se você pre-cisar incluir muitosnomes. A melhorsaída é criar um ar-quivo de texto comos dados e importá-lo para o MySQL. Pa-ra isso, coloque osdados de cada clien-

te numa linha, usando ponto-e-vír-gula como separador. Os camposdevem estar na ordem especifica-da na tabela, como neste exemplo: ;“João da Silva”;“(11) 6000-1010”;“Rua do Endereço, 100”; “SãoPaulo”;“SP”;“Brasil”;“01000000”;“[email protected]”;“Paulo da Silva”;“(21)1000-1212”;“Rua do Teste, 200”;“Niterói”;“RJ”;“Brasil”;“10201000”;

CAMPO

cod

nome

telefone

endereco

cidade

estado

pais

cep

email

TAMANHO/DEFINIR

100

15

50

30

2

15

8

30

TIPO

INT

VARCHAR

VARCHAR

VARCHAR

VARCHAR

VARCHAR

VARCHAR

VARCHAR

VARCHAR

Campos: especifique o nome, o tipo e o tamanho

cluir dados da forma convencionale, em seguida, você verá como mon-tar o cadastro de clientes importan-do dados de um arquivo de texto.

Para incluir dados no MySQL, cli-que na guia Inserir, localizada na par-te superior da janela do phpMyAd-min. O programa permite que vocêinclua dois registros de cada vez, bas-tando preencher o formulário com in-formações tais como nome, endere-ço e telefone dosclientes. Nesse mo-mento, preencha ape-nas o item Valor. Oitem Funções permi-te que você dê umtratamento persona-lizado aos dados queestá digitando, masnão vamos usá-noneste tutorial. Casovocê queira incluiroutros novos dados,marque a opção “In-serir novo registro”.

Importar dados: faça um arquivo de texto e importe para o MySQL

078_MY_ADMIN1 26/02/2006 00:01 Page 80

Page 78: Colecao InfoBanco de Dados

TUTORIAL/INTERFACE WEB

82 < COLEÇÃO INFO

[email protected]”;“Jorge Pinheiro”;“(609) 1000-1000”;“3rd Test Street”;“Adrian”;“MI”;“USA”;“11000123”;“[email protected]

Salve esse arquivo com o nomeagenda.txt. De volta ao phpMyAdmin,clique em SQL e depois em Insere Ar-quivo Texto na Tabela. Clique emBrowse, localize o arquivo que vocêcriou. Para concluir a entrada dos da-dos, clique em Submeter. Os dadosserão incorporados ao cadastro declientes. A montagem do nosso ban-co de dados está concluída. Nos pró-ximos dois passos, damos dicas pa-ra quem está aprendendo SQL.

11. EXAMINANDO O CÓDIGOPode ser interessante dar uma olha-da no código em SQL gerado pelophpMyAdmin. Clique em Exportar egere um arquivo com a extensão SQL.Depois, abra esse arquivo no Blocode Notas ou num editor de progra-mas. Analise o código e veja como ophpMyAdmin estruturou a tabela.

12. COM O SQLHá certas operaçõesque não podem serfeitas apenas com ophpMyAdmin. Elasexigem a digitação decomandos em SQL. Is-so é feito na guia SQL,bastando digitar oscomandos e pressio-nar o botão Executarpara enviá-los ao

MySQL. Vamos ver exemplos das qua-tro operações básicas de bancos dedados — consulta, inclusão, edição eexclusão — em SQL.SELECT * from tb_dados WHEREcod = ‘10’ ORDER BY nome;Esse comando seleciona e lista to-dos os campos da tabela tb_dadossomente nas linhas que tiverem ocódigo 10. O parâmetro ORDER BYdetermina as linhas em ordem alfa-bética pelo campo nome.INSERT INTO tb_dados (endereco)VALUES (‘[email protected]’);Esse código insere o endereço [email protected] no campo endereco da ta-bela tb_dados.UPDATE tb_dados SET nome =‘INFO’ WHERE cod = ‘10’;Modifica o campo nome da tabelatb_dados para Info, mas só nas linhasque tiverem 10 no campo cod.DELETE FROM tb_dados WHEREnome like ‘a%’;Apaga linhas da tabela tb_dados quecomeçarem com a letra a. O símbolo% é usado como curinga.

SQL: os comandos são enviados direto para o MySQL

078_MY_ADMIN1 26/02/2006 00:01 Page 82

Page 79: Colecao InfoBanco de Dados

TUTORIAL/DESENVOLVIMENTO

COLEÇÃO INFO > 83

ATUALIZAÇÃO ÉCOM O AJAX

COMBINAÇÃO DE VÁRIAS TECNOLOGIAS, O AJAX AGILIZAOS APLICATIVOS QUE ACESSAM BANCOS DE DADOS ONLINE

POR CARLOS CHERNIJ

Ajax vem dando o quefalar no mundo dos si-tes dinâmicos. Essa téc-nica de desenvolvimen-

to usa HTML, JavaScript, XML e algu-ma linguagem para a web, como PHP,ColdFusion, Java ou C# e tem noGoogle um ilustre usuário. Quando al-guém distribui corações para os ami-gos no orkut, por exemplo, a páginaatualiza os campos correspondentessem recarregar todo o resto, agilizandoa operação. Num formulário normalda web, os dados fornecidos pelo in-ternauta são enviados para o servidor,

que devolve uma nova página com oresultado. Para demonstrar como seprograma em Ajax, vamos criar umserviço de cadastro com PHP e HTML.

1. O SERVIDOR Para executar nosso exemplo, é pre-ciso ter um servidor HTTP Apache 2.0rodando PHP 4.4 no modo binário CGIe o banco de dados MySQL 4.1 ou maisrecente. Esses recursos estão dispo-níveis na maioria dos planos de hos-pedagem de sites. Baixe o exemploem www.info.abril.com.br/download/4326.shtml e descompacte-o.

Você vai obter uma pas-ta chamada infoajax comvários arquivos. Coloqueessa pasta no diretório-raiz do servidor Apache(diretório htdocs). Paracriar nossa aplicação, usa-remos uma biblioteca declasses em PHP, a Xajax(www.info.abril.com.br/download/4327.shtml).Ela está incluída no arqui-vo compactado, dentro dapasta includes, com o no-me xajax.inc.php.

O

Formulário: cadastro de clientes feito com Ajax

083_084_AJAX 26/02/2006 00:20 Page 83

Page 80: Colecao InfoBanco de Dados

TUTORIAL/DESENVOLVIMENTO

COLEÇÃO INFO > 85

TUTORIAL/DESENVOLVIMENTO

84 < COLEÇÃO INFO

o $xajax->registerFunction(),que permite agregar funções es-critas em PHP que realizarão ope-rações com dados do formuláriode forma assíncrona. Cada funçãodessas deve possuir um objeto daclasse xajaxResponse(), que con-terá os dados a atualizar.

7. TELA DE CADASTRONa tela de cadastro, o exemplo deuso do Ajax é composto dos menuscom os dados de estado e cidade.A lista de cidades é atualizada deacordo com o estado escolhido. Pa-ra selecionar as cidades, há a fun-ção carregaCidades. No arquivo ca-dastro.php, observe o código des-sa função. Após ler o valor selecio-nado no menu Estado, a função rea-liza uma consulta na tabela para se-lecionar as cidades corresponden-tes. Cada registro encontrado é adi-cionado ao objeto $objResponse,por meio do método addAssign. Nocódigo, temos esta linha: $objResponse->addAssig(“cidades”,“innerHTML”,$html)

O item “cidades” é a identificaçãoda divisão da página onde ficará omenu com as cidades, e “in-nerHTML” especifica que o conteú-do da variável $html vai substituiro código html dentro da divisão. Nofinal, é chamado o método getXML(),que retorna uma seção de códigoXML ao objeto xajax. Após imple-mentar a função, vamos incorporá-la ao xajax por meio do comando:

$xajax->registerFunction(“carregaCidades”)

8. XAJAXApós a definição das funções, quan-do começa a seção de código HTMLdo arquivo cadastro.php, é precisoespecificar que o xajax deve tomarpara si os comandos de post do for-mulário. Isso é feito pelo comando$xajax->processRequests() Em se-guida, devemos criar um evento quechamará a função que registramosno objeto xajax. Isso é feito na linha:<select id=“uf”name=“uf”onChange=“javascript:aguarde();xajax_carregaCidades(this.value);”style=“width: 50px;”>Cada vez que o campo Estado mu-dar, a função carregaCidades seráchamada e retornará a lista de cida-des em código XML. O xajax utiliza-rá a lista num JavaScript, que, por suavez, atualizará as cidades.

Um mecanismo similar é utilizadona página index.php, que contém omódulo de consulta. Abra-a num edi-tor de textos. A função listaUsuariosutiliza como parâmetro o texto dacaixa de busca. Ao ser chamada, elafaz a consulta no banco e adiciona osresultados à variável $html para quesejam exibidos na página. Ao clicarem Buscar, a função listaUsuarios pas-sa um novo parâmetro para a con-sulta. Ele é enviado para o servidorpelo xajax, que recebe a resposta emXML e usa, então, um programa emJavaScript para reescrever o códigoHTML, que mostra os resultados.

2. BASE DE DADOSPrepare a base de dadosdo aplicativo. O INFOLAButilizou o phpMyAdmin(www.info.abril.com.br/download/3260.shtml)nessa tarefa. Se esse soft-ware estiver instalado noservidor, digite o endere-ço correspondente parausá-lo, como neste exem-plo: http://www.nome.com.br/phpmyadmin.Na tela inicial, procureo campo Criar Novo Banco de Da-dos e digite xajax. Clique em Criar.

3. TABELASVamos gerar tabelas para a nossaaplicação. No phpMyAdmin, acioneo menu do lado esquerdo da tela eselecione o banco de dados xajax.Ative, então, a aba MySQL. No cam-po Localização do Arquivo Texto,clique em Procurar. Navegue até oarquivo bd.sql, na pasta infoajax, eselecione-o. Em Conjunto de Carac-teres do Arquivo, escolha latin1. Cli-que em Executar para rodar o pro-grama em SQL. Isso cria as tabelas.

4. CONFIGURAÇÕES Vamos editar o arquivo bd.inc.phpque fica na pasta includes. Abra-onum editor de textos e procure: $conexao = mysql_connect (“localhost”,“usuário”,“senha”);mysql_select_db(‘meubanco’,$conexao);

Substitua as palavras “usuário” e

phpMyAdmin: criação do banco de dados xajax

“senha” pelo nome de usuário e a se-nha que deverão ser usados paraacesso ao MySQL. Na linha de baixo,substitua “meubanco” por “xajax”.

5. O APLICATIVO Para ver o aplicativo-exemplo fun-cionando, abra o browser e digiteeste endereço: http://www.nome.com.br/infoajax. No lugar de“www.nome.com.br”, coloque o en-dereço do seu site. Clique em Ca-dastrar e inclua dados de uma pes-soa no banco. Depois, volte à pági-na anterior e faça uma consulta.

6. EXAMINADO O CÓDIGOAnalisaremos a seguir o arquivocadastro.php, que contém as roti-nas para a inclusão de registros.Abra o arquivo num editor de tex-tos e, logo no começo, observe alinha $xajax = new xajax();. Es-se comando define o objeto xajax,que vai processar as ações de postdo formulário. Um dos métodos é

083_084_AJAX 26/02/2006 00:21 Page 84

Page 81: Colecao InfoBanco de Dados

TUTORIAL/DESENVOLVIMENTO

COLEÇÃO INFO > 85

TUTORIAL/DESENVOLVIMENTO

84 < COLEÇÃO INFO

o $xajax->registerFunction(),que permite agregar funções es-critas em PHP que realizarão ope-rações com dados do formuláriode forma assíncrona. Cada funçãodessas deve possuir um objeto daclasse xajaxResponse(), que con-terá os dados a atualizar.

7. TELA DE CADASTRONa tela de cadastro, o exemplo deuso do Ajax é composto dos menuscom os dados de estado e cidade.A lista de cidades é atualizada deacordo com o estado escolhido. Pa-ra selecionar as cidades, há a fun-ção carregaCidades. No arquivo ca-dastro.php, observe o código des-sa função. Após ler o valor selecio-nado no menu Estado, a função rea-liza uma consulta na tabela para se-lecionar as cidades corresponden-tes. Cada registro encontrado é adi-cionado ao objeto $objResponse,por meio do método addAssign. Nocódigo, temos esta linha: $objResponse->addAssig(“cidades”,“innerHTML”,$html)

O item “cidades” é a identificaçãoda divisão da página onde ficará omenu com as cidades, e “in-nerHTML” especifica que o conteú-do da variável $html vai substituiro código html dentro da divisão. Nofinal, é chamado o método getXML(),que retorna uma seção de códigoXML ao objeto xajax. Após imple-mentar a função, vamos incorporá-la ao xajax por meio do comando:

$xajax->registerFunction(“carregaCidades”)

8. XAJAXApós a definição das funções, quan-do começa a seção de código HTMLdo arquivo cadastro.php, é precisoespecificar que o xajax deve tomarpara si os comandos de post do for-mulário. Isso é feito pelo comando$xajax->processRequests() Em se-guida, devemos criar um evento quechamará a função que registramosno objeto xajax. Isso é feito na linha:<select id=“uf”name=“uf”onChange=“javascript:aguarde();xajax_carregaCidades(this.value);”style=“width: 50px;”>Cada vez que o campo Estado mu-dar, a função carregaCidades seráchamada e retornará a lista de cida-des em código XML. O xajax utiliza-rá a lista num JavaScript, que, por suavez, atualizará as cidades.

Um mecanismo similar é utilizadona página index.php, que contém omódulo de consulta. Abra-a num edi-tor de textos. A função listaUsuariosutiliza como parâmetro o texto dacaixa de busca. Ao ser chamada, elafaz a consulta no banco e adiciona osresultados à variável $html para quesejam exibidos na página. Ao clicarem Buscar, a função listaUsuarios pas-sa um novo parâmetro para a con-sulta. Ele é enviado para o servidorpelo xajax, que recebe a resposta emXML e usa, então, um programa emJavaScript para reescrever o códigoHTML, que mostra os resultados.

2. BASE DE DADOSPrepare a base de dadosdo aplicativo. O INFOLAButilizou o phpMyAdmin(www.info.abril.com.br/download/3260.shtml)nessa tarefa. Se esse soft-ware estiver instalado noservidor, digite o endere-ço correspondente parausá-lo, como neste exem-plo: http://www.nome.com.br/phpmyadmin.Na tela inicial, procureo campo Criar Novo Banco de Da-dos e digite xajax. Clique em Criar.

3. TABELASVamos gerar tabelas para a nossaaplicação. No phpMyAdmin, acioneo menu do lado esquerdo da tela eselecione o banco de dados xajax.Ative, então, a aba MySQL. No cam-po Localização do Arquivo Texto,clique em Procurar. Navegue até oarquivo bd.sql, na pasta infoajax, eselecione-o. Em Conjunto de Carac-teres do Arquivo, escolha latin1. Cli-que em Executar para rodar o pro-grama em SQL. Isso cria as tabelas.

4. CONFIGURAÇÕES Vamos editar o arquivo bd.inc.phpque fica na pasta includes. Abra-onum editor de textos e procure: $conexao = mysql_connect (“localhost”,“usuário”,“senha”);mysql_select_db(‘meubanco’,$conexao);

Substitua as palavras “usuário” e

phpMyAdmin: criação do banco de dados xajax

“senha” pelo nome de usuário e a se-nha que deverão ser usados paraacesso ao MySQL. Na linha de baixo,substitua “meubanco” por “xajax”.

5. O APLICATIVO Para ver o aplicativo-exemplo fun-cionando, abra o browser e digiteeste endereço: http://www.nome.com.br/infoajax. No lugar de“www.nome.com.br”, coloque o en-dereço do seu site. Clique em Ca-dastrar e inclua dados de uma pes-soa no banco. Depois, volte à pági-na anterior e faça uma consulta.

6. EXAMINADO O CÓDIGOAnalisaremos a seguir o arquivocadastro.php, que contém as roti-nas para a inclusão de registros.Abra o arquivo num editor de tex-tos e, logo no começo, observe alinha $xajax = new xajax();. Es-se comando define o objeto xajax,que vai processar as ações de postdo formulário. Um dos métodos é

083_084_AJAX 26/02/2006 00:21 Page 84

Page 82: Colecao InfoBanco de Dados

TUTORIAL/CONSULTAS

COLEÇÃO INFO > 87

PESQUISE BEMNO ACCESS

MONTE CONSULTAS COM DUAS TABELAS E ESCAPE DAS PEGADINHAS NA LÓGICA DOS DADOS

POR CARLOS MACHADO

TUTORIAL/CONSULTAS

86 < COLEÇÃO INFO

uem gosta de música eorganização costumanão resistir a um bancode dados. Em geral, uti-

liza o Access, que já está ali mesmono PC, no pacote Office. Vamos su-por que você tenha montado umatabela no Access reunindo todos osseus arquivos de música em MP3.Como também gosta de analisar asletras — e decorar para cantar nochuveiro —, criou uma tabela paraelas. Nem todas as músicas têm sualetra no banco, e você quer saberquais MP3 dispõem de letras.

A solução pode ser encontrada noAccess a um toque do mouse, semprogramação. Será preciso construiruma consulta simples, com o objetivode identificar, em duas tabelas, quaisregistros contêm as mesmas informa-ções em dois campos indicados: umem cada tabela. Essa solução pode seraplicada em muitas outras situações.

O problema pode ser representadopor um diagrama que mostra dois con-juntos de dados, um para cada tabe-la. O xis da questão é identificar a por-ção comum às duas tabelas — corres-

pondente, no desenho, à área em queos dois conjuntos se superpõem. Ago-ra que já caracterizamos o problema,vamos à solução, passo a passo.

1. A TABELA DE MP3Para acompanhar o exemplo, crieno Access uma tabela com os cam-pos Intérprete e Título, ambos do ti-po Texto. Salve-a com o nometabMP3. Essa tabela, claro, vai con-ter a lista das músicas.

Q

2. A TABELA DAS LETRASCrie outra tabela, com os camposIntérprete, Título e Letra. Este últi-mo deve ser do tipo Memorando,para abrigar a letra da música. Ocampo do tipo Texto tem capacida-de máxima para 255 caracteres. Aletra não caberia nele. Por sua vez,o campo de memorando suportaaté 65 536 caracteres. Dê à segun-da tabela o nome tabLetras. Tam-bém não haveria problema se ocampo Título, que é o ponto comumentre as tabelas, tivesse nome dife-rente nas duas. No entanto, para fa-cilitar a compreensão, é mais cô-modo usar o mesmo nome.

3. CRIE A CONSULTANa janela Banco de Dados, clique naorelha Consulta. Dê um duplo cliqueno comando Criar Consulta no ModoDesign para projetar um objeto des-se tipo a partir do zero. O Access abreduas janelas: Mostrar Tabela e Con-sulta1. Selecione (mouse mais a te-cla Ctrl) o nome das duas tabelas —tabMP3 e tabLetras — na primeira ja-nela e clique no botão Adicionar.

4. A LINHA NEGRADois quadros com os campos dastabelas aparecem na área superiorde Consulta1. Se as duas tabelas ti-verem chaves primárias chamadasCódigo (nome-padrão), o Access vaimostrar uma linha negra ligando es-ses dois campos. Clique nessa linhae acione a tecla Del para apagá-la.Isso porque o valor Código numa ta-

bela não tem nenhum parentescocom seu homônimo na outra.

5. O PULO-D0-GATOCom o mouse, clique no campo Tí-tulo de uma tabela e arraste-o parao campo de mesmo nome na outratabela. Uma linha passa a ligar osdois campos, indicando que a con-sulta deve procurar neles informa-ções iguais. Dica: o procedimentotambém funciona quando o nomedos dois campos não é o mesmo.

No quadro tabLetras, arraste pa-ra a linha Campo, embaixo, os cam-pos Título e Intérprete. Opcional-mente, indique que o campo Intér-prete seja apresentado em ordemalfabética. Para isso, na linha Clas-sificação, escolha Crescente.

Salve a consulta (com um nomeamigável, como cnsMP3comLetras1)e execute-a. Veja que ela exibe exa-

Consulta 1 (no alto) e seusresultados: a base é a tabLetras

Consulta 2: o resultado (embaixo) nãoé igual ao da consulta 1

086_CONSULTA_TAB_ACCESS 26/02/2006 00:22 Page 86

Page 83: Colecao InfoBanco de Dados

TUTORIAL/CONSULTAS

COLEÇÃO INFO > 87

PESQUISE BEMNO ACCESS

MONTE CONSULTAS COM DUAS TABELAS E ESCAPE DAS PEGADINHAS NA LÓGICA DOS DADOS

POR CARLOS MACHADO

TUTORIAL/CONSULTAS

86 < COLEÇÃO INFO

uem gosta de música eorganização costumanão resistir a um bancode dados. Em geral, uti-

liza o Access, que já está ali mesmono PC, no pacote Office. Vamos su-por que você tenha montado umatabela no Access reunindo todos osseus arquivos de música em MP3.Como também gosta de analisar asletras — e decorar para cantar nochuveiro —, criou uma tabela paraelas. Nem todas as músicas têm sualetra no banco, e você quer saberquais MP3 dispõem de letras.

A solução pode ser encontrada noAccess a um toque do mouse, semprogramação. Será preciso construiruma consulta simples, com o objetivode identificar, em duas tabelas, quaisregistros contêm as mesmas informa-ções em dois campos indicados: umem cada tabela. Essa solução pode seraplicada em muitas outras situações.

O problema pode ser representadopor um diagrama que mostra dois con-juntos de dados, um para cada tabe-la. O xis da questão é identificar a por-ção comum às duas tabelas — corres-

pondente, no desenho, à área em queos dois conjuntos se superpõem. Ago-ra que já caracterizamos o problema,vamos à solução, passo a passo.

1. A TABELA DE MP3Para acompanhar o exemplo, crieno Access uma tabela com os cam-pos Intérprete e Título, ambos do ti-po Texto. Salve-a com o nometabMP3. Essa tabela, claro, vai con-ter a lista das músicas.

Q

2. A TABELA DAS LETRASCrie outra tabela, com os camposIntérprete, Título e Letra. Este últi-mo deve ser do tipo Memorando,para abrigar a letra da música. Ocampo do tipo Texto tem capacida-de máxima para 255 caracteres. Aletra não caberia nele. Por sua vez,o campo de memorando suportaaté 65 536 caracteres. Dê à segun-da tabela o nome tabLetras. Tam-bém não haveria problema se ocampo Título, que é o ponto comumentre as tabelas, tivesse nome dife-rente nas duas. No entanto, para fa-cilitar a compreensão, é mais cô-modo usar o mesmo nome.

3. CRIE A CONSULTANa janela Banco de Dados, clique naorelha Consulta. Dê um duplo cliqueno comando Criar Consulta no ModoDesign para projetar um objeto des-se tipo a partir do zero. O Access abreduas janelas: Mostrar Tabela e Con-sulta1. Selecione (mouse mais a te-cla Ctrl) o nome das duas tabelas —tabMP3 e tabLetras — na primeira ja-nela e clique no botão Adicionar.

4. A LINHA NEGRADois quadros com os campos dastabelas aparecem na área superiorde Consulta1. Se as duas tabelas ti-verem chaves primárias chamadasCódigo (nome-padrão), o Access vaimostrar uma linha negra ligando es-ses dois campos. Clique nessa linhae acione a tecla Del para apagá-la.Isso porque o valor Código numa ta-

bela não tem nenhum parentescocom seu homônimo na outra.

5. O PULO-D0-GATOCom o mouse, clique no campo Tí-tulo de uma tabela e arraste-o parao campo de mesmo nome na outratabela. Uma linha passa a ligar osdois campos, indicando que a con-sulta deve procurar neles informa-ções iguais. Dica: o procedimentotambém funciona quando o nomedos dois campos não é o mesmo.

No quadro tabLetras, arraste pa-ra a linha Campo, embaixo, os cam-pos Título e Intérprete. Opcional-mente, indique que o campo Intér-prete seja apresentado em ordemalfabética. Para isso, na linha Clas-sificação, escolha Crescente.

Salve a consulta (com um nomeamigável, como cnsMP3comLetras1)e execute-a. Veja que ela exibe exa-

Consulta 1 (no alto) e seusresultados: a base é a tabLetras

Consulta 2: o resultado (embaixo) nãoé igual ao da consulta 1

086_CONSULTA_TAB_ACCESS 26/02/2006 00:22 Page 86

Page 84: Colecao InfoBanco de Dados

TUTORIAL/CONSULTAS

88 < COLEÇÃO INFO

tamente os títulos comuns às duas ta-belas. A solução descrita acima apa-rentemente resolve o problema apre-sentado no início deste tutorial.

6. TESTE A CONSULTAFaça, agora, uma experiência impor-tante. Inclua, na tabela MP3, umamúsica cujo título já existe em tabLe-tras, mas registre aí outro intérpre-te. Escolha, de propósito, uma can-ção que não faz parte do núcleo co-mum entre as duas tabelas. Execu-te novamente a consulta. O que ocor-re? A nova música não aparece. Is-so porque a consulta está sendo fei-ta com base na tabela tabLetras.

7. MESMO TÍTULOAgora, na janela Banco de Dados,selecione a consulta cnsMP3com-Letras1 e copie-a. Cole-a no mesmolugar, com o nome de cnsMP3com-Letras2. Selecione essa nova con-sulta e clique no botão Design. Najanela da consulta, linha Tabela, es-

colha, nos dois campos, tabMP3 emvez de tabLetras. Salve a consulta.Em outras palavras, estamos fazen-do a mesma consulta, só que ago-ra a outra tabela é nosso ponto departida. Execute essa consulta mo-dificada. O que ocorre? A músicaaparece, mas com outro intérpre-te. Para comparar, abra as duas.

Ao trabalhar com bancos de da-dos, é preciso pensar em coisas des-se tipo. A questão é que duas can-ções com o mesmo título e cantoresdiferentes podem ser a mesma mú-sica ou não. Assim, se você quisergarantir a identidade de título e in-térprete, precisa construir uma con-sulta ligeiramente diferente.

8. OS INTÉRPRETESExperimente mais. Copie a pri-meira consulta e cole-a comocnsMP3comLetras11. Abra-a em mo-do Design e arraste o campo Intér-prete de uma tabela para o mesmocampo na outra. Com isso, estamosdizendo que tanto o título como ointérprete devem coincidir nas duastabelas. Agora, copie a tabelacnsMP3comLetras2 e cole-a comocnsMP3comLetras22. Arraste o cam-po Intérprete da mesma forma.

9. BUSCA DUPLAExecute, lado a lado, as consultas11 e 22. Embora se baseiem em ta-belas diferentes, elas dão os mes-míssimos resultados. A diferençaestá na busca de dupla identidade:de título e de intérprete.

Consultas 11 e 22: bases diferentes,mas com resultados iguais

086_CONSULTA_TAB_ACCESS 26/02/2006 00:23 Page 88

Page 85: Colecao InfoBanco de Dados

O EXIF VAI PARA O BANCO

APRENDA A CRIAR UMA BASE DE DADOS DE FOTOS NO SQLSERVER EXPRESS COM INFORMAÇÕES DA CÂMERA

POR NIVALDO FORESTI

COLEÇÃO INFO > 89

TUTORIAL/CADASTRO DE FOTOS

ue tal criar um banco dedados de fotografiassem perder muito tem-po na digitação dos de-

talhes? A idéia é boa e factível, seusarmos as informações Exif (Exchan-geable Image File Format) que as câ-

meras fotográficas digitais, em suamaioria, gravam em cada imagemcapturada por seus sensores. Entreessas informações preciosas estão adata e a hora em que a foto foi tira-da, a abertura do obturador, o tem-po de exposição, o nome do fabri-

Q

Banco de fotos: para criar um banco, selecione General na janela New Database

089_CADASTROFOTO_EXIF 26/02/2006 00:24 Page 89

Page 86: Colecao InfoBanco de Dados

TUTORIAL/CADASTRO DE FOTOS

COLEÇÃO INFO > 91

TUTORIAL/CADASTRO DE FOTOS

90 < COLEÇÃO INFO

cante e o modelo da máquina, alémda resolução da imagem. Neste tu-torial, vamos criar uma base de da-dos de fotos com informações Exifno SQL Server 2005 Express, da Mi-crosoft. Nosso banco terá três tabe-las: clientes, fotógrafos e pictures.Vamos aos passos.

1. A BASE DE DADOSAbra a suíte SQL Server Manage-ment Studio Express. Na interfaceprincipal, clique com o botão direi-to do mouse em Databases e sele-cione Criar New Database.

Do lado esquerdo da janela NewDatabase que se abre, selecione aopção General. No campo chama-do database name, digite Fotos,que será o nome do nosso bancode dados. Clique OK.

O banco de dados Fotos está cria-do e se constitui de dois arquivos.Você pode verificar isso acionandoPrograms > Microsoft SQL Server >

MSQL >DATA. Lá estarãoos arquivos fotos.mdf efotos_log.ldf.

2. AS TABELASDe volta ao SQL ServerManagement Studio Ex-press, expanda o bancode dados Fotos, clicandono ícone +. Agora vamoscriar as três tabelas: fo-tografos, pictures e clien-

tes. Como definição, iremos dizerque um fotógrafo pode ter váriasfotos e que um cliente também po-de ter várias fotos.

Primeiro, criamos a tabela foto-grafos. Com o botão direito, cliqueem Tables e selecione NEW TABLE.Na janela Properties, digite o nomeda tabela, fotografos, no campo Ob-jectName.

Agora vamos criar os camposdessa tabela. Aparece uma lista comas opções na janela Table — dbo.ta-ble-1, o nome padrão de tabela cria-da pelo SQL Management, conten-do o nome da coluna (Column Na-me), tipo de dados (Data Type) eAllow Nulls?. O primeiro campo que vamos criaré o da chave primária dessa tabe-la. É de bom costume criar sempreuma chave primária para toda ta-bela. Nesse caso, ela será chamadaId_fotografo. Digite esse nome nocampo Column Name. A janela Column properties deveser alterada para as característicasdesejadas. Em primeiro lugar, va-

mos determinar qual tipo de dadoso campo irá suportar. Clique no cam-po Data Type e selecione int, poisesse campo será uma identificaçãodo fotógrafo e a chave primária des-sa tabela. Dê TAB até abrir a próxi-ma linha da janela Table — dbo.ta-ble-1, nome provisório da tabela.

3. MAIS CAMPOSVamos criar agora os campos Nomedo fotógrafo, Endereço, Cidade, Es-tado. Todos eles serão do tipo var-char, que consumirá somente o es-paço necessário no disco para a quan-tidade de caracteres armazenada.

Assim, um nome que contenha 10caracteres consumirá somente 10bytes no banco de dados. No caso docampo do tipo char, um campo comtamanho de 50 caracteres sempreocupará 50 bytes de espaço no dis-co rígido. Para cada um, defina nocampo lenght o tamanho que vo-cê deseja para ele.

O último campo será o de CEP. De-fina-o como um campo numérico detamanho 8 (o tamanho do cep noBrasil). Preencha as opçõesPrecision como 8 e scale0 na janela Properties.

Não queremos que fal-te informação nessa tabe-la. Assim, desmarque aopção Allow Nulls de to-dos os campos. O própriosistema de banco de da-dos não permitirá quecampos em branco sejamregistrados.

4. CHAVE PRIMÁRIAVamos agora definir a nossa chaveprimária. Clique com o botão direi-to sobre o campo desejado e sele-cione Set Primary Key. Vamos fazerisso com o campo Id_fotografo. Achave primária é identificada grafi-camente por uma pequena chave àfrente do nome do campo.

Salvamos nossa tabela, acionan-do File > Salvar Fotografos. Pronto,a primeira tabela está criada na ba-se de dados Fotos.

Faça o mesmo para a tabela Clien-tes. Ela terá os campos Id_cliente, no-me_cliente, endereço_cliente, cida-de_cliente, estado_cliente, CEP_clien-te como colunas. Como não quere-mos registros incompletos, todos elestambém não permitirão campos nãopreenchidos ou nulos.

Vamos fazer o ID_cliente comonossa chave primária dessa tabe-la. Salve a tabela Clientes clicandono ícone de fechar tabela. Uma ja-

Chave primária: pequena chaveidentifica o campo correspondente

Checagem: verifique os arquivosque formam o banco de dados

089_CADASTROFOTO_EXIF 26/02/2006 00:24 Page 90

Page 87: Colecao InfoBanco de Dados

TUTORIAL/CADASTRO DE FOTOS

COLEÇÃO INFO > 91

TUTORIAL/CADASTRO DE FOTOS

90 < COLEÇÃO INFO

cante e o modelo da máquina, alémda resolução da imagem. Neste tu-torial, vamos criar uma base de da-dos de fotos com informações Exifno SQL Server 2005 Express, da Mi-crosoft. Nosso banco terá três tabe-las: clientes, fotógrafos e pictures.Vamos aos passos.

1. A BASE DE DADOSAbra a suíte SQL Server Manage-ment Studio Express. Na interfaceprincipal, clique com o botão direi-to do mouse em Databases e sele-cione Criar New Database.

Do lado esquerdo da janela NewDatabase que se abre, selecione aopção General. No campo chama-do database name, digite Fotos,que será o nome do nosso bancode dados. Clique OK.

O banco de dados Fotos está cria-do e se constitui de dois arquivos.Você pode verificar isso acionandoPrograms > Microsoft SQL Server >

MSQL >DATA. Lá estarãoos arquivos fotos.mdf efotos_log.ldf.

2. AS TABELASDe volta ao SQL ServerManagement Studio Ex-press, expanda o bancode dados Fotos, clicandono ícone +. Agora vamoscriar as três tabelas: fo-tografos, pictures e clien-

tes. Como definição, iremos dizerque um fotógrafo pode ter váriasfotos e que um cliente também po-de ter várias fotos.

Primeiro, criamos a tabela foto-grafos. Com o botão direito, cliqueem Tables e selecione NEW TABLE.Na janela Properties, digite o nomeda tabela, fotografos, no campo Ob-jectName.

Agora vamos criar os camposdessa tabela. Aparece uma lista comas opções na janela Table — dbo.ta-ble-1, o nome padrão de tabela cria-da pelo SQL Management, conten-do o nome da coluna (Column Na-me), tipo de dados (Data Type) eAllow Nulls?. O primeiro campo que vamos criaré o da chave primária dessa tabe-la. É de bom costume criar sempreuma chave primária para toda ta-bela. Nesse caso, ela será chamadaId_fotografo. Digite esse nome nocampo Column Name. A janela Column properties deveser alterada para as característicasdesejadas. Em primeiro lugar, va-

mos determinar qual tipo de dadoso campo irá suportar. Clique no cam-po Data Type e selecione int, poisesse campo será uma identificaçãodo fotógrafo e a chave primária des-sa tabela. Dê TAB até abrir a próxi-ma linha da janela Table — dbo.ta-ble-1, nome provisório da tabela.

3. MAIS CAMPOSVamos criar agora os campos Nomedo fotógrafo, Endereço, Cidade, Es-tado. Todos eles serão do tipo var-char, que consumirá somente o es-paço necessário no disco para a quan-tidade de caracteres armazenada.

Assim, um nome que contenha 10caracteres consumirá somente 10bytes no banco de dados. No caso docampo do tipo char, um campo comtamanho de 50 caracteres sempreocupará 50 bytes de espaço no dis-co rígido. Para cada um, defina nocampo lenght o tamanho que vo-cê deseja para ele.

O último campo será o de CEP. De-fina-o como um campo numérico detamanho 8 (o tamanho do cep noBrasil). Preencha as opçõesPrecision como 8 e scale0 na janela Properties.

Não queremos que fal-te informação nessa tabe-la. Assim, desmarque aopção Allow Nulls de to-dos os campos. O própriosistema de banco de da-dos não permitirá quecampos em branco sejamregistrados.

4. CHAVE PRIMÁRIAVamos agora definir a nossa chaveprimária. Clique com o botão direi-to sobre o campo desejado e sele-cione Set Primary Key. Vamos fazerisso com o campo Id_fotografo. Achave primária é identificada grafi-camente por uma pequena chave àfrente do nome do campo.

Salvamos nossa tabela, acionan-do File > Salvar Fotografos. Pronto,a primeira tabela está criada na ba-se de dados Fotos.

Faça o mesmo para a tabela Clien-tes. Ela terá os campos Id_cliente, no-me_cliente, endereço_cliente, cida-de_cliente, estado_cliente, CEP_clien-te como colunas. Como não quere-mos registros incompletos, todos elestambém não permitirão campos nãopreenchidos ou nulos.

Vamos fazer o ID_cliente comonossa chave primária dessa tabe-la. Salve a tabela Clientes clicandono ícone de fechar tabela. Uma ja-

Chave primária: pequena chaveidentifica o campo correspondente

Checagem: verifique os arquivosque formam o banco de dados

089_CADASTROFOTO_EXIF 26/02/2006 00:24 Page 90

Page 88: Colecao InfoBanco de Dados

TUTORIAL/CADASTRO DE FOTOS

COLEÇÃO INFO > 93

TUTORIAL/CADASTRO DE FOTOS

92 < COLEÇÃO INFO

nela aparecerá perguntando se vo-cê deseja salvar as alterações ne-la. Clique YES.

5. TABELA DE FOTOSChegou a vez da tabela Pictures. Es-sa tabela terá informações Exif so-bre as fotos que você deseja guar-dar. O padrão Exif é bastante com-pleto, mas não queremos todas es-sas informações. Como ilustração,usaremos o fabricante da câmera,o seu modelo, a data e a hora da fo-to e a sua largura e altura. Definatodos os campos (exceto a chaveprimária) como varchar com o ta-manho desejado. Defina uma cha-ve primária chamada Id_Pictures.Nesse caso, devemos permitir nullsnos outros campos, pois você po-de não ter alguma das informações.Normalmente, todas as câmerastêm, mas se você desejar gravaruma foto avulsa será possível fazê-lo sem dispor de algumas delas.

6. RELACIONARA tabela não está comple-ta ainda. Você precisa re-lacioná-la aos fotógrafose aos clientes. Lembre-seque, em um banco de da-dos relacional, essa rela-ção é importante para des-cobrir as fotos que perten-cem a um fotógrafo ouque fotos são de quaisclientes. Primeiro, vamos

definir as chaves de pesquisa para osfotógrafos e clientes nessa tabela. Elasserão chamadas de id_fotografos eid_clientes, respectivamente. Crie co-mo campos do tipo int.

Agora, clique com o botão di-reito na janela de campos e esco-lha a opção indexes/Key. Cliqueno botão ADD. Selecione o índicecriado. Em Columns, escolha pri-meiro a coluna id_fotografos,abrindo a janela com a opção ".....".

Na coluna Identity (name) dê o no-me desse índice. Vamos chamá-lo deindice_fotografos. Você notará que exis-te uma coluna chamada is unique? Man-tenha a opção NO. Por quê? Bem, que-remos que esse valor se repita para ca-da foto que pertença a um fotógrafo.Caso selecionássemos a opção YES, obanco de dados evitaria que existisseregistro contendo valores duplicados.Crie outro índice igual para clientes quese chamará indice_clientes.

7. TABELA COM TABELAEstamos prontos para relacionar astabelas. Existem vários modos de se

fazer isso. Vamos pelo mais fácil evisual. No banco de dados Fotos, cli-que com o botão direito em Data-base Diagrams na janela da esquer-da. Clique em database diagrams. Osistema irá avisar que esse bancode dados não tem um ou mais ob-jetos necessários para utilizar o re-curso de diagramas. Clique em YES.

Selecione a opção New Databa-se Diagram. Uma janela chamadaAdd Tables será mostrada. Selecio-ne uma tabela e clique no botãoAdd. Faça isso com todas elas. Aofinal, clique em Close.

Uma representação gráfica das ta-belas e seus relacionamentos é mos-trada. Selecione a coluna de chave nocliente (ID_cliente) com o mouse e ar-raste até a coluna id_clientes. A jane-la Table and Columns será mostrada.

Isso fará com que o sistema gereuma relação entre a tabela clientesusando o campo id_clientes para atabela Pictures. Essa relação é de umpara muitos, ou seja, de um clientepara várias fotos. Sacou?Clique OK. Faça o mesmopara a tabela fotografos,usando a coluna id_foto-grafo, e para a tabela pic-tures usando a colunaId_fotógrafos. Os relacio-namentos estão feitos.

A identificação de ca-da uma dessas relaçõesé feita por uma linha queune os campos de índi-ces e cada lado contéma forma dessa relação,

um para um, um para muitos oumuitos para muitos. No nosso ca-so, você verá uma chave de um doslados da relação e um símbolo deinfinito do outro lado, o que signi-fica uma relação de um para mui-tos.

Quando você executar consultasque contenham as tabelas clientes epictures ou fotografos e pictures, asinformações relacionadas de ambasserão trazidas automaticamente. Porexemplo, ao pesquisar um fotógrafo,você encontrará todas as fotos queele produziu. Salve o diagrama, cli-cando em SALVAR ou fechando a ja-nela. Dê um nome para esse diagra-ma — no nosso caso, diagrama.

8. IMPORTANDO DADOSNeste ponto, já podemos utilizar es-sa base. Primeiro precisamos cadas-trar alguns dados nela. Usamos umprograma de extração de dados Exif

Índice: definindo a chave depesquisa para os fotógrafos

Relacionamento completo:clientes, fotógrafos e pictures

089_CADASTROFOTO_EXIF 26/02/2006 00:26 Page 92

Page 89: Colecao InfoBanco de Dados

TUTORIAL/CADASTRO DE FOTOS

COLEÇÃO INFO > 93

TUTORIAL/CADASTRO DE FOTOS

92 < COLEÇÃO INFO

nela aparecerá perguntando se vo-cê deseja salvar as alterações ne-la. Clique YES.

5. TABELA DE FOTOSChegou a vez da tabela Pictures. Es-sa tabela terá informações Exif so-bre as fotos que você deseja guar-dar. O padrão Exif é bastante com-pleto, mas não queremos todas es-sas informações. Como ilustração,usaremos o fabricante da câmera,o seu modelo, a data e a hora da fo-to e a sua largura e altura. Definatodos os campos (exceto a chaveprimária) como varchar com o ta-manho desejado. Defina uma cha-ve primária chamada Id_Pictures.Nesse caso, devemos permitir nullsnos outros campos, pois você po-de não ter alguma das informações.Normalmente, todas as câmerastêm, mas se você desejar gravaruma foto avulsa será possível fazê-lo sem dispor de algumas delas.

6. RELACIONARA tabela não está comple-ta ainda. Você precisa re-lacioná-la aos fotógrafose aos clientes. Lembre-seque, em um banco de da-dos relacional, essa rela-ção é importante para des-cobrir as fotos que perten-cem a um fotógrafo ouque fotos são de quaisclientes. Primeiro, vamos

definir as chaves de pesquisa para osfotógrafos e clientes nessa tabela. Elasserão chamadas de id_fotografos eid_clientes, respectivamente. Crie co-mo campos do tipo int.

Agora, clique com o botão di-reito na janela de campos e esco-lha a opção indexes/Key. Cliqueno botão ADD. Selecione o índicecriado. Em Columns, escolha pri-meiro a coluna id_fotografos,abrindo a janela com a opção ".....".

Na coluna Identity (name) dê o no-me desse índice. Vamos chamá-lo deindice_fotografos. Você notará que exis-te uma coluna chamada is unique? Man-tenha a opção NO. Por quê? Bem, que-remos que esse valor se repita para ca-da foto que pertença a um fotógrafo.Caso selecionássemos a opção YES, obanco de dados evitaria que existisseregistro contendo valores duplicados.Crie outro índice igual para clientes quese chamará indice_clientes.

7. TABELA COM TABELAEstamos prontos para relacionar astabelas. Existem vários modos de se

fazer isso. Vamos pelo mais fácil evisual. No banco de dados Fotos, cli-que com o botão direito em Data-base Diagrams na janela da esquer-da. Clique em database diagrams. Osistema irá avisar que esse bancode dados não tem um ou mais ob-jetos necessários para utilizar o re-curso de diagramas. Clique em YES.

Selecione a opção New Databa-se Diagram. Uma janela chamadaAdd Tables será mostrada. Selecio-ne uma tabela e clique no botãoAdd. Faça isso com todas elas. Aofinal, clique em Close.

Uma representação gráfica das ta-belas e seus relacionamentos é mos-trada. Selecione a coluna de chave nocliente (ID_cliente) com o mouse e ar-raste até a coluna id_clientes. A jane-la Table and Columns será mostrada.

Isso fará com que o sistema gereuma relação entre a tabela clientesusando o campo id_clientes para atabela Pictures. Essa relação é de umpara muitos, ou seja, de um clientepara várias fotos. Sacou?Clique OK. Faça o mesmopara a tabela fotografos,usando a coluna id_foto-grafo, e para a tabela pic-tures usando a colunaId_fotógrafos. Os relacio-namentos estão feitos.

A identificação de ca-da uma dessas relaçõesé feita por uma linha queune os campos de índi-ces e cada lado contéma forma dessa relação,

um para um, um para muitos oumuitos para muitos. No nosso ca-so, você verá uma chave de um doslados da relação e um símbolo deinfinito do outro lado, o que signi-fica uma relação de um para mui-tos.

Quando você executar consultasque contenham as tabelas clientes epictures ou fotografos e pictures, asinformações relacionadas de ambasserão trazidas automaticamente. Porexemplo, ao pesquisar um fotógrafo,você encontrará todas as fotos queele produziu. Salve o diagrama, cli-cando em SALVAR ou fechando a ja-nela. Dê um nome para esse diagra-ma — no nosso caso, diagrama.

8. IMPORTANDO DADOSNeste ponto, já podemos utilizar es-sa base. Primeiro precisamos cadas-trar alguns dados nela. Usamos umprograma de extração de dados Exif

Índice: definindo a chave depesquisa para os fotógrafos

Relacionamento completo:clientes, fotógrafos e pictures

089_CADASTROFOTO_EXIF 26/02/2006 00:26 Page 92

Page 90: Colecao InfoBanco de Dados

TUTORIAL/CADASTRO DE FOTOS

COLEÇÃO INFO > 95

TUTORIAL/CADASTRO DE FOTOS

94 < COLEÇÃO INFO

em lote para gerar as informaçõesdas fotos, o EasyExif (www.info.abril.com.br/download/4457.shtml), de Kevin Hu. O programa ge-ra arquivos CSV de cada imagem.

Abra o programa e selecione a op-ção Save Directory as CSV Text no me-nu Save Exif. Uma janela-padrão doWindows permitirá selecionar o dire-tório onde se encontram as imagens.

O sistema lerá as informaçõesde todas as fotos existentes e, pa-ra cada uma, gerará um arquivono formato CSV (separa-do por vírgulas), em umdiretório chamado Exif-data dentro da pasta desuas fotos. Junte todosos arquivos gerados emum único para importa-ção na base de dados.

Existem duas manei-ras de se fazer isso. A pri-meira é criar um progra-ma de importação, já

que o SQL Express nãotem esse tipo de utilitá-rio. A outra é conseguiralgum pacote que exe-cute essa função. O EMSData Import for SQLServer, da EMS Electro-nic Microsystems, per-mite importar dados doformato CSV para umbanco de dados SQLServer. Faça o downloadda versão de teste em

(www.info.abril.com.br/download/4458.shtml).

Esse utilitário tem um assisten-te que o leva passo a passo peloprocesso. O primeiro é a conexãocom a base de dados. Isso depen-de da instalação que foi feita noSQL Express. No nosso caso, esco-lhemos Remote, preenchemos onome da máquina e a autentica-ção configurada foi a do Windows.Clique no botão NEXT.

No próximo passo escolhemos oarquivo com os dados, clicando nobotão ADD FILE. Uma janela cha-mada Select Table é mostrada. Se-lecione o banco de dados Fotos, ea tabela dbo.pictures. Clique OK edepois em NEXT.

Agora mude o delimitador paravírgula no campo Delimiter. Na ja-nela Field, selecione o campo Ca-meraManufacture. Escolha na jane-la Columns a coluna que correspon-de a esse campo no banco de da-dos. No nosso caso, a co-luna 2. Faça o mesmo pa-ra os campos CameraMo-del, DateTime, Width eLenght com as colunas 4,16, 54 e 55 respectiva-mente. Clique em NEXT.

9. CAMPOSDE ÍNDICEVamos tratar da geraçãoautomática dos campos

de índice da tabela. Pri-meiro a chave primária(Id_pictures). Selecione-ano campo Field. No cam-po Generator Step na ja-nela Field Tunning digite1. Isso significa que paracada registro um novo ín-dice adicionado de umserá gerado. Como nos-sa base é virgem, ele co-meçará do 1, pois é a so-ma de Generator Value

que é 0 mais o Generator Step queé 1. Nas próximas vezes, você teráque descobrir qual é o próximo nú-mero a ser colocado em GeneratorValue para a importação acontecercom sucesso, pois a chave primárianão pode ser duplicada.

10. ID DO FOTÓGRAFOVamos gerar o valor de id_fotogra-fos. Temos dois registros e quere-mos que o primeiro seja do fotó-

Campos de índice: geraçãoautomática dos campos da tabela

Data Import: conecta-se ao banco eimporta as informações

EasyExif: gerando informações defotografias em arquivos CSV

Importação: escolha o arquivo comos dados clicando em ADD FILE

089_CADASTROFOTO_EXIF 26/02/2006 00:27 Page 94

Page 91: Colecao InfoBanco de Dados

TUTORIAL/CADASTRO DE FOTOS

COLEÇÃO INFO > 95

TUTORIAL/CADASTRO DE FOTOS

94 < COLEÇÃO INFO

em lote para gerar as informaçõesdas fotos, o EasyExif (www.info.abril.com.br/download/4457.shtml), de Kevin Hu. O programa ge-ra arquivos CSV de cada imagem.

Abra o programa e selecione a op-ção Save Directory as CSV Text no me-nu Save Exif. Uma janela-padrão doWindows permitirá selecionar o dire-tório onde se encontram as imagens.

O sistema lerá as informaçõesde todas as fotos existentes e, pa-ra cada uma, gerará um arquivono formato CSV (separa-do por vírgulas), em umdiretório chamado Exif-data dentro da pasta desuas fotos. Junte todosos arquivos gerados emum único para importa-ção na base de dados.

Existem duas manei-ras de se fazer isso. A pri-meira é criar um progra-ma de importação, já

que o SQL Express nãotem esse tipo de utilitá-rio. A outra é conseguiralgum pacote que exe-cute essa função. O EMSData Import for SQLServer, da EMS Electro-nic Microsystems, per-mite importar dados doformato CSV para umbanco de dados SQLServer. Faça o downloadda versão de teste em

(www.info.abril.com.br/download/4458.shtml).

Esse utilitário tem um assisten-te que o leva passo a passo peloprocesso. O primeiro é a conexãocom a base de dados. Isso depen-de da instalação que foi feita noSQL Express. No nosso caso, esco-lhemos Remote, preenchemos onome da máquina e a autentica-ção configurada foi a do Windows.Clique no botão NEXT.

No próximo passo escolhemos oarquivo com os dados, clicando nobotão ADD FILE. Uma janela cha-mada Select Table é mostrada. Se-lecione o banco de dados Fotos, ea tabela dbo.pictures. Clique OK edepois em NEXT.

Agora mude o delimitador paravírgula no campo Delimiter. Na ja-nela Field, selecione o campo Ca-meraManufacture. Escolha na jane-la Columns a coluna que correspon-de a esse campo no banco de da-dos. No nosso caso, a co-luna 2. Faça o mesmo pa-ra os campos CameraMo-del, DateTime, Width eLenght com as colunas 4,16, 54 e 55 respectiva-mente. Clique em NEXT.

9. CAMPOSDE ÍNDICEVamos tratar da geraçãoautomática dos campos

de índice da tabela. Pri-meiro a chave primária(Id_pictures). Selecione-ano campo Field. No cam-po Generator Step na ja-nela Field Tunning digite1. Isso significa que paracada registro um novo ín-dice adicionado de umserá gerado. Como nos-sa base é virgem, ele co-meçará do 1, pois é a so-ma de Generator Value

que é 0 mais o Generator Step queé 1. Nas próximas vezes, você teráque descobrir qual é o próximo nú-mero a ser colocado em GeneratorValue para a importação acontecercom sucesso, pois a chave primárianão pode ser duplicada.

10. ID DO FOTÓGRAFOVamos gerar o valor de id_fotogra-fos. Temos dois registros e quere-mos que o primeiro seja do fotó-

Campos de índice: geraçãoautomática dos campos da tabela

Data Import: conecta-se ao banco eimporta as informações

EasyExif: gerando informações defotografias em arquivos CSV

Importação: escolha o arquivo comos dados clicando em ADD FILE

089_CADASTROFOTO_EXIF 26/02/2006 00:27 Page 94

Page 92: Colecao InfoBanco de Dados

TUTORIAL/CADASTRO DE FOTOS

96 < COLEÇÃO INFO

Clique NEXT nospróximos passos atéo de número 10. Nes-se último, clique IM-PORT. Os dois regis-tros foram importa-dos para nosso ban-co de dados Fotos.

12. A PESQUISAVamos verificar se

nossas informações estão corretasfazendo uma consulta. Na janelaObject Explorer, clique com o bo-tão direito do mouse no banco Fo-tos e selecione a opção New Query.

Queremos primeiro descobrir to-dos as fotos do cliente 1. Clique como botão direito na janela de Query eselecione Query Designer. Adicioneas Tabelas Cliente e Pictures. Na co-luna Column_Name, selecione No-me_Cliente da lista. Nas demais, se-lecione DateTime, CameraModel eId_clientes. Em filter, na linha deid_clientes, digite 1. O próprio QueryDesigner gerou um comando SQL pa-ra ser executado. Clique no botão OK.

O comando SQL gerado está pron-to para execução. Clique com o bo-tão direito na janela Query nova-mente e escolha EXECUTE.

Eis o resultado de sua pesquisa,a data e hora de cada foto e o mo-delo da câmera utilizado e para qualcliente isso foi feito.

grafo que está cadastrado em nos-sa base com o índice 1 e o segundodo fotógrafo com índice 2.

Selecione id_fotografos na jane-la Fields e, em Fields Tunning, co-loque Generator Value 0 e Genera-tor Step 1. Isso fará com que o pri-meiro registro seja do fotógrafo comíndice de número 1 (campo com ovalor 1) e o segundo registro sejado fotógrafo 2 (campo com valor 2).

11. DADOS DO CLIENTEAgora vamos gerar as informaçõesde cliente. Queremos que todas asfotos pertençam ao mesmo clien-te, o que tem índice 1 em nossa ta-bela de clientes. Para tanto, sele-cione o campo id_clientes na jane-la Fields e digite o número 1 emConstant Values na janela FieldsTunning. Todos os registros terão ovalor 1 no campo de índice id_clien-tes pertencendo assim ao mesmocliente. Clique no botão NEXT.

Resultado: data e horade cada imagem

089_CADASTROFOTO_EXIF 26/02/2006 00:28 Page 96

Page 93: Colecao InfoBanco de Dados

E-MAIL FALSONÃO ENTRA

CONSTRUA UM CADASTRO DE ENDEREÇOS VÁLIDOS AUTOMATIZANDO O PEDIDO DE CONFIRMAÇÃO

POR HELIO SILVA

TUTORIAL/POSTGRESQL

COLEÇÃO INFO > 97

ada mais chato e inopor-tuno do que descobrir nasua caixa postal uma en-xurrada de newsletters

que você não assinou. Tudo porque al-guém cadastrou seu e-mail por brin-cadeira ou mesmo por maldade. Parao webmaster, essa situação também édesagradável porque recebe reclama-ções e é taxado de spammer. A saídapara o site é criar um cadastro de e-mails válidos, enviando ao candidato

a assinante da newsletter um pedidode confirmação na forma de um cliqueem um hyperlink. Quando esse hyper-link for acionado, o webmaster terácerteza de que quem solicitou a assi-natura é o dono do endereço. É issoque faremos no tutorial a seguir. Parasegui-lo, será necessário um servidorweb com PHP 4.x, banco de dados Post-greSQL 8.1.2 e um provedor de aces-so à internet que aceite conexões SMTPpara a transmissão de e-mails.

N

Tabela de e-mails: comando SQL cria a tabela de assinantes no PostgreSQL

097_CLASSIFICADOSWEB_POSTGRES 26/02/2006 00:29 Page 97

Page 94: Colecao InfoBanco de Dados

TUTORIAL/POSTGRESQL

98 < COLEÇÃO INFO

1. A TABELA DE E-MAILSO primeiro passo é criar a tabelacom os e-mails no PostgreSQL. Abrao pgAdmin, clique no botão SQL ecrie a tabela com o comando:CREATE TABLE tb_assinantes( email varchar(80) NOT NULL,ip_assinatura varchar(15),ip_confirmacao varchar(15),status varchar(10),data_assinatura timestamp,data_confirmacao timestamp,hash varchar(50))

2. O FORMULÁRIOAgora vamos criar o formulário pa-ra o usuário se cadastrar. Para isso,

você precisa primeiro fazer o down-load do arquivo newsletter.zip no en-dereço ftp://ftp.info.abril.com.br/newsletter.zip e descompactá-lo napasta que o servidor web comparti-lha com a rede. Ao descompactar, vo-cê terá os arquivos pega_email.php,grava_email.php e confirma_email.php.

O pega_email.php é basicamenteum arquivo HTML com um formulá-rio para que o usuário entre com seusdados. Esse formulário acionará nos-so script em PHP, que gravará os da-dos preliminarmente e enviará um e-mail para o provável novo assinante.No nosso exemplo, o arquivo pega_email.php recebe o endereço de e-mail e repassa ao script seguinte, ograva_email.php.

Formulário: HTML aciona script PHP que recebe o e-mail e repassa a outro script

097_CLASSIFICADOSWEB_POSTGRES 26/02/2006 00:38 Page 98

Page 95: Colecao InfoBanco de Dados

TUTORIAL/POSTGRESQL

COLEÇÃO INFO > 99

Por fim, o programa envia um e-mail com um hyperlink para o nos-so próximo script, o confirma_email.php, para que o assinante con-firme sua requisição.

Como essa resposta só será pos-sível porque a informação chegouao assinante através do endereçode e-mail digitado inicialmente, fi-ca claro que quem quer se inscre-ver é o detentor da conta.

4. ATIVANDO O ASSINANTEO confirma_email.php, acionado pe-lo clique do nosso futuro assinante,irá tomar as providências finais. Pri-meiro, ele altera o status do assinan-te de INATIVO para ATIVO. Note quetambém gravamos o número IP e adata de confirmação da assinatura.Em caso de haver reclamações, essasinformações também ajudarão a es-clarecer dúvidas.

Resultado: e-mails válidos identificados com endereço IP e status de confirmação

3. PEDIDO DE CONFIRMAÇÃONosso segundo script, o grava_email.php, salva o endereço de e-mail que está solicitando a assinatu-ra da newsletter e também grava adata e o número IP usado na cone-xão. Caso haja alguém fazendo o ca-dastramento indevido do usuário eeste queira descobrir quem foi, es-ses dados serão de grande valia.

É importante lembrar que nestafase do processo o status do assinan-te é gravado como INATIVO. Enquan-to permanecer assim, ele não deveser importunado por nenhum outrotipo de mensagem que não seja o pe-dido de confirmação da assinatura.

É gerado e gravado também umcódigo adicional (hash) para iden-tificar o usuário. Quando ele pedira confirmação, esse código impedi-rá que uma pessoa confirme a as-sinatura de outra.

097_CLASSIFICADOSWEB_POSTGRES 26/02/2006 00:31 Page 99

Page 96: Colecao InfoBanco de Dados

COLEÇÃO INFO > 101

TUTORIAL/ATIVO FIXO

O RAILS FAZMAIS RÁPIDO

ACELERE O DESENVOLVIMENTO, CRIANDO UM APLICATIVODE CONTROLE DE PATRIMÔNIO COM O RUBY ON RAILS

POR TONI CAVALHEIRO

TUTORIAL/ATIVO FIXO

100 < COLEÇÃO INFO

Ruby On Rails vem dan-do o que falar entre osdesenvolvedores para aweb. Programadores ex-

perientes dizem que essa ferramen-ta permite acelerar o desenvolvi-mento em até dez vezes em compa-ração com linguagens mais tradicio-nais. Mesmo que haja exagero nes-sa afirmação, basta trabalhar um

O

cativo simples de gerenciamento deativo fixo com banco de dadosSQLite 3. As instruções são para Win-dows XP. Mas os programas usadostêm também versões para Linux.

1. INSTALAÇÃO DO RUBYFaça o download do instalador doRuby on Rails no endereço www.info.abril.com.br/download/4357.shtml. Inicie a instalação e mante-nha os padrões sugeridos pelo pro-grama. Selecione todos os itens op-cionais. Mantenha também o dire-tório padrão, que é o C:\Ruby. Pa-ra testar o software, abra o Promptde Comando do Windows e digiteesse comando (tecle Enter depoisde cada comando):ruby –vDeve aparecer uma mensagem coma versão do Ruby.

como o MySQL. Baixe o SQLite 3 noendereço www.info.abril.com.br/download/4358.shtml. Depois dedescompactar o arquivo zip, vocêterá um programa executável e umaDLL. Como o SQLite não tem insta-lador, tudo o que você tem a fazeré copiar esses dois arquivos para odiretório Windows\System32.

3. RUBY ON RAILSAgora, vamos instalar o Rails e a bi-blioteca que faz o acesso ao SQLite3. O micro deve estar conectado àinternet para que o instalador façao download de componentes adi-cionais. No Prompt de Comando doWindows, digite:gem install railsO passo seguinte é instalar o supor-te ao SQLite 3. Digite:gem install sqlite3-ruby

4. AMBIENTE DA APLICAÇÃONa hora de criar uma aplicação, épreciso separar scripts, logs, confi-gurações e outros componentes nu-ma estrutura de diretórios. O Railsfaz isso de forma automática. NoPrompt de Comando, digite:rails c:\data\web\ativofixo\Abra o Explorer e navegue até apasta ativofixo que definimos. Vo-cê verá a estrutura de diretórioscriada pelo Rails. O diretório app éo local onde ficarão os arquivos doprograma. O script é a pasta quecontém os arquivos de apoio. Os di-retórios helpers e views servem,respectivamente, para armazenar

pouco com o Rails para perceberque operações corriqueiras em ban-cos de dados podem ser implemen-tadas com incrível rapidez. O Railsé uma biblioteca, baseada na lin-guagem Ruby, que permite a cria-ção de aplicações para a web asso-ciadas a bancos de dados. Para mos-trar como se desenvolve usando oRuby on Rails, vamos criar um apli-

Aplicativo pronto: sistema de Ativo Fixo disponível na intranet da empresa

Instalação: marque todos os opcionais

2. BANCO DE DADOSVamos prosseguir instalando o SQLite.Esse gerenciador de bancos com-pacto é útil para testes e desenvol-vimento. Para uso em produção, po-deria ser escolhido outro software,

100_RAILS 26/02/2006 00:39 Page 100

Page 97: Colecao InfoBanco de Dados

COLEÇÃO INFO > 101

TUTORIAL/ATIVO FIXO

O RAILS FAZMAIS RÁPIDO

ACELERE O DESENVOLVIMENTO, CRIANDO UM APLICATIVODE CONTROLE DE PATRIMÔNIO COM O RUBY ON RAILS

POR TONI CAVALHEIRO

TUTORIAL/ATIVO FIXO

100 < COLEÇÃO INFO

Ruby On Rails vem dan-do o que falar entre osdesenvolvedores para aweb. Programadores ex-

perientes dizem que essa ferramen-ta permite acelerar o desenvolvi-mento em até dez vezes em compa-ração com linguagens mais tradicio-nais. Mesmo que haja exagero nes-sa afirmação, basta trabalhar um

O

cativo simples de gerenciamento deativo fixo com banco de dadosSQLite 3. As instruções são para Win-dows XP. Mas os programas usadostêm também versões para Linux.

1. INSTALAÇÃO DO RUBYFaça o download do instalador doRuby on Rails no endereço www.info.abril.com.br/download/4357.shtml. Inicie a instalação e mante-nha os padrões sugeridos pelo pro-grama. Selecione todos os itens op-cionais. Mantenha também o dire-tório padrão, que é o C:\Ruby. Pa-ra testar o software, abra o Promptde Comando do Windows e digiteesse comando (tecle Enter depoisde cada comando):ruby –vDeve aparecer uma mensagem coma versão do Ruby.

como o MySQL. Baixe o SQLite 3 noendereço www.info.abril.com.br/download/4358.shtml. Depois dedescompactar o arquivo zip, vocêterá um programa executável e umaDLL. Como o SQLite não tem insta-lador, tudo o que você tem a fazeré copiar esses dois arquivos para odiretório Windows\System32.

3. RUBY ON RAILSAgora, vamos instalar o Rails e a bi-blioteca que faz o acesso ao SQLite3. O micro deve estar conectado àinternet para que o instalador façao download de componentes adi-cionais. No Prompt de Comando doWindows, digite:gem install railsO passo seguinte é instalar o supor-te ao SQLite 3. Digite:gem install sqlite3-ruby

4. AMBIENTE DA APLICAÇÃONa hora de criar uma aplicação, épreciso separar scripts, logs, confi-gurações e outros componentes nu-ma estrutura de diretórios. O Railsfaz isso de forma automática. NoPrompt de Comando, digite:rails c:\data\web\ativofixo\Abra o Explorer e navegue até apasta ativofixo que definimos. Vo-cê verá a estrutura de diretórioscriada pelo Rails. O diretório app éo local onde ficarão os arquivos doprograma. O script é a pasta quecontém os arquivos de apoio. Os di-retórios helpers e views servem,respectivamente, para armazenar

pouco com o Rails para perceberque operações corriqueiras em ban-cos de dados podem ser implemen-tadas com incrível rapidez. O Railsé uma biblioteca, baseada na lin-guagem Ruby, que permite a cria-ção de aplicações para a web asso-ciadas a bancos de dados. Para mos-trar como se desenvolve usando oRuby on Rails, vamos criar um apli-

Aplicativo pronto: sistema de Ativo Fixo disponível na intranet da empresa

Instalação: marque todos os opcionais

2. BANCO DE DADOSVamos prosseguir instalando o SQLite.Esse gerenciador de bancos com-pacto é útil para testes e desenvol-vimento. Para uso em produção, po-deria ser escolhido outro software,

100_RAILS 26/02/2006 00:39 Page 100

Page 98: Colecao InfoBanco de Dados

COLEÇÃO INFO > 103

TUTORIAL/ATIVO FIXOTUTORIAL/ATIVO FIXO

102 < COLEÇÃO INFO

funções auxiliares e layouts para osite. Folhas de estilos CSS ficam napasta public\stylesheets.

5. SERVIDOR WEBO Ruby on Rails inclui um minisser-vidor web que pode ser usado nodesenvolvimento. Para não confli-tar com outros servidores que vocêpossa ter na máquina (como Apa-che ou IIS), ele vem configurado pa-ra funcionar na porta 3000. NoPrompt de Comando, digite os se-guintes comandos para rodá-lo:cd c:\data\web\ativofixoruby script\serverAbra o browser e acesse o seguin-te endereço: http://localhost:3000Você deve ver uma página com o tí-tulo Welcome Aboard e informaçõessobre o Ruby on Rails.

6. ATIVO FIXONos passos anteriores, especifica-mos uma aplicação chamada AtivoFixo. É uma versão simples do sis-tema de controle patrimonial de umaempresa. Depois que ela estiverpronta, você pode adicionar outros

campos e recursos. Essa aplicaçãousa as quatro operações básicas deum banco de dados: consulta, edi-ção, inclusão e exclusão. A primei-ra coisa a fazer é criar o banco dedados no SQLite 3. No Prompt deComando do Windows, digite:sqlite3 db\ativodev.dbDepois que o prompt do SQLite 3aparecer, digite:CREATE TABLE afs (id INTEGERNOT NULL PRIMARY KEY,descricao VARCHAR(100) NOTNULL,valor_aquisicao INT NOT NULL,fornecedor VARCHAR(255) NULL,comprador VARCHAR(30) NULL,tempo_depreciacao INT NULL);

7. ACESSO AOS DADOSO próximo passo é configurar o Railspara acessar esse banco de dados.No diretório ativofixo, encontre apasta config e, dentro dela, o arqui-vo database.yml. Abra-o num editorde textos e modifique suas configu-rações para o seguinte:development:adapter:sqlite3dbfile: db\ativodev.dbtest:adapter:sqlite3dbfile: db\ativotest.dbproduction:adapter:sqlite3dbfile: db\ativoprod.db

Todo o restante do arquivo podeser apagado, já que não terá utilida-de em nosso tutorial. Na verdade, sóusaremos o ambiente development,

uma vez que os dois outros bancosnão foram criados ainda. Mas é bomdeixar o arquivo correto.

8. MODELO E CONTROLADORNo Ruby on Rails, cada tabela édescrita por um modelo. Vamoscriar um modelo chamado af (ini-ciais de Ativo Fixo) que refletirá atabela que acabamos de definir.No Prompt de Comando do Win-dows, digite:ruby script\generate model af

Em seguida, vamos criar um con-trolador para o modelo af. O con-trolador é o módulo básico dos apli-cativos do Rails. Este é o comando:ruby script\generate controller afs

Note que nosso modelo chama-se af, mas o controlador é chama-do afs. Isso ocorre porque o Rubyon Rails trabalha com a língua in-glesa, colocando as palavras no plu-ral. Se você criar um modelo Per-son, por exemplo, ele irá procurarpor uma tabela chamada People,plural de Person em inglês.

9. SCAFFOLDINGO último passo antes de colocar suaaplicação para funcionar é associarum recurso chamado scaffold aocontrolador. Ele adiciona funçõesde visualização, edição, inclusão eexclusão de dados. Localize o ar-quivo afs_controller.rd. Abra-o numeditor de textos e adicione o co-mando scaffold, assim:class AfsController <ApplicationController

scaffold :afendVamos reiniciar o servidor. Cliqueno Prompt de Comando para man-tê-lo em foco no Windows e tecleCtrl+C para parar o servidor. Em se-guida, reinicie-o com o comando:ruby script\server

Abra o navegador e vá a este en-dereço: http://localhost:3000Você verá uma aplicação com re-cursos de consulta, edição, exclu-são e inclusão. Note que usamosuma única linha de código (scaffold:af) para criá-la.

10. PERSONALIZAÇÃOVejamos como personalizar o layoutda aplicação. Esse processo é feitopor meio de dois arquivos rhtml, umde visualização (conhecido por view)e outro de layout. Além disso, é pre-ciso fazer algumas modificações nocontrolador principal para carregaros dados para uma variável tempo-rária. Vamos começar personalizan-do o controlador. Abra o arquivo afsnum editor de texto e modifique-opara que fique assim:

Arquivo list.rhtml: códigomodificado no editor de texto

Tela inicial: o Ruby instalado e pronto para usar

100_RAILS 26/02/2006 00:40 Page 102

Page 99: Colecao InfoBanco de Dados

COLEÇÃO INFO > 103

TUTORIAL/ATIVO FIXOTUTORIAL/ATIVO FIXO

102 < COLEÇÃO INFO

funções auxiliares e layouts para osite. Folhas de estilos CSS ficam napasta public\stylesheets.

5. SERVIDOR WEBO Ruby on Rails inclui um minisser-vidor web que pode ser usado nodesenvolvimento. Para não confli-tar com outros servidores que vocêpossa ter na máquina (como Apa-che ou IIS), ele vem configurado pa-ra funcionar na porta 3000. NoPrompt de Comando, digite os se-guintes comandos para rodá-lo:cd c:\data\web\ativofixoruby script\serverAbra o browser e acesse o seguin-te endereço: http://localhost:3000Você deve ver uma página com o tí-tulo Welcome Aboard e informaçõessobre o Ruby on Rails.

6. ATIVO FIXONos passos anteriores, especifica-mos uma aplicação chamada AtivoFixo. É uma versão simples do sis-tema de controle patrimonial de umaempresa. Depois que ela estiverpronta, você pode adicionar outros

campos e recursos. Essa aplicaçãousa as quatro operações básicas deum banco de dados: consulta, edi-ção, inclusão e exclusão. A primei-ra coisa a fazer é criar o banco dedados no SQLite 3. No Prompt deComando do Windows, digite:sqlite3 db\ativodev.dbDepois que o prompt do SQLite 3aparecer, digite:CREATE TABLE afs (id INTEGERNOT NULL PRIMARY KEY,descricao VARCHAR(100) NOTNULL,valor_aquisicao INT NOT NULL,fornecedor VARCHAR(255) NULL,comprador VARCHAR(30) NULL,tempo_depreciacao INT NULL);

7. ACESSO AOS DADOSO próximo passo é configurar o Railspara acessar esse banco de dados.No diretório ativofixo, encontre apasta config e, dentro dela, o arqui-vo database.yml. Abra-o num editorde textos e modifique suas configu-rações para o seguinte:development:adapter:sqlite3dbfile: db\ativodev.dbtest:adapter:sqlite3dbfile: db\ativotest.dbproduction:adapter:sqlite3dbfile: db\ativoprod.db

Todo o restante do arquivo podeser apagado, já que não terá utilida-de em nosso tutorial. Na verdade, sóusaremos o ambiente development,

uma vez que os dois outros bancosnão foram criados ainda. Mas é bomdeixar o arquivo correto.

8. MODELO E CONTROLADORNo Ruby on Rails, cada tabela édescrita por um modelo. Vamoscriar um modelo chamado af (ini-ciais de Ativo Fixo) que refletirá atabela que acabamos de definir.No Prompt de Comando do Win-dows, digite:ruby script\generate model af

Em seguida, vamos criar um con-trolador para o modelo af. O con-trolador é o módulo básico dos apli-cativos do Rails. Este é o comando:ruby script\generate controller afs

Note que nosso modelo chama-se af, mas o controlador é chama-do afs. Isso ocorre porque o Rubyon Rails trabalha com a língua in-glesa, colocando as palavras no plu-ral. Se você criar um modelo Per-son, por exemplo, ele irá procurarpor uma tabela chamada People,plural de Person em inglês.

9. SCAFFOLDINGO último passo antes de colocar suaaplicação para funcionar é associarum recurso chamado scaffold aocontrolador. Ele adiciona funçõesde visualização, edição, inclusão eexclusão de dados. Localize o ar-quivo afs_controller.rd. Abra-o numeditor de textos e adicione o co-mando scaffold, assim:class AfsController <ApplicationController

scaffold :afendVamos reiniciar o servidor. Cliqueno Prompt de Comando para man-tê-lo em foco no Windows e tecleCtrl+C para parar o servidor. Em se-guida, reinicie-o com o comando:ruby script\server

Abra o navegador e vá a este en-dereço: http://localhost:3000Você verá uma aplicação com re-cursos de consulta, edição, exclu-são e inclusão. Note que usamosuma única linha de código (scaffold:af) para criá-la.

10. PERSONALIZAÇÃOVejamos como personalizar o layoutda aplicação. Esse processo é feitopor meio de dois arquivos rhtml, umde visualização (conhecido por view)e outro de layout. Além disso, é pre-ciso fazer algumas modificações nocontrolador principal para carregaros dados para uma variável tempo-rária. Vamos começar personalizan-do o controlador. Abra o arquivo afsnum editor de texto e modifique-opara que fique assim:

Arquivo list.rhtml: códigomodificado no editor de texto

Tela inicial: o Ruby instalado e pronto para usar

100_RAILS 26/02/2006 00:40 Page 102

Page 100: Colecao InfoBanco de Dados

TUTORIAL/ATIVO FIXO

104 < COLEÇÃO INFO

class AfsController <ApplicationControllerscaffold :aflayout “default”def list@entries = Af.find_all nil,“descricao”endend

11. LAYOUTAgora, na pasta app\views\layouts,crie um arquivo de texto chamadodefault.rhtml. Esse arquivo deve tero seguinte conteúdo:<html><head><title>Ativo Fixo</title></head><body><h1>Lista de patrimônio</h1><%= @content_for_layout %></body></html>

12. VISUALIZAÇÃOVamos, agora, criar a visualização, ocódigo-fonte que irá controlar a exi-bição dos dados. É aqui que defini-mos a aparência do site. Vá para apasta \app\views\afs\ e crie um ar-

quivo chamado list.rhtml. Ele rece-be esse nome de acordo com a de-finição no controlador, logo depoisdo comando def. Confira o código:<table border=“1” cellpadding=“4” cellspacing="0” width =“90%”><tr><th>Descrição</th><th>Valor de aquisição</th><th>Tempo de depreciação</th><th colspan=“3”>Ações</th></tr><% @entries.each do |entry| %><tr><td><%= entry.descricao %></td><td><%= entry.valor_aquisicao%></td> <td><%= entry.tempo_depreciacao%></td><td><%= link_to “Exibir”, :action =>“show”, :id => entry.id %></td><td><%= link_to “Editar”, :action =>“edit”, :id => entry.id %></td><td><%= link_to “Excluir”, :action =>“destroy”, :id => entry.id %></td></tr><% end %></table<p><%= link_to “Novo”, :action =>“new” FF %></p>

Isso é tudo o que você precisa fazerpara adicionar uma exibição ao aplica-tivo. Ainda é possível incluir mais cam-pos e aplicar uma formatação mais ela-borada à página, da mesma forma co-mo fizemos na tela inicial deste tutorial.

Aplicativo no ar: ainda sem aformatação definitiva

100_RAILS 26/02/2006 00:41 Page 104

Page 101: Colecao InfoBanco de Dados

CONTROLE OSSEUS LIVROS

PROGRAMAS EM PHP DISCRIMINAM O STATUS DO TÍTULO,SE EMPRESTADO, DISPONÍVEL OU ENCOMENDADO

POR HELIO SILVA

TUTORIAL/FIREBIRD

COLEÇÃO INFO > 105

uantas vezes você em-prestou um livro e se es-queceu para quem? Equantas vezes o amigo

que tomou o livro emprestado selembrou de devolver? Nesses casosem que a memória não passa de umavaga lembrança, o jeito é montar umbanco de dados de sua biblioteca,com direito ao controle dos títulosemprestados. É o que faremos nes-te tutorial. Para acompanhá-lo, vo-cê vai precisar de servidor web comPHP 4.x, banco de dados Firebird1.5.3 (www.info.abril.com.br/download/2108.shtml) e o IBEx-pert (www.info.abril.com.br/download/4047.shtml) como ferramen-

ta de administração. Com apenas doisprogramas em PHP faremos a admi-nistração das informações.

1. O BANCOInstalados os programas necessários,abra o IBExpert e acione o menu Da-tabase > Create Database. Crie o ban-co de dados com o nome Biblioteca eclique no botão OK.

Será necessário registrar o bancono IBExpert. Assim, no campo data-base alias, digite o nome Biblioteca e,em seguida, acione no botão Register.(Clique no ícone do lado esquerdoda tela, onde aparece o nome denosso banco de dados Biblioteca.Com o botão direito do mouse, es-

colha a opção Conectto database.

2. A TABELAAgora que estamosconectados ao novobanco de dados, va-mos criar a tabela dosistema. Tecle F12 pa-

Q

Biblioteca: crie obanco de dados como IBExpert

105_AGENDA_FIREBIRD 26/02/2006 00:42 Page 105

Page 102: Colecao InfoBanco de Dados

TUTORIAL/FIREBIRD

COLEÇÃO INFO > 107

TUTORIAL/FIREBIRD

106 < COLEÇÃO INFO

ra que se abra uma tela para a cria-ção de consultas SQL. Dentro da te-la de consulta, criaremos o banco dedados com o comando:CREATE TABLE TB_LIVROS (CODIGO INTEGER NOT NULL,TITULO VARCHAR(50) NOT NULL,STATUS VARCHAR(20) NOT NULL,ASSOCIADO VARCHAR(40)CHARACTER SET NONE COLLATENONE);

Logo depois, determinaremos queo código do livro será a chave pri-mária de acesso ao banco com o se-guinte comando:ALTER TABLE TB_LIVROS ADDCONSTRAINT PK_TB_LIVROSPRIMARY KEY (CODIGO);

3. O CÓDIGO DOS LIVROSAgora vamos aproveitar um dos re-cursos do Firebird e transportar pa-ra o banco a responsabilidade de criarsequencialmente o código dos livrosna medida em que forem inseridos.Ainda em nossa tela de consulta va-mos inserir o seguinte comando:CREATE TRIGGER AI_TB_LIVROS_ CODIGO FOR TB_

LIVROSACTIVE BEFOREINSERTPOSITION 0ASBEGINIF (NEW.CODIGO

IS NULL) THENNEW.CODIGO = GEN_ID(TB_LIVROS_CODIGO_GEN, 1);END

Este gatilho será acionado auto-maticamente a cada inclusão paragerar o código do livro.

4. SCRIPT EM PHPFaça o download do arquivo biblio-teca.zip no endereço ftp://ftp.info.abril.com.br/biblioteca.zip . Des-compacte-o na pasta onde opera oseu servidor web e terá os arquivosindex.php e processa.php.

Nosso primeiro programa, o in-dex.php, lista a quantidade de livrosdisponíveis e em que status se en-contram (Emprestado, Disponível ouEncomendado). O script faz tambémuma pesquisa no banco de dados emonta uma lista do tipo combo comtodos os livros disponíveis.

Por fim, apresenta uma série de cin-co botões para que você possa esco-lher entre listar os livros disponíveise seu status, Incluir e Excluir livros. Asoutras duas opções são de registrarempréstimos e/ou devoluções.

5. REQUISIÇÕES DO USUÁRIONosso segundo programa, o pro-cessa.php, é que fará o trabalho to-do. Ele é um pouco extenso, masnão é complexo.

Em princípio, o segundo progra-ma se caracteriza por uma árvorede decisão usando if e elseif, sen-do que cada ação solicitada pelousuário vai determinar um compor-tamento diferente.

A primeira providência do pro-grama para atender qualquer queseja a necessidade do usuário éabrir uma conexão com o banco dedados. Em seguida, ele registra quala operação o usuário solicitou, e,por conta disso, determina se eleterá que ser executado mais umavez ou se deve retornar ao in-dex.php. O programa toma essa de-cisão ao definir qual ação deve seracionada pelo formulário, se exe-cuta o index.php ou ele mesmo(processa.php) com um novo parâ-metro de operação.

A primeira ação do programa élistar. Essa açãomonta uma tabelacom todos os livrosdo banco ordenadospelo título.

Quando acionadopelo botão Incluir doindex.php, a açãodesse programa éabrir uma tela de for-

mulário para que seja digitado o no-me do novo livro do acervo e mon-tar um combo para que seja defini-do qual o seu status (Disponível, Em-prestado, Encomendado).

Quando o botão “Excluir” é aciona-do é há um livro selecionado no com-bo do index.php, o programa reageexcluindo aquele título selecionado.

Para a operação de empréstimo,o programa abre um formulário pe-dindo o nome do associado que es-tá emprestando o livro. Na seqüên-cia, faz a atualização das informa-ções trocando o status do livro pa-ra Emprestado e registrando o no-me do associado que retirou o livro.

A operação final é a devoluçãodo livro que, quando acionada, al-tera o status do livro para Disponí-vel e elimina o nome do associado.

É evidente que outras imple-mentações e validações são ne-cessárias, mas este exemplo já per-mite vislumbrar um pouco da efi-ciência do Firebird usado em com-binação com o PHP.

Gatilho: geradorautomático do códigode cada um dos livros

Resultado: controledos livros emprestadose dos disponíveis

105_AGENDA_FIREBIRD 26/02/2006 00:42 Page 106

Page 103: Colecao InfoBanco de Dados

TUTORIAL/FIREBIRD

COLEÇÃO INFO > 107

TUTORIAL/FIREBIRD

106 < COLEÇÃO INFO

ra que se abra uma tela para a cria-ção de consultas SQL. Dentro da te-la de consulta, criaremos o banco dedados com o comando:CREATE TABLE TB_LIVROS (CODIGO INTEGER NOT NULL,TITULO VARCHAR(50) NOT NULL,STATUS VARCHAR(20) NOT NULL,ASSOCIADO VARCHAR(40)CHARACTER SET NONE COLLATENONE);

Logo depois, determinaremos queo código do livro será a chave pri-mária de acesso ao banco com o se-guinte comando:ALTER TABLE TB_LIVROS ADDCONSTRAINT PK_TB_LIVROSPRIMARY KEY (CODIGO);

3. O CÓDIGO DOS LIVROSAgora vamos aproveitar um dos re-cursos do Firebird e transportar pa-ra o banco a responsabilidade de criarsequencialmente o código dos livrosna medida em que forem inseridos.Ainda em nossa tela de consulta va-mos inserir o seguinte comando:CREATE TRIGGER AI_TB_LIVROS_ CODIGO FOR TB_

LIVROSACTIVE BEFOREINSERTPOSITION 0ASBEGINIF (NEW.CODIGO

IS NULL) THENNEW.CODIGO = GEN_ID(TB_LIVROS_CODIGO_GEN, 1);END

Este gatilho será acionado auto-maticamente a cada inclusão paragerar o código do livro.

4. SCRIPT EM PHPFaça o download do arquivo biblio-teca.zip no endereço ftp://ftp.info.abril.com.br/biblioteca.zip . Des-compacte-o na pasta onde opera oseu servidor web e terá os arquivosindex.php e processa.php.

Nosso primeiro programa, o in-dex.php, lista a quantidade de livrosdisponíveis e em que status se en-contram (Emprestado, Disponível ouEncomendado). O script faz tambémuma pesquisa no banco de dados emonta uma lista do tipo combo comtodos os livros disponíveis.

Por fim, apresenta uma série de cin-co botões para que você possa esco-lher entre listar os livros disponíveise seu status, Incluir e Excluir livros. Asoutras duas opções são de registrarempréstimos e/ou devoluções.

5. REQUISIÇÕES DO USUÁRIONosso segundo programa, o pro-cessa.php, é que fará o trabalho to-do. Ele é um pouco extenso, masnão é complexo.

Em princípio, o segundo progra-ma se caracteriza por uma árvorede decisão usando if e elseif, sen-do que cada ação solicitada pelousuário vai determinar um compor-tamento diferente.

A primeira providência do pro-grama para atender qualquer queseja a necessidade do usuário éabrir uma conexão com o banco dedados. Em seguida, ele registra quala operação o usuário solicitou, e,por conta disso, determina se eleterá que ser executado mais umavez ou se deve retornar ao in-dex.php. O programa toma essa de-cisão ao definir qual ação deve seracionada pelo formulário, se exe-cuta o index.php ou ele mesmo(processa.php) com um novo parâ-metro de operação.

A primeira ação do programa élistar. Essa açãomonta uma tabelacom todos os livrosdo banco ordenadospelo título.

Quando acionadopelo botão Incluir doindex.php, a açãodesse programa éabrir uma tela de for-

mulário para que seja digitado o no-me do novo livro do acervo e mon-tar um combo para que seja defini-do qual o seu status (Disponível, Em-prestado, Encomendado).

Quando o botão “Excluir” é aciona-do é há um livro selecionado no com-bo do index.php, o programa reageexcluindo aquele título selecionado.

Para a operação de empréstimo,o programa abre um formulário pe-dindo o nome do associado que es-tá emprestando o livro. Na seqüên-cia, faz a atualização das informa-ções trocando o status do livro pa-ra Emprestado e registrando o no-me do associado que retirou o livro.

A operação final é a devoluçãodo livro que, quando acionada, al-tera o status do livro para Disponí-vel e elimina o nome do associado.

É evidente que outras imple-mentações e validações são ne-cessárias, mas este exemplo já per-mite vislumbrar um pouco da efi-ciência do Firebird usado em com-binação com o PHP.

Gatilho: geradorautomático do códigode cada um dos livros

Resultado: controledos livros emprestadose dos disponíveis

105_AGENDA_FIREBIRD 26/02/2006 00:42 Page 106

Page 104: Colecao InfoBanco de Dados

ESPECIALISTASEM DADOS

CONHEÇA AS CERTIFICAÇÕES IBM, ORACLE E MICROSOFT, AINDA AS MAIS VALORIZADAS

CERTIFICAÇÃO

108 < COLEÇÃO INFO

Laboratório na IBM: treinamento presencial certifica especialistas em DB2

© OMAR PAIXÃO

volume de dados gera-do pelas empresas cres-ce quase que descon-troladamente. Bom pa-

ra os profissionais especializadosem gerenciamento de bancos de da-dos. Quem contrata? As grandes cor-porações. Elas só confiam o que têmde mais estratégico a um profissio-nal certificado, especialmente paraa função de administrador (DBA).Quais os principais aspectos a con-siderar ao investir nesse tipo de for-

mação? Primeiro, a experiência pe-sa mais na hora da contratação. Se-gundo, nem sempre a certificaçãogarante um aumento de salário. Porisso, a escolha da solução em ban-co de dados na qual vai se certificartem de ser inteligente. Os especia-listas recomendam tentar descobrirqual a tecnologia adotada pela em-presa em que se quer trabalhar. Ascertificações mais valorizadas con-tinuam sendo as das líderes de mer-cado IBM, Oracle e Microsoft.

O

108_CERTIFIC_ABRE 26/02/2006 00:43 Page 108

Page 105: Colecao InfoBanco de Dados

TODO MUNDOQUER UM OCP

CONQUISTAR O MAIS IMPORTANTE TÍTULO DA ORACLE PODE RENDER BOAS PROPOSTAS DE EMPREGO

POR ANA LÚCIA MOURA FÉ

CERTIFICAÇÃO/ORACLE

COLEÇÃO INFO > 109

e acordo com levanta-mento do instituto depesquisas Gartner, aOracle detém a segun-

da posição no ranking de sistemasde gerenciamento de bancos de da-dos relacionais. Com 33% de parti-cipação (em receitas com vendas delicenças), a Oracle só perde espaçopara a IBM (36%) e deixa a Microsoft(19%) para trás. Esses números aju-dam a posicionar as certificações daempresa entre as mais importantesdo mercado. “São as mais procura-das”, diz Edson Aguilera, coordena-dor dos cursos de pós-graduação emInformática da Universidade SantoAmaro (Unisa), de São Paulo.

As empresas já não querem pro-fissionais com intimidade apenascom uma plataforma tecnológica.“De 2003 para cá, busca-se mais oespecialista que, além da implanta-ção, entende todo o funcionamentodo banco de dados, tornando-o sim-ples, seguro e alinhado com as es-tratégias da empresa”, diz Aguilera.

Para os indecisos quanto à mar-ca, a dica é relacionar as empresasou segmentos nos quais se quer tra-

balhar e ver qual tecnologia ado-tam. “Se não der, é melhor começarpela Oracle, porque o produto é ro-busto e tem uma estratégia de de-senvolvimento que conta bastantehoje em dia”, diz.

APOSTA CERTAFoi o que fez Valter José de Aquino,matemático de 42 anos, 20 de car-reira. Em 2003, correu atrás da cer-tificação em Oracle 8i. “Encomendeilivros estrangeiros e estudei sozi-nho”, diz. “Não passei a ganhar mais,mas mudei de emprego”. Aquino foifisgado pela consultoria Stefanini,concorrente do antigo empregador.Depois, passou a integrar a equipede DBAs que cuidam dos bancos dedados da gigante do alumínio Alcoa.

Outro que decidiu apostar todasas fichas na Oracle foi o potiguar Jo-sivan da Costa Santos, de 36 anos,DBA da prestadora de serviços e fá-brica de software CPM. A empresapagou pelos exames e Santos con-quistou os títulos nas versões 8i e9i. Com isso, ele passou a respon-der pela conta do Bradesco. “Mui-tos DBAs não merecem o título. Não

D

109_CERTIF_ORACLE 26/02/2006 00:44 Page 109

Page 106: Colecao InfoBanco de Dados

CERTIFICAÇÕES/ORACLE

110 < COLEÇÃO INFO

basta fazer o curso. É preciso en-tender o negócio da empresa”, diz.

O Brasil dispõe atualmente de 802profissionais certificados em ban-cos de dados Oracle. Levantamen-to feito pela empresa com seus par-ceiros indica que cerca de 7 milprofissionais são treinados anual-mente nessa tecnologia.

COMO CHEGAR LÁO roteiro de certificação em bancosde dados Oracle começa com a OCA(Oracle Certified Associates). O treina-mento para se tornar um OCA emOracle 9i custa 5 014,58 reais. Paraa versão 10g, mais recente, que aempresa tem interesse em pro-mover, o valor cai para 2 507,29 reais.

A vantagem do título OCA é po-der ser conquistado na metade dotempo do nível seguinte, que é oOracle Certified Professional (OCP).Oferecido a desenvolvedores eDBAs, o OCP é a carreira mais im-portante da Oracle. Há ainda umterceiro título, o Oracle CertifiedMaster (COM). “Destina-se a espe-cialistas e gurus em produtos Ora-cle”, diz Fernando Silva, diretor daOracle University.

Para ser um OCP, o profissionaldeve se submeter a quatro cursosao preço total de 5 mil reais (Ora-cle 10g) a 10 mil reais (9i). “Masquem já tem experiência pode dis-pensar essa etapa e ir direto paraos testes”, diz Bernadete Sabino,gerente de treinamento da ApplySolutions, um centro oficial de trei-

namento de Recife (PE). Ela ressal-ta um detalhe importante: quem fi-zer questão de receber o canudooficial em inglês, usar a logomarcaOracle e constar das listas oficiaisdas certificadoras, tem de freqüen-tar pelo menos um curso da grade.

A Oracle mantém nas principaiscapitais do país centros de treina-mento nos quais o aluno participados cursos presenciais. A fornece-dora também coloca à disposiçãodos treinandos um CD de auto-es-tudo com o mesmo conteúdo docurso presencial.

Os exames de certificação são rea-lizados pela Prometric e têm vali-dade internacional. Outra forma deadquirir a certificação é fazer facul-dade em instituições que mantêmconvênio com a Oracle.

PARA QUEM É

TREINAMENTO

NÚMERO DE EXAMES

CUSTO DO TREINAMENTOCOMPLETO (R$)

CUSTO DOS EXAMES(R$) (1)

Analistas de sistemas, gerentes e profissionais de TI que desejam iniciar ou incrementar a carreira comoadministrador de bancos de dados (DBA)

4 cursos de 30 horas cada

4 (2 para OCA e 2 paraOCP)

10 029,16 (9i)5 014,58 (10g)

996,03 (9i)535,50 (10g)

(1) Valor em dólar convertido pela taxa de 2,142 reais por dólar.

OCP ORACLE DBACERTIFIED PROFESSIONAL

109_CERTIF_ORACLE 26/02/2006 00:46 Page 110

Page 107: Colecao InfoBanco de Dados

DOMINE O DB2EM SEIS ETAPAS

ATÉ SE TORNAR ESPECIALISTA NO BANCO DE DADOS DAIBM, O PROFISSIONAL PASSA POR VÁRIAS PROVAS

POR ANA LÚCIA MOURA FÉ

CERTIFICAÇÃO/IBM

COLEÇÃO INFO > 111

rande estrela dos ban-cos de dados da IBM éo DB2 Universal Data-base. Sozinho, o produ-

to responde por 34% de tudo o queé vendido no mundo em termos delicenças para sistemas de gerencia-mento de bancos de dados relacio-nais. A fatia da IBM é a que maiscresce, segundo a consultoria Gart-ner. Luciano Dallolio, gerente técni-co de gerenciamento de informaçãoda IBM, diz que isso estimula a con-tratação de profissionais. “Empre-sas como a Microsiga conquistaramgrande número de contratos queenvolvem a compra de centenas delicenças para bancos de dados. Pa-ra tocar os projetos, elas bancam acertificação de um número conside-rável de profissionais”, diz Dallolio.

Para muita gente, ter ajuda da em-presa que contrata é o único jeitode conquistar uma certificação IBM.“Não faz sentido investir 3 mil, 4 milreais se não houver como recupe-rar o investimento ou praticar o quese aprendeu”, diz Dallolio.

O paulista Fábio Hasegawa, de 24anos, consultor da C&C Computa-

ção, parceira comercial da IBM, acu-mula 13 certificações, três delas dacarreira de DB2. “Algumas eu aca-bei pagando do meu próprio bolso”,diz. Hasegawa tem orgulho dessacoleção. “Cada uma equivale a umafaculdade de primeira linha.”

Formado em ciências da compu-tação pela Fiap, Hasegawa obteveapoio da C&C para comprar livros erealizar os testes. Atualmente, eleostenta o título de Certified Advan-ced Database Administrator, o nívelmais alto da carreira de DBA da IBM.O canudo o habilita, entre outrascoisas, a atuar na recuperação dedesastres e administração de am-biente VLDB (DataWarehouse-Mul-ti Partitioning). Para quem vai co-meçar, Hasegawa sugere estudar porconta. “Se tivesse feito os cursos re-comendados para as três certifica-ções IBM que tenho, teria gasto, porbaixo, cerca de 13 mil reais”, diz.

UMA CERTIFICAÇÃO, SEIS NÍVEISA certificação oferecida pela IBM aespecialistas de DB2 é composta porseis carreiras, conhecidas pelas nu-

G

111_CERTIF_IBM 03/03/2006 10:25 Page 111

Page 108: Colecao InfoBanco de Dados

CERTIFICAÇÃO/IBM

112 < COLEÇÃO INFO

merações dos seus respectivos exa-mes: 700, 701, 702, 703, 704 e 705.O avanço é progressivo. A carreira700 é pré-requisito para os demaisníveis, (menos a 705), e forma o Cer-tified Database Associate (CDA). Pa-ra ostentar esse título, o candidatodeve antes passar por dois cursos,a um custo médio de 1 300 reais ca-da, fora o teste (80 dólares).

Com a certificação 700 em mãos,o candidato escolhe se quer ser ad-ministrador ou desenvolvedor. Sea opção escolhida for a carreira deadministrador de bancos de dadosem plataformas Unix, Linux ou Win-dows, a certificação indicada é a701. Nesse caso, o candidato, alémde já ter o título CDA (700), tambémdeve freqüentar um curso de qua-tro dias sobre administração de ban-cos de dados Unix.

O custo total do treinamento in-dicado, já incluído o valor de exa-me, fica em torno de 2 630 reais. Seaprovado, o candidato pode exibirem seu cartão de visitas o título Cer-tified Database Administrator UDB.

A certificação 702 é destinada aquem quer dominar bancos de da-dos na plataforma mainframe, ain-da muito usada no setor bancário.É o nível mais caro da carreira. Pa-ra ser Certified Database Adminis-trator ZOS, é preciso fazer os qua-tro cursos (cinco dias cada), alémde um exame, e investir 11 mil reais.O nível seguinte, 703, é para quemquer ser desenvolvedor de aplica-ções para DB2. O título é Certified

Application Developer, e requer trêscursos (de sete dias) e um exame,cujo custo soma, aproximadamen-te, 5 620 reais. Nos cursos, ele apren-de sobre programação básica, avan-çada e em Java.

O profissional que conquista ascertificações 700 e 701 pode fazero teste 704. Para essa carreira, de-nominada Certified Advanced Da-tabase Administrator, a IBM tam-bém oferece cursos para recupe-ração de desastres e administra-ção de ambiente VLDB (DataWare-house-Multi Partitioning).

Por fim, o teste 705 é o passapor-te para quem quer atuar em Busi-ness Intelligence. O título é o Certi-fied Solution Designer DB2 BI, pe-lo qual o profissional paga 6 milreais. São 12 dias de curso. Um sua-ve alento: todos os treinamentos daIBM são complementados com tu-toriais gratuitos.

PARA QUEM É

TREINAMENTO:

NÚMERO DE EXAMES

CUSTO DO TREINAMENTOCOMPLETO (R$)

CUSTO DOS EXAMES (R$)

Analistas de sistemas,gerentes e profissional deTI que queiram iniciar ouincrementar carreiracomo administrador debancos de dados (DBA)

Depende da carreira

1 (cada carreira)

De 2 900 a 11 000(depende da carreira)

172 (cada exame)(1)

(1) Valor em dólar convertido pela taxa de 2,142 reais por dólar.

DB2 UDB CERTIFIEDDATABASE ADMINISTRATOR

111_CERTIF_IBM 26/02/2006 00:47 Page 112

Page 109: Colecao InfoBanco de Dados

CERTIFICAÇÃO/MICROSOFT

COLEÇÃO INFO > 113

MCDBA (Microsoft Cer-tified Database Admi-nistrator), certificaçãode bancos de dados da

Microsoft, chegou ao Brasil em1998, no auge da demanda por ad-ministradores qualificados. É umadas favoritas no programa de es-pecializações da Microsoft, que játitulou mais de 21 mil profissionaisde TI brasileiros.

“A oferta de vagas para essesprofissionais cresce porque mui-tas empresas que não dependiamde uma base de dados estrutura-dos agora migram para SQL Ser-ver, e precisam de pessoas que seencaixem no trinômio confiabili-dade, experiência e certificação”,diz Edson Aguilera, coordenadordos cursos de pós-graduação eminformática da Universidade San-to Amaro (Unisa), em São Paulo.Para quem já escolheu se espe-cializar em programas do mundoMicrosoft, Aguilera sugere iden-tificar segmentos que costumamadotar a tecnologia. “Na área deautopeças, por exemplo, prevale-ce a plataforma Microsoft.”

MAPA DA MINAEm tese, quem carrega um canu-do MCDBA está preparado paraprojetar, física e logicamente, ban-cos de dados SQL Server 7.0, querodam sistemas de datawarehouse,comércio eletrônico e aplicaçõesde computação móvel e corpora-tivas. “Para o profissional tentaruma certificação MCDBA, ele deveestar preparado com treinamen-tos presenciais, cursos online elivros”, diz Adriana Cantamessa,gerente de certificações da Micro-

A

CRAQUES EM SQL SERVER

VOCÊ VAI TER DE VENCER QUATRO PROVAS PARA SER ESPECIALISTA NO BANCO DE DADOS DA MICROSOFT

POR ANA LÚCIA MOURA FÉ

PARA QUEM É

TREINAMENTO

NÚMERO DE EXAMES

CUSTO DO TREINAMENTOCOMPLETO (R$)

CUSTO DOS EXAMES (R$)

Analistas de sistemas,gerentes e profissionais deTI que desejam iniciar ouincrementar carreira comoadministrador de bancosde dados (DBA)

De 160 horas a 240 horas(depende da carreira)

3 (1 para COM e 2 paraMCDBA)

5 000 (inclui MCP)

172 (cada exame)(1)

(1) Valor em dólar convertido pela taxa de 2,142 reais por dólar.

MCDBA MICROSOFTCERTIFIED DATABASE ADMINISTRATOR

113_CERTIF_MICROSOFT 26/02/2006 00:53 Page 113

Page 110: Colecao InfoBanco de Dados

CERTIFICAÇÕES/MICROSOFT

114 < COLEÇÃO INFO

soft. Os cursos presenciais para acertificação em SQL Server 2005estarão disponíveis a partir demarço de 2006.

Os candidatos ao MCDBA devemser aprovados em três exames obri-gatórios e um eletivo. A parte obri-gatória consiste de um teste sobreadministração de bancos de dados,um outro sobre projetos e um ter-ceiro teste a ser escolhido de umagrade sobre sistemas de rede (ve-ja no quadro nesta página).

OPÇÕES DO CANDIDATONos dois primeiros exames obri-

gatórios, o candidato pode optarpela especialização em SQL Ser-ver 7.0 ou SQL Server 2000 En-terprise Edition, dependendo daexperiência ou objetivo.

No terceiro exame obrigatório,que preenche o requisito de sis-temas de redes, o profissionaldeve escolher entre o Windows2000 e o Windows Server 2003.Um detalhe importante é que otítulo obtido em SQL Server 2000continua valendo mesmo se o seudetentor não fizer o teste para aversão 2003.

Para finalmente ter direito à cre-dencial de MCDBA, o profissionalprecisa realizar um quarto exame,desta vez eletivo. São 12 opçõesde testes, cada um com uma mé-dia de três cursos recomendados.Pelo menos a metade envolve de-senvolvimento e implementaçãode aplicações, de componentes de

servidor e de serviços baseadosnas tecnologias Visual Basic.Net,Visual Studio .Net, Visual C# .Nete .Net Framework. A outra meta-de abrange desde desenvolvimen-to e implementação de aplicaçõesdistribuídas com Visual Basic 6.0,C++ 6.0 e FoxPro 6.0 até imple-mentação de data warehouse comSQL Server 7.0.

CURSOS OFICIAISOs cursos da Microsoft podem

ser realizados em 35 centros detreinamento oficiais espalhadospela Brasil. Não são obrigatórios,mas reduzem riscos de reprova-ção. Para quem anda com o di-nheiro curto, a dica é acessar o si-te da Microsoft e fazer o down-load do kit de auto-estudo.

> administração de SQLServer 7.0

> instalação, configuração eadministração de SQL Ser-ver 2000 Enterprise Edi-tion

> projeto e implementaçãode banco de dados comSQL Server 7.0

> gerenciamento e manu-tenção de ambiente Mi-crosoft Windows Server

OPÇÕES DEEXAMES OBRIGATÓRIOS

113_CERTIF_MICROSOFT 26/02/2006 00:49 Page 114