Coleção Info_Banco de Dados

August 10, 2017 | Author: Niccola Torres | Category: Databases, Data, Physics & Mathematics, Physics, Sql
Share Embed Donate


Short Description

Download Coleção Info_Banco de Dados...

Description

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

CONTEÚDO

CONTEÚDO

BANCO DE DADOS TUTORIAIS 62 > Tabelas sem mistério 71 > Relatório feito com views 75 > Crie pesquisas com critérios

78 > O phpMyAdmin doma o MySQL

08

Evolução: o banco vai do mainframe ao cluster

31

Linguagens: SQL é a língua oficial

BANCO DE DADOS 08 > A aventura dos dados 15 > Sabe o que é tupla? 24 > Planeje bem 31

83 > Atualização é com o Ajax 86 > Pesquise bem no Access 89 > O Exif vai para o banco 97 > E-mail falso não entra 100 > O Rails faz mais rápido 105 > Controle os seus livros

89

Tutorial: dados Exif das fotos para o SQL Express

108

Certificação: laboratório para especialistas

CERTIFICAÇÕES 108 > Especialistas em dados 109 > Todo mundo quer um OCP

111 > Domine o DB2 em

o seu banco > O banco fala SQLquês

seis etapas

113 > Craques em SQL Server TESTES 34 > Um SQL Server fácil de usar

36 > Oracle em versão light 38 >DB2 grátis com tudo dentro

42 > O MySQL ganha músculos 47 > Missão crítica é para Postgre

50 > Firebird poupa a máquina

54 > O Access entra em reforma

57 > Administração é tudo 4 < COLEÇÃO INFO

38

Teste: reviramos o DB2 Express-C, da IBM

42

Teste: o MySQL 5.0 vem reforçado

EQUIPE EDIÇÃO Lucia Reggiani EDITORA DE ARTE Iara Spina CAPA Crystian Cruz (arte) e Cellus (ilustração) COLABORADORES Carlos Chernij, Fred Carbonare, Helio Silva, Nivaldo Foresti (texto) e Rita Del Monaco (revisão)

COLEÇÃO INFO > 5

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

CONTEÚDO

CONTEÚDO

BANCO DE DADOS TUTORIAIS 62 > Tabelas sem mistério 71 > Relatório feito com views 75 > Crie pesquisas com critérios

78 > O phpMyAdmin doma o MySQL

08

Evolução: o banco vai do mainframe ao cluster

31

Linguagens: SQL é a língua oficial

BANCO DE DADOS 08 > A aventura dos dados 15 > Sabe o que é tupla? 24 > Planeje bem 31

83 > Atualização é com o Ajax 86 > Pesquise bem no Access 89 > O Exif vai para o banco 97 > E-mail falso não entra 100 > O Rails faz mais rápido 105 > Controle os seus livros

89

Tutorial: dados Exif das fotos para o SQL Express

108

Certificação: laboratório para especialistas

CERTIFICAÇÕES 108 > Especialistas em dados 109 > Todo mundo quer um OCP

111 > Domine o DB2 em

o seu banco > O banco fala SQLquês

seis etapas

113 > Craques em SQL Server TESTES 34 > Um SQL Server fácil de usar

36 > Oracle em versão light 38 >DB2 grátis com tudo dentro

42 > O MySQL ganha músculos 47 > Missão crítica é para Postgre

50 > Firebird poupa a máquina

54 > O Access entra em reforma

57 > Administração é tudo 4 < COLEÇÃO INFO

38

Teste: reviramos o DB2 Express-C, da IBM

42

Teste: o MySQL 5.0 vem reforçado

EQUIPE EDIÇÃO Lucia Reggiani EDITORA DE ARTE Iara Spina CAPA Crystian Cruz (arte) e Cellus (ilustração) COLABORADORES Carlos Chernij, Fred Carbonare, Helio Silva, Nivaldo Foresti (texto) e Rita Del Monaco (revisão)

COLEÇÃO INFO > 5

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

Fundador: VICTOR CIVITA (1907-1990)

Editor: Roberto Civita Conselho 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 Basile Vice-Presidente Comercial: Deborah Wright Diretora de Publicidade Corporativa: Thais Chede Soares B. Barreto

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

Diretora de Redação: Sandra Carvalho Redatora-chefe: Débora Fortes Diretor de Arte: Crystian Cruz Editores Seniores: Carlos Machado, Lucia Reggiani e Maurício Grego Editores: Airton Lopes, André Cardozo e Eric Costa Repórter: Silvia Balieiro Estagiários: Danilo Gregório e Paulo de Alencar Revisora: Marta Magnani Editor de Arte: Jefferson Barbato Designers: Catia Herreiro e Wagner Rodrigues Colaborador: 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 Barreira Depto. de Documentação e Abril Press: Grace de Souza Correspodente Internacional: Ruth de Aquino PUBLICIDADE CENTRALIZADA Diretores: 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 Rodrigues Gerente 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 Santos Analista: Tales Bombicini Processos: Ricardo Carvalho ASSINATURAS: Diretora de Operações de Atendimento ao Consumidor: Ana Dávalos Diretor de Vendas: Fernando Costa Publicidade São Paulo www.publiabril.com.br, Classificados tel.0800-7012066, Grande São Paulo tel. 3037-2700 ESCRITÓRIOS E REPRESENTANTES DE PUBLICIDADE NO BRASIL: Central-SP tel. (11) 3037-6564 Bauru Gnottos Mídia Representações Comerciais, tel. (14) 3227-0378, e-mail: [email protected] Belém SRS Propaganda e Representações Ltda, tel (91) 3272-8195, e-mail: [email protected] Belo Horizonte tel. (31) 3282-0630, fax (31) 3282-0632 Blumenau 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. e Representaçõ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) 32508000/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, telefax (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ção Ltda., telefax (51) 3328-1344/3823/4954, e-mail: [email protected] ; Multimeios Representações Comerciais, tel.(51) 3328-1271, e-mail: [email protected] Recife 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 Salvador AGMN 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] 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úcleo Consumo: Boa Forma, Elle, Estilo, Manequim Núcleo Comportamento: Claudia, Nova Núcleo Bem-Estar: : Bons Fluidos, Saúde!, Vida Simples Turismo/Tecnologia: Núcleo Turismo: Guias Quatro Rodas, National Geographic, Viagem e Turismo Núcleo Homem: : Placar, Playboy, Quatro Rodas, Vip Núcleo Tecnologia: Info, Info Canal, Info Corporate Cultura/Jovem: Núcleo Jovem: Bizz, Capricho, Flashback, Mundo Estranho, Superinteressante, Supersurf Núcleo Infantil: Atividades, Disney, Recreio Núcleo Cultura: : Almanaque Abril, Guia do Estudante, Aventuras na História, Revista das Religiões Casa/Semanais: Núcleo Casa e Construção: Arquitetura e Construção, Casa Claudia, Claudia Cozinha Núcleo Celebridades: Contigo! Núcleo Semanais: Ana Maria, Faça e Venda, Minha Novela, Tititi, Viva! Mais Fundação Victor Civita: Nova Escola 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, Naka 1- 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 South Road, 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. 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

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

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

RECADO DA REDAÇÃO

DÁ-LHE INFORMAÇÃO! universo do software é grande e abriga mundos muito peculiares, como o dos bancos de dados. De obscuros repositórios dos mainframes, esses programas passaram a estrelas de todo porte, organizando a explosão de informações geradas pela vida digital de pessoas e empresas. Neles, tabelas são mais que colunas e linhas, os dados se agrupam em entidades e se relacionam abertamente, transacionam, disparam gatilhos e administram restrições. Nesse mundinho, o e/AND não soma, diminui. E quem não sabe dessa e outras pegadinhas lógicas, perde tempo fazendo besteira. É aqui que se encaixa este especial. Aos novatos, contamos a história gloriosa dos bancos de dados e destrinchamos seus conceitos. De bandeja, vai um roteiro para escolher o sistema gerenciador, planejar e executar o banco da melhor forma pos-

O

sível. Testamos as novíssimas versões gratuitas dos poderosos Oracle, DB2 e SQL Server 2005, dos livres MySQL, PostgreSQL e Firebird e do beta repaginado do Access 12. Entregamos o jeito profissional de montar tabelas e consultas, os segredos das interfaces de administração e uma porção de tutoriais com os variados bancos. Você vai saber como extrair as informações Exif das fotos digitais para o banco, criar relatórios com views, controlar os livros emprestados, cadastrar e-mails válidos e muito mais. E se a animação chegar ao ponto de devotar a carreira à administração dos bancos de dados, estão aqui os caminhos para as especializações mais valorizadas da área. Aproveite. LUCIA REGGIANI EDITORA DE BANCO DE DADOS

INFO COLEÇÃO Uma publicação mensal da Editora Abril Para contatar a redação: [email protected] Para assinar a Coleção: (11) 3347.2121 — Grande São Paulo 0800-701-2828 — Demais localidades [email protected]

COLEÇÃO INFO > 7

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

HISTÓRIA

HISTÓRIA

delos de bancos de dados foram desenvolvidos: o de rede (Codasyl) e o hierárquico (IMS). O acesso à base de dados era complicadíssimo, e os detalhes do armazenamento dependiam do tipo de dado a ser arquivado. Acrescentar um campo extra à base requeria, muitas vezes, reescrever todo o esquema que sustentava a aplicação. A ênfase, nesse caso, estava nos registros a serem processados, e não na estrutura do sistema. Para fazer qualquer modificação, um usuário precisaria conhecer a estrutura física da base de dados. Sistemas comerciais bemsucedidos, como o Sabre, da IBM e da American Airlines, utilizaram por muitos anos esse tipo de modelo.

A AVENTURA DOS DADOS DO MAINFRAME À INTERNET, OS BANCOS DE DADOS TÊM MUITO PARA CONTAR POR TAGIL OLIVEIRA RAMOS

rmazenar informações organizadas e recuperá-las sem faltar pedaço sempre que necessário. Dita assim, a missão dos ban-

A

8 < COLEÇÃO INFO

cos de dados parece simples, trivial. Não deixa de ser verdade para as tecnologias atuais, que disfarçam a complexidade do processamento e do gerenciamento de dados com in© ILUSTRAÇÃO PEPE CASALS

terfaces gráficas e assistentes. Mas, no princípio, lidar com bases de dados era coisa cabeluda, encarada por mainframes. A história dos modernos bancos de dados começa na década de 60, quando os computadores ampliaram a capacidade de armazenamento e se transformaram em possibilidade real para as empresas. Não havia ainda o conceito elaborado de banco de dados — o armazenamento de informação digital baseava-se em modelos de organização do mundo físico. No início, dois mo-

O MODELO DE CODD No início dos anos 70, as coisas começam a mudar. O pesquisador da IBM Edgar Frank Codd (1923-2003) propõe o modelo relacional para a base de dados. Mais do que isso, ele introduz uma nova maneira de pensar a informação digital a ser gravada, recuperada e gerenciada, estabelecendo um jeito mais computacional de tratar o relacionamento entre os dados. Esse sistema virou padrão e é usado até hoje. O modelo abstrato de Codd é a primeira abordagem completa para uma base de dados, o resgate das informações, manipulação, integridade lógica, visualização, atualização e gerenciamento. Foi concebido para armazenar registros de daCOLEÇÃO INFO > 9

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

HISTÓRIA

HISTÓRIA

delos de bancos de dados foram desenvolvidos: o de rede (Codasyl) e o hierárquico (IMS). O acesso à base de dados era complicadíssimo, e os detalhes do armazenamento dependiam do tipo de dado a ser arquivado. Acrescentar um campo extra à base requeria, muitas vezes, reescrever todo o esquema que sustentava a aplicação. A ênfase, nesse caso, estava nos registros a serem processados, e não na estrutura do sistema. Para fazer qualquer modificação, um usuário precisaria conhecer a estrutura física da base de dados. Sistemas comerciais bemsucedidos, como o Sabre, da IBM e da American Airlines, utilizaram por muitos anos esse tipo de modelo.

A AVENTURA DOS DADOS DO MAINFRAME À INTERNET, OS BANCOS DE DADOS TÊM MUITO PARA CONTAR POR TAGIL OLIVEIRA RAMOS

rmazenar informações organizadas e recuperá-las sem faltar pedaço sempre que necessário. Dita assim, a missão dos ban-

A

8 < COLEÇÃO INFO

cos de dados parece simples, trivial. Não deixa de ser verdade para as tecnologias atuais, que disfarçam a complexidade do processamento e do gerenciamento de dados com in© ILUSTRAÇÃO PEPE CASALS

terfaces gráficas e assistentes. Mas, no princípio, lidar com bases de dados era coisa cabeluda, encarada por mainframes. A história dos modernos bancos de dados começa na década de 60, quando os computadores ampliaram a capacidade de armazenamento e se transformaram em possibilidade real para as empresas. Não havia ainda o conceito elaborado de banco de dados — o armazenamento de informação digital baseava-se em modelos de organização do mundo físico. No início, dois mo-

O MODELO DE CODD No início dos anos 70, as coisas começam a mudar. O pesquisador da IBM Edgar Frank Codd (1923-2003) propõe o modelo relacional para a base de dados. Mais do que isso, ele introduz uma nova maneira de pensar a informação digital a ser gravada, recuperada e gerenciada, estabelecendo um jeito mais computacional de tratar o relacionamento entre os dados. Esse sistema virou padrão e é usado até hoje. O modelo abstrato de Codd é a primeira abordagem completa para uma base de dados, o resgate das informações, manipulação, integridade lógica, visualização, atualização e gerenciamento. Foi concebido para armazenar registros de daCOLEÇÃO INFO > 9

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

HISTÓRIA

HISTÓRIA

Esse tipo de sistema usa dos com estruturas relatiQUEL como linguagem de vamente simples e procespesquisa das bases de dasar transações simples. dos. O segundo protótipo, A idéia começou a ser conhecido como System desenvolvida por Codd duR, foi desenvolvido pela rante seu doutorado na IBM em San Jose, CalifórUniversidade de Michigan. nia, e levou ao SQL/DS & Em sua tese, ele apresenDB2, da própria empresa, tava uma espécie de “auEdgar Codd: pai do seguido por Oracle e HP. to-reprodução” feita em modelo relacional Nesse sistema, é utilizaprogramas de computada a SEQUEL como linguagem de dores. O trabalho foi publicado em pesquisa de dados. Originalmente, 1967 no livro Cellular Automata, puas aplicações foram desenvolvidas blicado pela Academic Press. A idéia para os enormes mainframes. era tão avançada que levou uma década para ser digerida. AS DOZE REGRAS Pelo menos dois protótipos prinO termo “relação” era usado por cipais de sistemas relacionais foram Codd de maneira estritamente madesenvolvidos entre 1974 e 1977, temática, dentro de uma tabela com mostrando aplicações práticas do linhas e colunas que trabalhavam que só existia na teoria. com propriedades especiais. EmboUm dos protótipos era o Ingres, ra isso pareça óbvio atualmente, não desenvolvido na Universidade era nada elementar nos anos 70. Berkeley, que seria seguido pela InTanto que Codd sentiu a necessidagres Corporation, Sybase, MS SQL de de estabelecer as 12 regras de Server e Britton-Lee, dentre outras. uma base de dados relacional, uma receita para extrair do modelo algo que funcionasse mesmo. Isso aconteceu em 1974 e foi expandido ao longo das décadas. Em 1990, a lista cresceu para 333 requerimentos. Vistas com os olhos de hoje, as 12 Mapa de relacionamento: a teoria de Codd na prática leis parecem brinca-

deira. A primeira delas, conhecida como “Lei da Informação”, dizia simplesmente que todo dado deve ser apresentado ao usuário na forma de tabela. A segunda, ou “Regra do Acesso Garantido”, exige que dBase III: padrão de banco de dados para PCs nos anos 80 todo dado seja acesSURGE O DBASE sível sem ambigüidade e aconselha A evolução natural dos bancos de que cada informação seja descrita dados passaria pelo estabelecimenpor uma combinação de nome da to de um padrão não-teórico: o dBatabela, chave primária e o nome do se, ao ser lançado no final dos anos campo. E assim por diante. 70, tornou-se uma referência. Sua O mesmo Codd cunharia o nome origem encontra-se em meados dos OLAP (On-Line Analytical Procesanos 60. Seu antecessor era um sissing) para descrever uma ampla catema chamado Retrieve, vendido petegoria de produtos de software que la Tymshare Corporation. Naquela tinham as características de acesso época, os computadores só eram aos dados propostas por ele. As 12 encontrados em grandes gabinetes, Regras de seu padrão foram adotano ambiente do trabalho. das pela indústria de TI, forçando O Retrieve era usado no Jet Promuitas empresas a revisar seus propulsion Laboratory (JPL), em Pasadutos para melhor se adequar aos dena, na Califórnia. Nos anos 60, critérios OLAP de Codd. Jeb Long, um programador desse Em 1976, outro avanço viria das peslaboratório, recebeu a tarefa de esquisas de Peter P. Chen. Ele propõe o crever um programa que modelo Entidade-Relaciodesempenhasse as mesnamento (ER) para o design mas funções que o Retriede banco de dados, dando ve. Em 1973, ele se tornou um importante passo para engenheiro de software a modelagem de alto nível do JPL. Ali ele desenvole permitindo ao desenvolveu um programa de gevedor concentrar-se mais renciamento de arquivos no uso das informações do chamado JPLDIS (Jet Proque propriamente na estruPeter Chen: novo pulsion Laboratory Distura lógica que há por trás modelo de design play Information System), da tabela.

10 < C O L E Ç Ã O I N F O

© FOTO DIVULGAÇÃO

© FOTO DIVULGAÇÃO IBM

C O L E Ç Ã O I N F O > 11

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

HISTÓRIA

HISTÓRIA

Esse tipo de sistema usa dos com estruturas relatiQUEL como linguagem de vamente simples e procespesquisa das bases de dasar transações simples. dos. O segundo protótipo, A idéia começou a ser conhecido como System desenvolvida por Codd duR, foi desenvolvido pela rante seu doutorado na IBM em San Jose, CalifórUniversidade de Michigan. nia, e levou ao SQL/DS & Em sua tese, ele apresenDB2, da própria empresa, tava uma espécie de “auEdgar Codd: pai do seguido por Oracle e HP. to-reprodução” feita em modelo relacional Nesse sistema, é utilizaprogramas de computada a SEQUEL como linguagem de dores. O trabalho foi publicado em pesquisa de dados. Originalmente, 1967 no livro Cellular Automata, puas aplicações foram desenvolvidas blicado pela Academic Press. A idéia para os enormes mainframes. era tão avançada que levou uma década para ser digerida. AS DOZE REGRAS Pelo menos dois protótipos prinO termo “relação” era usado por cipais de sistemas relacionais foram Codd de maneira estritamente madesenvolvidos entre 1974 e 1977, temática, dentro de uma tabela com mostrando aplicações práticas do linhas e colunas que trabalhavam que só existia na teoria. com propriedades especiais. EmboUm dos protótipos era o Ingres, ra isso pareça óbvio atualmente, não desenvolvido na Universidade era nada elementar nos anos 70. Berkeley, que seria seguido pela InTanto que Codd sentiu a necessidagres Corporation, Sybase, MS SQL de de estabelecer as 12 regras de Server e Britton-Lee, dentre outras. uma base de dados relacional, uma receita para extrair do modelo algo que funcionasse mesmo. Isso aconteceu em 1974 e foi expandido ao longo das décadas. Em 1990, a lista cresceu para 333 requerimentos. Vistas com os olhos de hoje, as 12 Mapa de relacionamento: a teoria de Codd na prática leis parecem brinca-

deira. A primeira delas, conhecida como “Lei da Informação”, dizia simplesmente que todo dado deve ser apresentado ao usuário na forma de tabela. A segunda, ou “Regra do Acesso Garantido”, exige que dBase III: padrão de banco de dados para PCs nos anos 80 todo dado seja acesSURGE O DBASE sível sem ambigüidade e aconselha A evolução natural dos bancos de que cada informação seja descrita dados passaria pelo estabelecimenpor uma combinação de nome da to de um padrão não-teórico: o dBatabela, chave primária e o nome do se, ao ser lançado no final dos anos campo. E assim por diante. 70, tornou-se uma referência. Sua O mesmo Codd cunharia o nome origem encontra-se em meados dos OLAP (On-Line Analytical Procesanos 60. Seu antecessor era um sissing) para descrever uma ampla catema chamado Retrieve, vendido petegoria de produtos de software que la Tymshare Corporation. Naquela tinham as características de acesso época, os computadores só eram aos dados propostas por ele. As 12 encontrados em grandes gabinetes, Regras de seu padrão foram adotano ambiente do trabalho. das pela indústria de TI, forçando O Retrieve era usado no Jet Promuitas empresas a revisar seus propulsion Laboratory (JPL), em Pasadutos para melhor se adequar aos dena, na Califórnia. Nos anos 60, critérios OLAP de Codd. Jeb Long, um programador desse Em 1976, outro avanço viria das peslaboratório, recebeu a tarefa de esquisas de Peter P. Chen. Ele propõe o crever um programa que modelo Entidade-Relaciodesempenhasse as mesnamento (ER) para o design mas funções que o Retriede banco de dados, dando ve. Em 1973, ele se tornou um importante passo para engenheiro de software a modelagem de alto nível do JPL. Ali ele desenvole permitindo ao desenvolveu um programa de gevedor concentrar-se mais renciamento de arquivos no uso das informações do chamado JPLDIS (Jet Proque propriamente na estruPeter Chen: novo pulsion Laboratory Distura lógica que há por trás modelo de design play Information System), da tabela.

10 < C O L E Ç Ã O I N F O

© FOTO DIVULGAÇÃO

© FOTO DIVULGAÇÃO IBM

C O L E Ç Ã O I N F O > 11

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

HISTÓRIA

HISTÓRIA

Spock, do filme Jornada escrito na linguagem Fornas Estrelas) e começou tran para rodar num maina vendê-lo por reembolframe Univac 1108. so postal. O JPLDIS foi, assim, a Mais tarde, Long assomãe da linguagem dBase, ciou-se a Ratliff e traduziu que passou a rodar em miaquela versão original do crocomputadores com o dBase II para rodar no IBM sistema CP/M. Criada por PC. Todo o trabalho foi feium jovem programador to em linguagem Asdo JPL, Wayne Ratliff, seu Wayne Ratliff: sembly. Jeb Long foi um grande sucesso baseavacriador do Vulcan dos fundadores da emprese na simplicidade. Os cosa Ashton-Tate, ficou conhecido com mandos seguiam a lógica das palaum dos gurus do dBase e como resvras inglesas: use, find, list etc. No ponsável também pelas versões dBase, Ratliff partia de uma idéia dBase III e dBase IV. também simples: desenvolver um programa de banco de dados para AS LINGUAGENS desktop baseado naquele que rodaEm 1984 surgiu o Clipper, linguagem va nos mainframes de seu trabalho. de programação compatível com o Fez tudo isso num computador mondBase III Plus, com desempenho detado em sua casa. zenas de vezes mais rápido que o Foi um grande progresso para a dBase original. Até meados da déépoca. Não somente o programa cada de 90, o Clipper era o líder do criava tabelas e guardava dados, mercado de linguagens de desenmas tinha a capacidade de criar provolvimento para micros. A partir daí, gramas ASCII (como arquivos batch as linguagens visuais, criadas para do DOS), que podiam então exibir rodar no ambiente Windows, e imprimir as informações requisicomeçam a ganhar terreno. tadas. Ratliff batizou seu software Quando os bancos de dados relade Vulcan (em homenagem ao Sr. cionais estavam sendo desenvolvidos, foram criadas linguagens destinadas à sua manipulação. O departamento de pesquisa da IBM desenvolveu a linguagem SQL (Structured FoxPro para DOS: gerenciador baseado em dBase Query Language) nos 12 < C O L E Ç Ã O I N F O

© FOTO DIVULGAÇÃO RATLIFF SOFTWARE PRODUCTIONS

anos 70. Somente em 1986 o American National Standards Institute (ANSI) publicou o SQL como um padrão. A partir daí, o SQL passou a ser usado pela maioria das empresas. Ao longo dos anos 80, a linguagem SQL torna-se praticamenDB2, da IBM: referência em banco de dados corporativo te universal. Por sua Object Database Management vez, o DB2, da IBM, passou a ser o carSystems (ODBMS). ro-chefe da empresa nesse segmenO fenômeno da internet vem sacuto, que começa a experimentar exdir o ambiente de TI em meados dos pressivo crescimento. Ao mesmo temanos 90. Começa-se a exigir de mapo, as redes locais ganham espaço neira frenética o acesso de compunas empresas, e o DB2 se mantém cotadores remotos aos dados guardamo uma das fortes referências em dos nos sistemas legados. Na outra bancos de dados corporativos. ponta, os bancos de dados se adaptam para servir às demandas da web CHEGAM OS PCS — o que significa acesso às informaCom a entrada dos PCs em cena, as ções, de qualquer lugar, via browser. companhias de banco de dados têm No final dos anos 90, o intenso inum crescimento notável. Novos novestimento das empresas na intermes dominam o cenário do software, net abastece o mercado com centecomo RIM, RBase 5000, Paradox, nas de ferramentas para conectar dBase, FoxBase e FoxPro. A transios bancos de dados à web. Crescem ção para a década de 90 deixa pouas ofertas de novos produtos e nocas empresas da geração anterior vas tecnologias. Com o passar do como sobreviventes. O modelo clientempo, destacam-se duas áreas báte-servidor torna-se a norma para sicas: de um lado, as soluções baas futuras decisões de negócio, ao seadas na plataforma Java, da Sun. mesmo tempo em que se verifica o Empresas como a própria Sun, além estabelecimento das ferramentas de de IBM e Oracle, têm bancos de daprodutividade pessoal, como Excel dos ou ferramentas para desenvole Access. É também um marco inivimento nessa área. Do outro lado, cial para os protótipos dos bancos estão as empresas que oferecem de dados orientados a objeto, ou C O L E Ç Ã O I N F O > 13

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

HISTÓRIA

HISTÓRIA

Spock, do filme Jornada escrito na linguagem Fornas Estrelas) e começou tran para rodar num maina vendê-lo por reembolframe Univac 1108. so postal. O JPLDIS foi, assim, a Mais tarde, Long assomãe da linguagem dBase, ciou-se a Ratliff e traduziu que passou a rodar em miaquela versão original do crocomputadores com o dBase II para rodar no IBM sistema CP/M. Criada por PC. Todo o trabalho foi feium jovem programador to em linguagem Asdo JPL, Wayne Ratliff, seu Wayne Ratliff: sembly. Jeb Long foi um grande sucesso baseavacriador do Vulcan dos fundadores da emprese na simplicidade. Os cosa Ashton-Tate, ficou conhecido com mandos seguiam a lógica das palaum dos gurus do dBase e como resvras inglesas: use, find, list etc. No ponsável também pelas versões dBase, Ratliff partia de uma idéia dBase III e dBase IV. também simples: desenvolver um programa de banco de dados para AS LINGUAGENS desktop baseado naquele que rodaEm 1984 surgiu o Clipper, linguagem va nos mainframes de seu trabalho. de programação compatível com o Fez tudo isso num computador mondBase III Plus, com desempenho detado em sua casa. zenas de vezes mais rápido que o Foi um grande progresso para a dBase original. Até meados da déépoca. Não somente o programa cada de 90, o Clipper era o líder do criava tabelas e guardava dados, mercado de linguagens de desenmas tinha a capacidade de criar provolvimento para micros. A partir daí, gramas ASCII (como arquivos batch as linguagens visuais, criadas para do DOS), que podiam então exibir rodar no ambiente Windows, e imprimir as informações requisicomeçam a ganhar terreno. tadas. Ratliff batizou seu software Quando os bancos de dados relade Vulcan (em homenagem ao Sr. cionais estavam sendo desenvolvidos, foram criadas linguagens destinadas à sua manipulação. O departamento de pesquisa da IBM desenvolveu a linguagem SQL (Structured FoxPro para DOS: gerenciador baseado em dBase Query Language) nos 12 < C O L E Ç Ã O I N F O

© FOTO DIVULGAÇÃO RATLIFF SOFTWARE PRODUCTIONS

anos 70. Somente em 1986 o American National Standards Institute (ANSI) publicou o SQL como um padrão. A partir daí, o SQL passou a ser usado pela maioria das empresas. Ao longo dos anos 80, a linguagem SQL torna-se praticamenDB2, da IBM: referência em banco de dados corporativo te universal. Por sua Object Database Management vez, o DB2, da IBM, passou a ser o carSystems (ODBMS). ro-chefe da empresa nesse segmenO fenômeno da internet vem sacuto, que começa a experimentar exdir o ambiente de TI em meados dos pressivo crescimento. Ao mesmo temanos 90. Começa-se a exigir de mapo, as redes locais ganham espaço neira frenética o acesso de compunas empresas, e o DB2 se mantém cotadores remotos aos dados guardamo uma das fortes referências em dos nos sistemas legados. Na outra bancos de dados corporativos. ponta, os bancos de dados se adaptam para servir às demandas da web CHEGAM OS PCS — o que significa acesso às informaCom a entrada dos PCs em cena, as ções, de qualquer lugar, via browser. companhias de banco de dados têm No final dos anos 90, o intenso inum crescimento notável. Novos novestimento das empresas na intermes dominam o cenário do software, net abastece o mercado com centecomo RIM, RBase 5000, Paradox, nas de ferramentas para conectar dBase, FoxBase e FoxPro. A transios bancos de dados à web. Crescem ção para a década de 90 deixa pouas ofertas de novos produtos e nocas empresas da geração anterior vas tecnologias. Com o passar do como sobreviventes. O modelo clientempo, destacam-se duas áreas báte-servidor torna-se a norma para sicas: de um lado, as soluções baas futuras decisões de negócio, ao seadas na plataforma Java, da Sun. mesmo tempo em que se verifica o Empresas como a própria Sun, além estabelecimento das ferramentas de de IBM e Oracle, têm bancos de daprodutividade pessoal, como Excel dos ou ferramentas para desenvole Access. É também um marco inivimento nessa área. Do outro lado, cial para os protótipos dos bancos estão as empresas que oferecem de dados orientados a objeto, ou C O L E Ç Ã O I N F O > 13

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

HISTÓRIA

banco de dados exigem gerenciadores capazes de dar respostas rápidas às empresas. Nessa área, a Oracle se destaca como o maior fornecedor de bancos de dados corporativos. Desde 1985, o produto passou a tirar proveito da disseminação das redes locais, dando suporte ao modelo cliente-servidor. O Oracle 5, dessa época, suportava consultas distribuíAOS TERABYTES das. Em 1988, surgiu a versão 8, com Mas as tendências apontam para suporte ao desenvolvimento oriensistemas de alto nível de armazetado a objeto e aplicações multimínamento (da ordem de terabytes) dia. Em 1999, sai a versão 8i — i de que exigem rapidez e confiabiliinternet. O número atual é 10g, sendade de processamento, manuseio do o g indicativo da capacidade de e análise dos dados. Projetos granfuncionar num grid de servidores. diosos, como o Genoma, apontam O Oracle também foi o primeiro banpara esse tipo de demanda. Ao co de dados comercial a oferecer mesmo tempo, bases de dados uma versão para Linux. geológicos, meteorológicos e esFinalmente, deve-se prestar paciais requerem mais velocidaatenção ao crescimento das platade e segurança. Também se torformas de código aberto, notadanam comuns as aplicações empremente o Linux. Junto com ele, dessariais de data mining, data warepontam bancos de dados como o house e data marts. Esses usos do MySQL, utilizado em aplicações web. Essa mudança em direção ao software livre pode redefinir o perfil do mercado de banco de dados, em especial na faixa das aplicações médias e pequenas, a curto prazo, mas abarcando as grandes aplicações, a Oracle 10g: gerenciador de bancos de dados para clusters longo prazo. produtos fundamentados nas tecnologias ASP e, mais recentemente, .Net, da Microsoft. No item específico dos gerenciadores de bancos de dados, os grandes nomes são IBM, Oracle e Microsoft. Com a expansão da conectividade, os bancos de dados estendem as possibilidades de acesso até aos PDAs.

14 < C O L E Ç Ã O I N F O

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

CONCEITOS

SABE O QUE É TUPLA? ENTENDA OS CONCEITOS QUE FAZEM DO BANCO DE DADOS UM MUNDO À PARTE NO UNIVERSO DO SOFTWARE POR CELSO HENRIQUE PODEROSO DE OLIVEIRA

odo mundo que usa telefone possui uma agenda. Nela, cada amigo tem nome, endereço, número da linha, data de aniversário e e-mail, cada dado anotado num espaço especial. Quando precisamos ligar para algum contato, vamos à letra inicial do nome e buscamos o número do telefone. Essa agendinha quase banal expressa

T

bem o que é um banco de dados — um armazém de informações relevantes, organizadas de maneira coerente e lógica, que precisam ser recuperadas com freqüência. No universo dos bits e bytes, o banco de dados envolve conceitos importantes, que precisamos entender bem para torná-lo útil e eficiente. É disso que trataremos aqui, começando pelo próprio.

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

C O L E Ç Ã O I N F O > 15

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

CONCEITOS

CONCEITOS

acesso, redundância e integridade, o compartilhamento de dados e o mecanismo de cópias de segurança.

Interface DB2: administração gráfica

BANCO DE DADOS Defini-lo como uma ou mais tabelas de dados relacionadas ou não é possível. Mas podemos acrescentar à lista de componentes os índices, visões (views), procedimentos (procedures), funções, gatilhos (triggers) etc. Tudo depende do tipo de banco de dados e do que se quer fazer com ele. Partindo-se desse princípio, podem ser considerados banco de dados os arquivos DBF que foram muito populares na década de 80 com a linguagem Clipper, um arquivo MDB do MS Access ou mesmo arquivos DAT, proprietários de linguagens de terceira geração como Pascal e Cobol. SISTEMA GERENCIADOR É uma coleção de programas responsáveis pela manutenção das estruturas e objetos de um banco de dados. Há diversos produtos comerciais e de uso livre. Entre os pagos destacam-se Oracle, IBM DB2 e MS SQL Server. Entre os livres, MySQL, Firebird e PostgreSQL. Os gerenciadores têm como características principais os controles de 16 < C O L E Ç Ã O I N F O

MODELAGEM DE DADOS Processo pelo qual trabalham-se os dados de uma empresa ou sistema para se obter estruturas de armazenamento estáveis. O processo de análise pode se dar por meio da criação do Modelo de Entidade X Relacionamento ou pela Normalização de Dados. O objetivo da modelagem é fazer com que as estruturas possam evoluir no tempo, sem prejudicar o desenvolvimento de sistemas. MODELO DE ENTIDADE X RELACIONAMENTO

Modelo: entidade x relacionamento

Modelo que contém as entidades de um sistema e o relacionamento entre elas. Deve ser entendido como uma representação da realidade. Como sempre é possível modificar a realidade de um sistema, deve ser prevista a evolução do modelo. ENTIDADE Entende-se como um grupo de coisas semelhantes. Essas coisas podem ter uma existência física (pessoa, carro, imóvel), ser um documento (no-

Entidade: grupo de coisas semelhantes

ta fiscal, pedido de compra, ordem de serviço), um local (armazém, sede, filial) ou qualquer outro objeto do mundo real. Cada entidade deve possuir diversas instâncias do objeto que representa. Vamos exemplificar com os automóveis. A entidade é o grupo carro. A instância é o objeto Honda Civic, Peugeot 206, VW Gol. Quando se transpõe a entidade para um modelo físico, tem-se a tabela (no modelo relacional) ou a classe (no modelo orientado a objeto). Uma entidade é representada por um retângulo com o respectivo nome. ATRIBUTO Qualificador lógico de um objeto, serve para descrever ou caracterizar os elementos de uma entidade. Cada atributo deve conter apenas uma característica do objeto. Esse ponto é importante para não confundirmos atributo com entidade. Um objeto deve ter algumas características específicas. Cada uma delas será um atributo do objeto. O inverso é também verdadeiro: um atributo não pode ter subdivisões. Se utilizar o exemplo da entidade carro, podemos ter atributos como nome, montadora, modelo etc. Quando se transpõe para o modelo físico, os atributos se transformam em colunas ou campos no modelo re-

lacional e em atributos ou propriedades no modelo orientado a objetos. Os atributos são colocados dentro do retângulo que representa a entidade e abaixo do nome da própria. TUPLA Nada mais é do que o conjunto de características do objeto que se quer representar, a estrutura de atributos relacionados e interdependentes. A tupla seria a linha ou o registro de uma tabela no modelo relacional e a instância no modelo orientado a objetos. TABELA Estrutura composta por linhas e colunas que serve para armazenar os dados em um banco de dados relacional. A linha indica uma ocorrência do objeto do mundo real, e a coluna serve para qualificar o objeto. Dessa forma, se imaginarmos uma tabela PESSOA, ela teria em cada linha uma pessoa e em cada coluna as informações relevantes dessa pessoa, como nome, peso, altura, data de nascimento, documento de identificação, cor dos olhos, cor dos ca-

Tabela: estrutura com linhas e colunas

C O L E Ç Ã O I N F O > 17

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

CONCEITOS

CONCEITOS

acesso, redundância e integridade, o compartilhamento de dados e o mecanismo de cópias de segurança.

Interface DB2: administração gráfica

BANCO DE DADOS Defini-lo como uma ou mais tabelas de dados relacionadas ou não é possível. Mas podemos acrescentar à lista de componentes os índices, visões (views), procedimentos (procedures), funções, gatilhos (triggers) etc. Tudo depende do tipo de banco de dados e do que se quer fazer com ele. Partindo-se desse princípio, podem ser considerados banco de dados os arquivos DBF que foram muito populares na década de 80 com a linguagem Clipper, um arquivo MDB do MS Access ou mesmo arquivos DAT, proprietários de linguagens de terceira geração como Pascal e Cobol. SISTEMA GERENCIADOR É uma coleção de programas responsáveis pela manutenção das estruturas e objetos de um banco de dados. Há diversos produtos comerciais e de uso livre. Entre os pagos destacam-se Oracle, IBM DB2 e MS SQL Server. Entre os livres, MySQL, Firebird e PostgreSQL. Os gerenciadores têm como características principais os controles de 16 < C O L E Ç Ã O I N F O

MODELAGEM DE DADOS Processo pelo qual trabalham-se os dados de uma empresa ou sistema para se obter estruturas de armazenamento estáveis. O processo de análise pode se dar por meio da criação do Modelo de Entidade X Relacionamento ou pela Normalização de Dados. O objetivo da modelagem é fazer com que as estruturas possam evoluir no tempo, sem prejudicar o desenvolvimento de sistemas. MODELO DE ENTIDADE X RELACIONAMENTO

Modelo: entidade x relacionamento

Modelo que contém as entidades de um sistema e o relacionamento entre elas. Deve ser entendido como uma representação da realidade. Como sempre é possível modificar a realidade de um sistema, deve ser prevista a evolução do modelo. ENTIDADE Entende-se como um grupo de coisas semelhantes. Essas coisas podem ter uma existência física (pessoa, carro, imóvel), ser um documento (no-

Entidade: grupo de coisas semelhantes

ta fiscal, pedido de compra, ordem de serviço), um local (armazém, sede, filial) ou qualquer outro objeto do mundo real. Cada entidade deve possuir diversas instâncias do objeto que representa. Vamos exemplificar com os automóveis. A entidade é o grupo carro. A instância é o objeto Honda Civic, Peugeot 206, VW Gol. Quando se transpõe a entidade para um modelo físico, tem-se a tabela (no modelo relacional) ou a classe (no modelo orientado a objeto). Uma entidade é representada por um retângulo com o respectivo nome. ATRIBUTO Qualificador lógico de um objeto, serve para descrever ou caracterizar os elementos de uma entidade. Cada atributo deve conter apenas uma característica do objeto. Esse ponto é importante para não confundirmos atributo com entidade. Um objeto deve ter algumas características específicas. Cada uma delas será um atributo do objeto. O inverso é também verdadeiro: um atributo não pode ter subdivisões. Se utilizar o exemplo da entidade carro, podemos ter atributos como nome, montadora, modelo etc. Quando se transpõe para o modelo físico, os atributos se transformam em colunas ou campos no modelo re-

lacional e em atributos ou propriedades no modelo orientado a objetos. Os atributos são colocados dentro do retângulo que representa a entidade e abaixo do nome da própria. TUPLA Nada mais é do que o conjunto de características do objeto que se quer representar, a estrutura de atributos relacionados e interdependentes. A tupla seria a linha ou o registro de uma tabela no modelo relacional e a instância no modelo orientado a objetos. TABELA Estrutura composta por linhas e colunas que serve para armazenar os dados em um banco de dados relacional. A linha indica uma ocorrência do objeto do mundo real, e a coluna serve para qualificar o objeto. Dessa forma, se imaginarmos uma tabela PESSOA, ela teria em cada linha uma pessoa e em cada coluna as informações relevantes dessa pessoa, como nome, peso, altura, data de nascimento, documento de identificação, cor dos olhos, cor dos ca-

Tabela: estrutura com linhas e colunas

C O L E Ç Ã O I N F O > 17

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

CONCEITOS

Chaves: qualificadores das entidades

belos etc. A idéia central é que as características do objeto permitam identificar uma única pessoa em cada linha da tabela. CHAVE Um ou mais atributos que permitem identificar uma única ocorrência na entidade. É um qualificador único. No modelo físico, a chave é o campo ou a coluna que contém um valor exclusivo e com preenchimento obrigatório. Assim, não poderá haver o mesmo conteúdo da coluna em duas linhas diferentes. Imagine uma chave para PESSOA. Nome seria uma boa coluna para chave? Naturalmente não, pois há pessoas que têm nomes iguais. CPF seria uma boa chave? Em alguns casos sim, pois embora não tenha repetição e seja um documento obrigatório para os adultos, não é para os bebês. O que normalmente acontece em casos como esse é criarmos uma coluna. Em alguns outros exemplos, a chave seria localizada com mais facilidade. Se analisarmos uma Nota Fis18 < C O L E Ç Ã O I N F O

cal, por exemplo, o número da nota não se repete e é obrigatório. Por isso poderá ser candidato para a coluna chave. Uma chave geralmente está destacada por um símbolo (asterisco ou uma pequena chave) ao lado do atributo correspondente. Quando se analisa o modelo físico, uma chave pode ser classificada como: ■ PRIMÁRIA: qualificador único e obrigatório. Deve haver uma única chave primária em cada tabela. ■ ESTRANGEIRA: serve para relacionar duas tabelas. Vamos voltar ao exemplo da Nota Fiscal. Cada nota está relacionada a um cliente. Nota Fiscal é uma tabela e cliente outra. Cada tabela tem a sua própria chave primária. Para relacionar o cliente com a nota fiscal, deixamos uma referência à coluna chave do cliente na tabela nota fiscal (chave estrangeira). ■ SECUNDÁRIA classifica os dados nas tabelas. Geralmente, os índices têm o objetivo de agilizar o processo de busca. RELACIONAMENTO Se uma entidade é um conjunto de coisas semelhantes, é natural que essas coisas guardem algum tipo de relacionamento que seja importante recuperar em algum momento. Quando dizemos que uma nota fiscal é emitida contra um cliente, podemos entender que estamos tratando de duas entidades diferentes: Nota Fiscal e Cliente. Há, entre

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

CONCEITOS

essas duas entidades, uma relação de interdependência, ou seja, para se emitir uma Nota Fiscal, é necessário que haja um Cliente. A essa interdependência damos o nome de relacionamento. Na prática, sempre que uma ou mais tuplas de uma entidade guardarem alguma relação com uma ou mais tuplas de outra entidade teremos um relacionamento entre as entidades. Um relacionamento pode ser classificado de duas formas: opcionalidade e cardinalidade. A opcionalidade indica se é obrigatória ou não a ocorrência ou indicação de uma tupla de uma entidade na outra. Dessa forma, podemos dizer que é obrigatória a presença de um Cliente em uma Nota Fiscal, mas é opcional a existência de uma Transportadora, por exemplo. De outro lado, o Cliente pode ou não estar vinculado a uma Nota Fiscal. O mesmo acontece com a Transportadora. A cardinalidade indica quantas ocorrências de uma tupla se relacionam com a outra tupla. Sabemos que cada Cliente pode estar vinculado a zero, uma ou muitas Notas Fiscais, enquanto cada Nota Fiscal está relacionada a um único Cliente. Como você pode notar, a cardinalidade e a opcionalidade são sempre expressas de um e de outro lado do relacionamento. A cardinalidade pode ser: ■ UM PARA UM (1:1): quando cada tupla de uma entidade está relacio-

nada apenas a zero ou a uma tupla da outra entidade (lembre-se que zero ou um é a opcionalidade). Esse tipo de relacionamento não é o mais comum, pois sempre se deve questionar a vantagem de manter os dados separados em duas entidades. Note que sempre há um custo vinculado à criação e manutenção de uma tabela. Se o custo compensar, devese manter separado. Do contrário, é melhor unir as duas entidades. ■ UM PARA MUITOS (1:M): quando cada tupla de uma entidade está relacionada a zero, uma ou mais tuplas da outra entidade (não esqueça que o zero ou um é a opcionalidade). Este é o relacionamento mais comum. ■ MUITOS PARA MUITOS (M:M): quando há ocorrências de múltiplos relacionamentos entre as tuplas de duas entidades. Esse relacionamento, apesar de existir, não é passível de implementação em um banco de

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

C O L E Ç Ã O I N F O > 19

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

CONCEITOS

dados relacional. Sempre que se identificar essa situação, deve-se criar uma entidade entre as duas entidades, classificadas como fundamentais. Essa nova entidade, classificada como entidade associativa, deve conter, pelo menos, as chaves das duas entidades fundamentais. Uma das formas de representar o relacionamento é o “pé-de-galinha” para indicar a cardinalidade muitos, um pequeno traço para indicar a cardinalidade um, o tracejado para indicar opcionalidade e o segmento de reta contínuo para indicar obrigatoriedade. Uma outra forma é indicar a opcionalidade com um pequeno círculo antes do um ou muitos da cardinalidade. Lembre-se: são apenas convenções. O importante é que o relacionamento esteja claro e esteja representado no modelo de dados. INTEGRIDADE REFERENCIAL Mecanismo utilizado pelos gerenciadores de bancos de dados para manter a consistência das informações armazenadas. Suponha que estamos cadastrando uma Nota Fiscal e indicamos um código de cliente (que relaciona com a tabela Cliente) inexistente. Outra situação é tentar excluir um Cliente que tenha diversas Notas Fiscais emitidas. Como iríamos recuperar a informação, caso o banco de dados permitisse a exclusão do Cliente? Simplesmente perderíamos o elo entre as tabelas, e a informação armazenada estaria inválida. 20 < C O L E Ç Ã O I N F O

CONCEITOS

A principal forma de garantir a integridade entre tabelas se dá por meio do vínculo entre a chave primária de uma tabela com a chave estrangeira da outra tabela. As colunas das duas tabelas armazenam as informações que permitem estabelecer o relacionamento entre as linhas das tabelas. Assim, o código de cliente 1 da tabela Cliente, cujo nome é João, será armazenado na coluna código do cliente da tabela Nota Fiscal sempre que se quiser indicar que o João comprou determinados produtos. Não será possível excluir João (código do cliente 1) enquanto houver Notas Fiscais emitidas contra esse cliente. Restrições: melhoram a qualidade da informação armazenada nas tabelas do banco

RESTRIÇÕES Utilizam-se as restrições (constraints) para melhorar a qualidade da informação guardada nas tabelas do banco. As restrições mais comuns são a chave primária e a estrangeira. Mas há outras restrições bastante importantes: ■ NULOS: uma coluna que não tenha valor inicializado é considerada uma coluna nula. Nem sempre é adequado permitir que uma coluna não tenha valores atribuídos. Imagine uma linha na tabela Cliente cujo nome seja nulo. Como podemos identificar o cliente? ■ EXCLUSIVOS: suponha que se tenha criado uma tabela Cliente cujo código do cliente não seja um documento, como CPF ou RG. Mesmo

não sendo uma coluna chave, esses valores não podem ser duplicados em clientes (linhas) diferentes. Para isso definimos que sejam admitidos somente valores exclusivos. O que a difere de uma chave primária é que esta última não pode assumir valores nulos. ■ PADRÃO: É muito comum que, quando um valor não é informado, o sistema assuma um valor-padrão para a coluna (como data de emissão de uma Nota Fiscal ou quantidade de um determinado produto em uma Nota Fiscal). ■ DOMÍNIO: as vezes é necessário determinar um intervalo de valores possíveis para uma determinada coluna. É o caso do sexo, por exem-

plo, que pode assumir apenas os valores Masculino ou Feminino. TRANSAÇÃO Ocorre sempre que houver uma modificação no conteúdo das tabelas de um banco de dados. Dessa forma, uma inclusão, alteração ou exclusão geram uma transação. Em gerenciadores de banco de dados, o controle sobre o momento da efetiva gravação (COMMIT) dos dados ou abandono da operação (ROLLBACK) é realizado pelo usuário do banco de dados ou pelo sistema. A transação representa um conjunto de operações que são realizados na base de dados para produzir um resultado final. C O L E Ç Ã O I N F O > 21

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

CONCEITOS

dados relacional. Sempre que se identificar essa situação, deve-se criar uma entidade entre as duas entidades, classificadas como fundamentais. Essa nova entidade, classificada como entidade associativa, deve conter, pelo menos, as chaves das duas entidades fundamentais. Uma das formas de representar o relacionamento é o “pé-de-galinha” para indicar a cardinalidade muitos, um pequeno traço para indicar a cardinalidade um, o tracejado para indicar opcionalidade e o segmento de reta contínuo para indicar obrigatoriedade. Uma outra forma é indicar a opcionalidade com um pequeno círculo antes do um ou muitos da cardinalidade. Lembre-se: são apenas convenções. O importante é que o relacionamento esteja claro e esteja representado no modelo de dados. INTEGRIDADE REFERENCIAL Mecanismo utilizado pelos gerenciadores de bancos de dados para manter a consistência das informações armazenadas. Suponha que estamos cadastrando uma Nota Fiscal e indicamos um código de cliente (que relaciona com a tabela Cliente) inexistente. Outra situação é tentar excluir um Cliente que tenha diversas Notas Fiscais emitidas. Como iríamos recuperar a informação, caso o banco de dados permitisse a exclusão do Cliente? Simplesmente perderíamos o elo entre as tabelas, e a informação armazenada estaria inválida. 20 < C O L E Ç Ã O I N F O

CONCEITOS

A principal forma de garantir a integridade entre tabelas se dá por meio do vínculo entre a chave primária de uma tabela com a chave estrangeira da outra tabela. As colunas das duas tabelas armazenam as informações que permitem estabelecer o relacionamento entre as linhas das tabelas. Assim, o código de cliente 1 da tabela Cliente, cujo nome é João, será armazenado na coluna código do cliente da tabela Nota Fiscal sempre que se quiser indicar que o João comprou determinados produtos. Não será possível excluir João (código do cliente 1) enquanto houver Notas Fiscais emitidas contra esse cliente. Restrições: melhoram a qualidade da informação armazenada nas tabelas do banco

RESTRIÇÕES Utilizam-se as restrições (constraints) para melhorar a qualidade da informação guardada nas tabelas do banco. As restrições mais comuns são a chave primária e a estrangeira. Mas há outras restrições bastante importantes: ■ NULOS: uma coluna que não tenha valor inicializado é considerada uma coluna nula. Nem sempre é adequado permitir que uma coluna não tenha valores atribuídos. Imagine uma linha na tabela Cliente cujo nome seja nulo. Como podemos identificar o cliente? ■ EXCLUSIVOS: suponha que se tenha criado uma tabela Cliente cujo código do cliente não seja um documento, como CPF ou RG. Mesmo

não sendo uma coluna chave, esses valores não podem ser duplicados em clientes (linhas) diferentes. Para isso definimos que sejam admitidos somente valores exclusivos. O que a difere de uma chave primária é que esta última não pode assumir valores nulos. ■ PADRÃO: É muito comum que, quando um valor não é informado, o sistema assuma um valor-padrão para a coluna (como data de emissão de uma Nota Fiscal ou quantidade de um determinado produto em uma Nota Fiscal). ■ DOMÍNIO: as vezes é necessário determinar um intervalo de valores possíveis para uma determinada coluna. É o caso do sexo, por exem-

plo, que pode assumir apenas os valores Masculino ou Feminino. TRANSAÇÃO Ocorre sempre que houver uma modificação no conteúdo das tabelas de um banco de dados. Dessa forma, uma inclusão, alteração ou exclusão geram uma transação. Em gerenciadores de banco de dados, o controle sobre o momento da efetiva gravação (COMMIT) dos dados ou abandono da operação (ROLLBACK) é realizado pelo usuário do banco de dados ou pelo sistema. A transação representa um conjunto de operações que são realizados na base de dados para produzir um resultado final. C O L E Ç Ã O I N F O > 21

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

CONCEITOS

NORMALIZAÇÃO DE DADOS Processo pelo qual são aplicadas regras a um conjunto de dados e, no final, obtém-se uma base quase livre de redundâncias. Ao atingir esse objetivo, é possível recuperar o dado em um único lugar (tabela). Isso fará, com certeza, que haja um aumento na quantidade de tabelas criadas no sistema, mas ajudará a aumentar a confiabilidade dos dados armazenados. Ao final do processo de normalização, deve-se validá-lo com o Modelo de Entidade x Relacionamento. Esse processo pode ser feito em até seis fases, mas, geralmente, ao se chegar na terceira etapa (conhecida como 3ª- Forma Normal), já é possível obter um modelo de dados estável. Antes de iniciar o processo de normalização, é importante identificar o grupo de dados que se quer analisar. Esse grupo pode estar representado por um formulário, um relatório ou até mesmo uma tela do sistema. Pode também ser resultado de um levantamento sistemático das necessidades de informação dos usuários. Com o grupo de dados definido, deve-se listar todos os dados disponíveis, sem desprezar nenhum. Em seguida, deve-se dar um nome a esse grupo de dados. Após o nome, estabelece-se um identificador único (chave). Cumprida essa etapa, deve-se proceder ao processo de normalização. Para explicar melhor, vamos adotar um formulário de Nota Fiscal como exemplo. 22 < C O L E Ç Ã O I N F O

CONCEITOS

As três fases da Normalização de Dados são: ■ 1ª- FORMA NORMAL (1FN): eliminar grupos de dados repetitivos da estrutura. Para isso, deve-se localizar os atributos multivalorados, os que têm mais de uma ocorrência no formulário. No caso da Nota Fiscal, temos produto, quantidade, valor unitário e total como grupo de dados multivalorado. Deve-se separar esse grupo em uma nova entidade, dar um nome ao grupo, levar a chave da Nota Fiscal (para manter a relação entre as entidades) e estabelecer uma chave para o novo grupo. Essa chave pode ser composta pela chave da Nota Fiscal e por mais de um atributo existente. É possível, quando não se localizar um atributo adequado, criá-la. ■ 2ª - FORMA NORMAL (2FN): quando somente houver grupos de dados na 1ª- Forma Normal (e jamais antes disso), deve-se localizar dados que não dependam única e exclusivamente da chave da entidade. Veja: o Cliente está relacionado à Nota Fiscal, mas não depende dela. O Cliente existe, mesmo que não exista a Nota Fiscal. Por esse motivo dizemos que o Cliente não depende da Nota Fiscal e, por isso, deve ter os dados separados em uma nova entidade. Ao se identificar o(s) grupo(s) independente(s), deve-se separá-los em uma nova entidade (uma para cada grupo independente). Feito isso, dá-se um nome à entidade e estabelece-se uma chave

para o novo grupo. Caso não haja um bom atributo para ser a chave, deve-se criá-lo. É isso que foi feito com o Cliente e Produto. ■ 3ª-FORMA NORMAL (3FN): depois que os grupos de dados estiverem na 2ª- Forma Normal (e jamais antes disso), localizam-se atributos com dependência transitiva. Calma! Não é tão complicado. Dependência transitiva ocorre quando um dado pode ser obtido por meio de outro, exceto a chave. Isso porque os atributos dependem da chave. Até que você se habitue, tente localizar campos que possam ser substituídos por fórmulas matemáticas. No exemplo, temos o atributo Valor Total no Item da Nota e o Valor Total da Nota Fiscal. Esses atributos devem ser excluídos, pois podem ser obtidos por meio de um cálculo realizado com outros atributos. Com os dados normalizados, é possível criar as tabelas.

PROCEDIMENTOS ARMAZENADOS São pequenos códigos executados em um banco de dados que ficam guardados para posterior utilização. Podem ser stored procedures (procedimentos armazenados), stored functions (funções armazenadas), trigger (gatilho) e package (pacote). Um procedimento é um conjunto de comandos dentro de uma estrutura lógica, com o objetivo de realizar uma ação no banco de dados. A diferença entre procedimento e função é que esta última retorna valor. Gatilhos são procedimentos disparados por eventos do banco de dados (inclusão, alteração ou exclusão). Por fim, um pacote é um conjunto de funções, procedimentos e outras estruturas que são armazenados em conjunto para facilitar a manutenção e a segurança da informação.

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

C O L E Ç Ã O I N F O > 23

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

CONCEITOS

NORMALIZAÇÃO DE DADOS Processo pelo qual são aplicadas regras a um conjunto de dados e, no final, obtém-se uma base quase livre de redundâncias. Ao atingir esse objetivo, é possível recuperar o dado em um único lugar (tabela). Isso fará, com certeza, que haja um aumento na quantidade de tabelas criadas no sistema, mas ajudará a aumentar a confiabilidade dos dados armazenados. Ao final do processo de normalização, deve-se validá-lo com o Modelo de Entidade x Relacionamento. Esse processo pode ser feito em até seis fases, mas, geralmente, ao se chegar na terceira etapa (conhecida como 3ª- Forma Normal), já é possível obter um modelo de dados estável. Antes de iniciar o processo de normalização, é importante identificar o grupo de dados que se quer analisar. Esse grupo pode estar representado por um formulário, um relatório ou até mesmo uma tela do sistema. Pode também ser resultado de um levantamento sistemático das necessidades de informação dos usuários. Com o grupo de dados definido, deve-se listar todos os dados disponíveis, sem desprezar nenhum. Em seguida, deve-se dar um nome a esse grupo de dados. Após o nome, estabelece-se um identificador único (chave). Cumprida essa etapa, deve-se proceder ao processo de normalização. Para explicar melhor, vamos adotar um formulário de Nota Fiscal como exemplo. 22 < C O L E Ç Ã O I N F O

CONCEITOS

As três fases da Normalização de Dados são: ■ 1ª- FORMA NORMAL (1FN): eliminar grupos de dados repetitivos da estrutura. Para isso, deve-se localizar os atributos multivalorados, os que têm mais de uma ocorrência no formulário. No caso da Nota Fiscal, temos produto, quantidade, valor unitário e total como grupo de dados multivalorado. Deve-se separar esse grupo em uma nova entidade, dar um nome ao grupo, levar a chave da Nota Fiscal (para manter a relação entre as entidades) e estabelecer uma chave para o novo grupo. Essa chave pode ser composta pela chave da Nota Fiscal e por mais de um atributo existente. É possível, quando não se localizar um atributo adequado, criá-la. ■ 2ª - FORMA NORMAL (2FN): quando somente houver grupos de dados na 1ª- Forma Normal (e jamais antes disso), deve-se localizar dados que não dependam única e exclusivamente da chave da entidade. Veja: o Cliente está relacionado à Nota Fiscal, mas não depende dela. O Cliente existe, mesmo que não exista a Nota Fiscal. Por esse motivo dizemos que o Cliente não depende da Nota Fiscal e, por isso, deve ter os dados separados em uma nova entidade. Ao se identificar o(s) grupo(s) independente(s), deve-se separá-los em uma nova entidade (uma para cada grupo independente). Feito isso, dá-se um nome à entidade e estabelece-se uma chave

para o novo grupo. Caso não haja um bom atributo para ser a chave, deve-se criá-lo. É isso que foi feito com o Cliente e Produto. ■ 3ª-FORMA NORMAL (3FN): depois que os grupos de dados estiverem na 2ª- Forma Normal (e jamais antes disso), localizam-se atributos com dependência transitiva. Calma! Não é tão complicado. Dependência transitiva ocorre quando um dado pode ser obtido por meio de outro, exceto a chave. Isso porque os atributos dependem da chave. Até que você se habitue, tente localizar campos que possam ser substituídos por fórmulas matemáticas. No exemplo, temos o atributo Valor Total no Item da Nota e o Valor Total da Nota Fiscal. Esses atributos devem ser excluídos, pois podem ser obtidos por meio de um cálculo realizado com outros atributos. Com os dados normalizados, é possível criar as tabelas.

PROCEDIMENTOS ARMAZENADOS São pequenos códigos executados em um banco de dados que ficam guardados para posterior utilização. Podem ser stored procedures (procedimentos armazenados), stored functions (funções armazenadas), trigger (gatilho) e package (pacote). Um procedimento é um conjunto de comandos dentro de uma estrutura lógica, com o objetivo de realizar uma ação no banco de dados. A diferença entre procedimento e função é que esta última retorna valor. Gatilhos são procedimentos disparados por eventos do banco de dados (inclusão, alteração ou exclusão). Por fim, um pacote é um conjunto de funções, procedimentos e outras estruturas que são armazenados em conjunto para facilitar a manutenção e a segurança da informação.

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

C O L E Ç Ã O I N F O > 23

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

CRIAÇÃO

CRIAÇÃO

PLANEJE BEM O SEU BANCO SIGA O ROTEIRO PARA CRIAR UM BANCO DE DADOS QUE ACOMPANHE AS TRANSFORMAÇÕES DA EMPRESA

Com isso, dependendo do caso, se a sua empresa desenvolve sistemas, a decisão poderá ser totalmente diferente de uma construtora, por exemplo. Baseie-se em aspectos técnicos e mercadológicos para definir o produto com o qual você irá con-

viver durante um bom tempo (tenha isso em mente: não se troca de banco de dados senão com alguma dificuldade). Veja na tabela abaixo algumas questões que podem ajudar na escolha do produto ideal para as suas necessidades.

POR CELSO HENRIQUE PODEROSO DE OLIVEIRA

GUIA PARA A ESCOLHA DO GERENCIADOR criação de um banco de dados é um processo que envolve uma série de competências. Houve tempo em que esse processo estava reduzido a identificar um ou mais objetos, escolher uma forma de armazenamento, algumas características desses objetos e pronto. Geralmente, a própria estrutura do banco de dados era vinculada à linguagem de programação. Com o passar do tempo, a tecnologia evoluiu e foi separada das linguagens de programação. Ambientes completos de administração foram desenvolvidos e sua utilização contribuiu para disseminar as informações de maneira adequada e consistente. Atualmente, os produtos estão muito mais complexos e permitem ao profissional realizar um trabalho que pode contribuir para a melhor utilização da informação. De simples local de armazenamento, o banco de dados evoluiu para um verdadeiro repositório de informações das empresas. É o ambiente adequado para armazenar e recuperar dados ope-

A

24 < C O L E Ç Ã O I N F O

racionais, além de dar suporte à tomada de decisão por parte da média e alta gerência das corporações. Não se consegue atingir esse objetivo sem que se observem algumas regras. Por isso, trataremos aqui da estratégia para a criação de um banco de dados. PLANEJAMENTO E ESCOLHA Planejar e escolher o melhor banco de dados é uma tarefa extremamente importante no processo de criação. A escolha certa evita frustrações nas operações do dia-a-dia e na evolução que o produto deve ter para acompanhar o crescimento da empresa. Planejar é saber onde se quer chegar e estabelecer os meios adequados para estar lá. É necessário olhar para frente e analisar como você quer que as coisas estejam no futuro. É antever situações que podem definir o sucesso ou não do seu empreendimento. Portanto, antes de escolher o produto, pense onde você quer chegar. Enxergue o banco de dados como um meio para atingir sua meta.

> Há uma empresa ou comunidade responsável pelo produto? > Como está a saúde financeira dessa empresa? Como é a participação dos membros da comunidade? > Qual o compromisso tecnológico da empresa? Houve evolução nos ú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)? é o ambiente de administração do banco de dados? Há > Como possibilidade de administração remota? vai precisar de um administrador de banco de dados (DBA) > Você o tempo todo ou esse trabalho poderá ser feito remotamente? profissionais qualificados no mercado para administrar o > Há banco? Quanto custa a mão-de-obra? produtos (ERP, CRM, BI etc.) adequados para a sua empresa > Há que utilizam o banco de dados? o volume médio de transações que você vai realizar e como > Qual o produto se comporta com isso? C O L E Ç Ã O I N F O > 25

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

CRIAÇÃO

CRIAÇÃO

PLANEJE BEM O SEU BANCO SIGA O ROTEIRO PARA CRIAR UM BANCO DE DADOS QUE ACOMPANHE AS TRANSFORMAÇÕES DA EMPRESA

Com isso, dependendo do caso, se a sua empresa desenvolve sistemas, a decisão poderá ser totalmente diferente de uma construtora, por exemplo. Baseie-se em aspectos técnicos e mercadológicos para definir o produto com o qual você irá con-

viver durante um bom tempo (tenha isso em mente: não se troca de banco de dados senão com alguma dificuldade). Veja na tabela abaixo algumas questões que podem ajudar na escolha do produto ideal para as suas necessidades.

POR CELSO HENRIQUE PODEROSO DE OLIVEIRA

GUIA PARA A ESCOLHA DO GERENCIADOR criação de um banco de dados é um processo que envolve uma série de competências. Houve tempo em que esse processo estava reduzido a identificar um ou mais objetos, escolher uma forma de armazenamento, algumas características desses objetos e pronto. Geralmente, a própria estrutura do banco de dados era vinculada à linguagem de programação. Com o passar do tempo, a tecnologia evoluiu e foi separada das linguagens de programação. Ambientes completos de administração foram desenvolvidos e sua utilização contribuiu para disseminar as informações de maneira adequada e consistente. Atualmente, os produtos estão muito mais complexos e permitem ao profissional realizar um trabalho que pode contribuir para a melhor utilização da informação. De simples local de armazenamento, o banco de dados evoluiu para um verdadeiro repositório de informações das empresas. É o ambiente adequado para armazenar e recuperar dados ope-

A

24 < C O L E Ç Ã O I N F O

racionais, além de dar suporte à tomada de decisão por parte da média e alta gerência das corporações. Não se consegue atingir esse objetivo sem que se observem algumas regras. Por isso, trataremos aqui da estratégia para a criação de um banco de dados. PLANEJAMENTO E ESCOLHA Planejar e escolher o melhor banco de dados é uma tarefa extremamente importante no processo de criação. A escolha certa evita frustrações nas operações do dia-a-dia e na evolução que o produto deve ter para acompanhar o crescimento da empresa. Planejar é saber onde se quer chegar e estabelecer os meios adequados para estar lá. É necessário olhar para frente e analisar como você quer que as coisas estejam no futuro. É antever situações que podem definir o sucesso ou não do seu empreendimento. Portanto, antes de escolher o produto, pense onde você quer chegar. Enxergue o banco de dados como um meio para atingir sua meta.

> Há uma empresa ou comunidade responsável pelo produto? > Como está a saúde financeira dessa empresa? Como é a participação dos membros da comunidade? > Qual o compromisso tecnológico da empresa? Houve evolução nos ú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)? é o ambiente de administração do banco de dados? Há > Como possibilidade de administração remota? vai precisar de um administrador de banco de dados (DBA) > Você o tempo todo ou esse trabalho poderá ser feito remotamente? profissionais qualificados no mercado para administrar o > Há banco? Quanto custa a mão-de-obra? produtos (ERP, CRM, BI etc.) adequados para a sua empresa > Há que utilizam o banco de dados? o volume médio de transações que você vai realizar e como > Qual o produto se comporta com isso? C O L E Ç Ã O I N F O > 25

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

CRIAÇÃO

Agora você precisa saber quais são as informações necessárias para sua empresa. Isso poderá lhe ajudar a diminuir a lista. PROJETO LÓGICO Esta parte do processo deve acontecer em paralelo à escolha do sistema gerenciador de banco de dados. Optar por um produto sem ter noção das necessidades de informação da empresa é como dar um tiro no pé. A maneira clássica de fazer isso envolve todos os conceitos de engenharia de software para levantamento de requisitos. Quando se pensa em informação, qualquer documento, tela de sistema ou relatório é útil para identificar o que é necessário armazenar no banco de dados. Muitas vezes os usuários da informação esquecem alguns detalhes na fase de levantamento, por isso é importante recolher o máximo de documentos possíveis. Na maior parte dos casos, ter uma ferramenta de auxílio para o analista criar e modelar a estrutura do banco de dados é desejável. Essas ferramentas são conhecidas como CASE (Computer Aided Software Engineering). Entre elas estão ErWin, DbDesigner, MS Visio e Oracle Designer. Cada uma possui características que a torna mais ou menos adequada para cada situação, mas todas contribuem para o trabalho do analista. Depois de levantados os requisitos de informação, deve-se fazer um projeto lógico. Entende-se por projeto lógico a fase em que se realiza 26 < C O L E Ç Ã O I N F O

CRIAÇÃO

a modelagem lógica de dados, composta pela aplicação do modelo de entidade X relacionamento e pela normalização de dados. Em um primeiro momento não deve haver preocupação com a estrutura física que será criada, e sim com o atendimento dos requisitos dos usuários. PROJETO FÍSICO Uma vez estabelecido o projeto lógico, vamos ao projeto físico. Nele, transforma-se o modelo de entidade X relacionamento para o modelo físico, em geral, sem problemas. As estruturas relacionais (tabelas) são representações bastante simples e adequadas para caracterizar coisas do mundo real. Há uma troca natural de nomenclatura: entidades passam a se chamar tabelas, tuplas viram registros ou linhas, e atributos tornam-se colunas ou campos. A menos que haja alguma necessidade muito específica, basta acrescentar o tipo de dado e o tamanho de cada um dos campos ou colunas, estabelecer chaves primárias e estrangeiras (normalmente as ferramentas CASE fazem esse trabalho por nós), definir regras de integridade, criação de visões (views), índices e outros aspectos físicos do projeto. Hora de criar as estruturas físicas, com tabelas, relacionamentos, chaves e tudo a que temos direito. Normalmente, as ferramentas CASE também fazem a maior parte do trabalho. Algumas são capazes de se conectar ao banco e criar as estruturas.

Outras geram os scripts para serem executados no banco de dados. Só que, para chegar aqui, é necessário ficar atento a alguns detalhes.

do sistema que mantém aquela estrutura. Em outros, acrescenta-se a estrutura departamental que realiza esse trabalho. Essa última opção é a pior, visto que há mudanças freqüentes nas funções departamentais de uma empresa moderna. Particularmente, creio que ambas situações são desnecessárias, visto que atualmente uma classe é destacada para essa função. A classe normalmente também tem um nome claro e objetivo. Se há atributos importantes para serem mantidos, como cor, modelo, ano de fabricação, ano do modelo e montadora, deve-se colocar esses nomes nas colunas. Outro ponto importante, mas não determinante, é especificar a classificação do dado junto com o nome. Assim, se a cor do veículo fizer referência a uma tabela de cores e, portanto, eu for armazenar o código da cor, é comum utilizar-se CD ou COD antes do nome. O nome do campo ficaria CDCOR, por exemplo.

PADRONIZAÇÃO É sempre importante manter um padrão para o nome dos objetos, colunas e outros elementos. Mesmo que você trabalhe sozinho em um projeto, é bem provável que no futuro outras pessoas tenham de atualizar aquilo que você fez. A padronização começa na documentação do projeto e continua em todo o processo físico de criação do banco de dados. Toda equipe deve estar envolvida para definir o que e como será esse padrão. Imagina-se que, quanto mais claro for o nome da entidade, por exemplo, melhor será para a pessoa entender o que está armazenado ali. Parece óbvio, mas algum tempo atrás era comum utilizar nomes estranhos, muito mais vinculados aos programas que mantinham a entidade do que ao objetivo dela. Alguns analistas até se valiam desPADRONIZE AS COLUNAS se expediente para manterse no emprego — quanto CLASSIFICAÇÃO OPÇÃO 1 OPÇÃO 2 mais obscuro, mais depenCOD CD CÓDIGO dência do analista. TABELAS E COLUNAS Se eu identifiquei um objeto que armazene as informações de um veículo, devo dar-lhe o nome de VEICULO. Em certos casos, alguns analistas preferem indicar qual o módulo

NÚMERO

NUM

NR

DESCRIÇÃO

DES

DS

NOME

NOM

NM

DATA

DAT

DT

VALOR

VAL

VL

QUANTIDADE

QTD

QT

SIGLA

SIG

SG

DOMÍNIO

DOM

DM C O L E Ç Ã O I N F O > 27

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

CRIAÇÃO

Agora você precisa saber quais são as informações necessárias para sua empresa. Isso poderá lhe ajudar a diminuir a lista. PROJETO LÓGICO Esta parte do processo deve acontecer em paralelo à escolha do sistema gerenciador de banco de dados. Optar por um produto sem ter noção das necessidades de informação da empresa é como dar um tiro no pé. A maneira clássica de fazer isso envolve todos os conceitos de engenharia de software para levantamento de requisitos. Quando se pensa em informação, qualquer documento, tela de sistema ou relatório é útil para identificar o que é necessário armazenar no banco de dados. Muitas vezes os usuários da informação esquecem alguns detalhes na fase de levantamento, por isso é importante recolher o máximo de documentos possíveis. Na maior parte dos casos, ter uma ferramenta de auxílio para o analista criar e modelar a estrutura do banco de dados é desejável. Essas ferramentas são conhecidas como CASE (Computer Aided Software Engineering). Entre elas estão ErWin, DbDesigner, MS Visio e Oracle Designer. Cada uma possui características que a torna mais ou menos adequada para cada situação, mas todas contribuem para o trabalho do analista. Depois de levantados os requisitos de informação, deve-se fazer um projeto lógico. Entende-se por projeto lógico a fase em que se realiza 26 < C O L E Ç Ã O I N F O

CRIAÇÃO

a modelagem lógica de dados, composta pela aplicação do modelo de entidade X relacionamento e pela normalização de dados. Em um primeiro momento não deve haver preocupação com a estrutura física que será criada, e sim com o atendimento dos requisitos dos usuários. PROJETO FÍSICO Uma vez estabelecido o projeto lógico, vamos ao projeto físico. Nele, transforma-se o modelo de entidade X relacionamento para o modelo físico, em geral, sem problemas. As estruturas relacionais (tabelas) são representações bastante simples e adequadas para caracterizar coisas do mundo real. Há uma troca natural de nomenclatura: entidades passam a se chamar tabelas, tuplas viram registros ou linhas, e atributos tornam-se colunas ou campos. A menos que haja alguma necessidade muito específica, basta acrescentar o tipo de dado e o tamanho de cada um dos campos ou colunas, estabelecer chaves primárias e estrangeiras (normalmente as ferramentas CASE fazem esse trabalho por nós), definir regras de integridade, criação de visões (views), índices e outros aspectos físicos do projeto. Hora de criar as estruturas físicas, com tabelas, relacionamentos, chaves e tudo a que temos direito. Normalmente, as ferramentas CASE também fazem a maior parte do trabalho. Algumas são capazes de se conectar ao banco e criar as estruturas.

Outras geram os scripts para serem executados no banco de dados. Só que, para chegar aqui, é necessário ficar atento a alguns detalhes.

do sistema que mantém aquela estrutura. Em outros, acrescenta-se a estrutura departamental que realiza esse trabalho. Essa última opção é a pior, visto que há mudanças freqüentes nas funções departamentais de uma empresa moderna. Particularmente, creio que ambas situações são desnecessárias, visto que atualmente uma classe é destacada para essa função. A classe normalmente também tem um nome claro e objetivo. Se há atributos importantes para serem mantidos, como cor, modelo, ano de fabricação, ano do modelo e montadora, deve-se colocar esses nomes nas colunas. Outro ponto importante, mas não determinante, é especificar a classificação do dado junto com o nome. Assim, se a cor do veículo fizer referência a uma tabela de cores e, portanto, eu for armazenar o código da cor, é comum utilizar-se CD ou COD antes do nome. O nome do campo ficaria CDCOR, por exemplo.

PADRONIZAÇÃO É sempre importante manter um padrão para o nome dos objetos, colunas e outros elementos. Mesmo que você trabalhe sozinho em um projeto, é bem provável que no futuro outras pessoas tenham de atualizar aquilo que você fez. A padronização começa na documentação do projeto e continua em todo o processo físico de criação do banco de dados. Toda equipe deve estar envolvida para definir o que e como será esse padrão. Imagina-se que, quanto mais claro for o nome da entidade, por exemplo, melhor será para a pessoa entender o que está armazenado ali. Parece óbvio, mas algum tempo atrás era comum utilizar nomes estranhos, muito mais vinculados aos programas que mantinham a entidade do que ao objetivo dela. Alguns analistas até se valiam desPADRONIZE AS COLUNAS se expediente para manterse no emprego — quanto CLASSIFICAÇÃO OPÇÃO 1 OPÇÃO 2 mais obscuro, mais depenCOD CD CÓDIGO dência do analista. TABELAS E COLUNAS Se eu identifiquei um objeto que armazene as informações de um veículo, devo dar-lhe o nome de VEICULO. Em certos casos, alguns analistas preferem indicar qual o módulo

NÚMERO

NUM

NR

DESCRIÇÃO

DES

DS

NOME

NOM

NM

DATA

DAT

DT

VALOR

VAL

VL

QUANTIDADE

QTD

QT

SIGLA

SIG

SG

DOMÍNIO

DOM

DM C O L E Ç Ã O I N F O > 27

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

CRIAÇÃO

CRIAÇÃO

Como não é possível utilizar espaços na definição do nome das colunas (ou mesmo objetos), utilizase o caractere sublinhado (_) para substituir o espaço. A tabela ficaria como no exemplo da figura abaixo.

PROCESSO DE CRIAÇÃO DE BANCO DE DADOS PROJETO LÓGICO DE DADOS

Análise e modelagem utilizando o Modelo de Entidade e Relacionamento e Normalização de Dados

PROJETO FÍSICO DE DADOS

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

CRIAÇÃO DO BANCO DE DADOS

Criação de scripts para execução do gerenciador de banco de dados

BANCO DE DADOS CRIADO

TIPOS DE DADOS A definição do tipo de dados também exige padronização. Parece óbvio que um dado que receberá apenas conteúdo numérico deva ser definido como NUMBER, DECIMAL, INTEGER, FLOAT ou qualquer outro tipo que seja otimizado para este fim. O mesmo acontece com alfanuméricos e datas, mas há algumas observações a considerar nessa escolha. O tipo de dado numérico, de um modo geral, possui mecanismos que fazem com que as buscas sejam mais rápidas do que as que ocorrem em colunas alfanuméricas. Ele também ocupa menos espaço físico para armazenamento. Por isso, chaves primárias (e con28 < C O L E Ç Ã O I N F O

seqüentemente estrangeiras) são definidas por campos numéricos. Colunas pesquisadas com freqüência, como CPF, também são definidas como numéricas. A maioria dos gerenciadores de banco de dados trabalha com dois grupos de tipos de dados alfanuméricos: CHAR e VARCHAR (ou VARCHAR2, no Oracle). O primeiro utiliza todo o espaço especificado, enquanto que o segundo é variável, usando, no máximo, o espaço predeterminado. Isso faz com que o segundo, por utilizar apenas o espaço efetivamente ocupado pelo conteúdo, otimize o armazenamento e não deixe buracos nos conteúdos. DBAs experientes levam em consideração o volume de alterações no conteúdo para essa definição. Isso porque, caso um conteúdo seja alterado com freqüência, a atualização poderá gerar uma fragmentação da informação — quando incluído, o conteúdo ocupou um espaço e, depois de uma alteração para maior, quando não há espaço na seqüência, será colocado em outro espaço físico do disco. Campos que armazenam datas devem ser definidos dessa forma para facilitar operações de busca e até mesmo operações matemáticas entre elas. O padrão SQL possui uma série de comandos específicos para calcular intervalo entre datas, extrair ano, dia, mês etc. Para conteúdos muito grandes, co-

mo arquivos XML, imagens, sons e textos extensos deve-se utilizar o LOB. Normalmente há uma separação para binários (BLOB), adequados para armazenamento de imagens e sons, e alfanuméricos (CLOB). No caso específico de XML, é possível que o gerenciador de banco de dados tenha algum mecanismo melhor de armazenamento. PROGRAMAÇÃO Sempre que possível, prefira criar os módulos que utilizam e manipulam dados dentro do banco de dados. Apesar de atualmente haver uma grande difusão da necessidade de independência de banco de dados por meio da utilização de uma camada intermediária que assuma essa responsabilidade, é inegável que o gerenciador do banco de dados é o ambiente mais adequado para manter e atualizar dados. Ao se programar em qualquer outra camada que não a de dados, o tráfego de informações pela re-

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

de é aumentado. Se você optar por colocar a camada de aplicação no mesmo servidor (ou servidores), poderá comprometer seu desempenho pelo excesso de uso. Assim, prefira programar o banco de dados para rotinas que envolvam acesso e manipulação de dados. Os programas devem seguir a padronização da empresa no que diz respeito aos módulos: definição de variáveis, letras maiúsculas e/ou minúsculas para comandos etc. INTERFACES DE ADMINISTRAÇÃO Tão importante quanto criar estruturas estáveis para suprir as necessidades de informação da empresa é a tarefa de manter o banco de dados com um nível aceitável de tempo de resposta. Para isso, é necessário ter uma atenção especial na administração. As interfaces de administração têm evoluído bastante para simplificar o processo. Mesmo os gerenciadores de código aberto possuem interfaces amigáveis que permitem criar e manter todas as estruturas do banco rapidamente. Algumas podem ser acessadas remotamente, o que facilita o processo de manutenção e acompanhamento que o DBA faz no banco de dados. A tendência é que os gerenciadores sejam cada vez mais automatizados, em especial no que diz respeito ao desempenho. Os ajusC O L E Ç Ã O I N F O > 29

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

CRIAÇÃO

CRIAÇÃO

Como não é possível utilizar espaços na definição do nome das colunas (ou mesmo objetos), utilizase o caractere sublinhado (_) para substituir o espaço. A tabela ficaria como no exemplo da figura abaixo.

PROCESSO DE CRIAÇÃO DE BANCO DE DADOS PROJETO LÓGICO DE DADOS

Análise e modelagem utilizando o Modelo de Entidade e Relacionamento e Normalização de Dados

PROJETO FÍSICO DE DADOS

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

CRIAÇÃO DO BANCO DE DADOS

Criação de scripts para execução do gerenciador de banco de dados

BANCO DE DADOS CRIADO

TIPOS DE DADOS A definição do tipo de dados também exige padronização. Parece óbvio que um dado que receberá apenas conteúdo numérico deva ser definido como NUMBER, DECIMAL, INTEGER, FLOAT ou qualquer outro tipo que seja otimizado para este fim. O mesmo acontece com alfanuméricos e datas, mas há algumas observações a considerar nessa escolha. O tipo de dado numérico, de um modo geral, possui mecanismos que fazem com que as buscas sejam mais rápidas do que as que ocorrem em colunas alfanuméricas. Ele também ocupa menos espaço físico para armazenamento. Por isso, chaves primárias (e con28 < C O L E Ç Ã O I N F O

seqüentemente estrangeiras) são definidas por campos numéricos. Colunas pesquisadas com freqüência, como CPF, também são definidas como numéricas. A maioria dos gerenciadores de banco de dados trabalha com dois grupos de tipos de dados alfanuméricos: CHAR e VARCHAR (ou VARCHAR2, no Oracle). O primeiro utiliza todo o espaço especificado, enquanto que o segundo é variável, usando, no máximo, o espaço predeterminado. Isso faz com que o segundo, por utilizar apenas o espaço efetivamente ocupado pelo conteúdo, otimize o armazenamento e não deixe buracos nos conteúdos. DBAs experientes levam em consideração o volume de alterações no conteúdo para essa definição. Isso porque, caso um conteúdo seja alterado com freqüência, a atualização poderá gerar uma fragmentação da informação — quando incluído, o conteúdo ocupou um espaço e, depois de uma alteração para maior, quando não há espaço na seqüência, será colocado em outro espaço físico do disco. Campos que armazenam datas devem ser definidos dessa forma para facilitar operações de busca e até mesmo operações matemáticas entre elas. O padrão SQL possui uma série de comandos específicos para calcular intervalo entre datas, extrair ano, dia, mês etc. Para conteúdos muito grandes, co-

mo arquivos XML, imagens, sons e textos extensos deve-se utilizar o LOB. Normalmente há uma separação para binários (BLOB), adequados para armazenamento de imagens e sons, e alfanuméricos (CLOB). No caso específico de XML, é possível que o gerenciador de banco de dados tenha algum mecanismo melhor de armazenamento. PROGRAMAÇÃO Sempre que possível, prefira criar os módulos que utilizam e manipulam dados dentro do banco de dados. Apesar de atualmente haver uma grande difusão da necessidade de independência de banco de dados por meio da utilização de uma camada intermediária que assuma essa responsabilidade, é inegável que o gerenciador do banco de dados é o ambiente mais adequado para manter e atualizar dados. Ao se programar em qualquer outra camada que não a de dados, o tráfego de informações pela re-

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

de é aumentado. Se você optar por colocar a camada de aplicação no mesmo servidor (ou servidores), poderá comprometer seu desempenho pelo excesso de uso. Assim, prefira programar o banco de dados para rotinas que envolvam acesso e manipulação de dados. Os programas devem seguir a padronização da empresa no que diz respeito aos módulos: definição de variáveis, letras maiúsculas e/ou minúsculas para comandos etc. INTERFACES DE ADMINISTRAÇÃO Tão importante quanto criar estruturas estáveis para suprir as necessidades de informação da empresa é a tarefa de manter o banco de dados com um nível aceitável de tempo de resposta. Para isso, é necessário ter uma atenção especial na administração. As interfaces de administração têm evoluído bastante para simplificar o processo. Mesmo os gerenciadores de código aberto possuem interfaces amigáveis que permitem criar e manter todas as estruturas do banco rapidamente. Algumas podem ser acessadas remotamente, o que facilita o processo de manutenção e acompanhamento que o DBA faz no banco de dados. A tendência é que os gerenciadores sejam cada vez mais automatizados, em especial no que diz respeito ao desempenho. Os ajusC O L E Ç Ã O I N F O > 29

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

CRIAÇÃO

tes (tuning) podem ser realizados sem a interferência direta do DBA. O administrador supervisiona e valida o que foi feito e, em caso de problemas, adota outras medidas.

■ CÓPIA COMPLETA DOS DADOS (ON LINE): as transações que são efetuadas são armazenadas em local específico para serem copiadas para um meio físico. Em caso de pane no banco de dados, é possível retornar a um ponto no tempo, até o limite das transações gravadas no disco. Isso faz com que a perda de dados seja consideravelmente menor. ■ SERVIDOR STANDBY: a cópia das transações é realizada em um servidor separado. Em caso de pane, o outro servidor assume a função do servidor que falhou.

SEGURANÇA Nunca é pouco lembrar que a criação de usuários e a rotina de backup seja planejada com coerência. Usuários com “superpoderes” não são desejáveis em bancos de dados. Deve haver poucos, de preferência um único DBA por banco. Deve ser objeto de estudo constante a verificação e a auditoria dos usuários e as transações realizaCONCLUSÃO das. Não basta confiar apenas no Com planejamento, padronização e sistema para esse controle. Os gecontrole é possível fazer com que renciadores possuem interfaces de os dados da empresa possam ser administração relativamente simacessados em segurança e rapidaples. Usuários genéricos podem mente. Unir diversas tabelas não é comprometer a segurança dos dacriar um banco. O processo comedos nessa situação. ça com a escolha do gerenciador A rotina de backup deve ser tesadequado às necessidades e termitada inclusive com restaurações pena com a execução de um plano roriódicas, para determinar a exatidão busto e completo para o que é pree o conhecimento do processo. Norciso hoje e será necessário amanhã. malmente, para backup, há algumas formas disponíveis nos principais gerenciadores. As principais são: ■ CÓPIA COMPLETA DOS DADOS (OFF LINE): interrompese a execução do banco de dados e copiam-se os arquivos de dados. Em caso de pane, pode-se restaurar todo o banco que retornará ao momenBI: ferramenta para necessidade atual e futura to em que foi feita a cópia. 30 < C O L E Ç Ã O I N F O

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

LINGUAGENS

O BANCO FALA SQLQUÊS CONHEÇA O IDIOMA DOS BANCOS DE DADOS E AS LINGUAGENS DE ACESSO A ELES POR ANDRÉ CARDOZO

s programadores podem escolher a linguagem que quiserem para construir aplicativos que acessem o banco de dados. Mas não têm como escapar da SQL (Structured Query Language). Se o TCP/IP é o idioma da internet, podemos dizer que a SQL tem a mesma função nos bancos de dados. A linguagem foi desenvolvida na década de 70 pela IBM com uma úni-

O

© ILUSTRAÇÃO PAVÃO

ca finalidade: manipular bancos de dados. A SQL — em muitos casos pronunciada como SEQUEL — é adotada por todos os sistemas gerenciadores mais utilizados no mercado, como Oracle, MySQL e Microsoft SQL Server. No nível mais avançado, um programador precisa se dedicar para dominar a SQL, mesmo porque diversos bancos de dados possuem extensões proprietárias, funções mais C O L E Ç Ã O I N F O > 31

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

LINGUAGENS

avançadas que só funcionam naquele sistema. Os comandos básicos são intuitivos e podem ser usados sem dificuldade por quem tem noção de programação. Veja alguns: CREATE: cria tabelas SELECT: seleciona dados INSERT: inclui dados em tabelas UPDATE: atualiza dados DELETE: apaga dados Além das expressões principais, outros comandos muito usados são o “where”, que inclui a condição, e o “order by”, que ordena o resultado da consulta SQL. Veja como elas funcionam no exemplo abaixo: “SELECT nome,endereco FROM clientes WHERE estado = ‘sp’ ORDER BY nome” Esse comando seleciona as colunas “nome” e “endereco” da tabela “clientes” em que o estado é igual a “sp” (condição imposta pela expressão “where”). Portanto, somente os clientes de São Paulo. Os resultados são ordenados por “nome”. A tabela poderia conter outras colunas, como “idade” e “sexo”, mas nesse exemplo usamos só “nome” e “endereco”. Para selecionar todas as colunas, basta trocar “nome,endereco” por *, como abaixo: “SELECT * FROM clientes WHERE estado = ‘sp’ ORDER BY nome” PL/SQL, A TURBINADA A linguagem PL/SQL é uma extensão da SQL especializada no banco de dados Oracle. Ela combina a facilidade de 32 < C O L E Ç Ã O I N F O

LINGUAGENS

manipulação de dados da SQL com as facilidades de programação de uma linguagem procedural. Permite criar objetos de esquema, como gatilhos, procedimentos armazenados e pacotes. A linguagem PL/SQL utiliza o conceito de bloco estruturado. Esses blocos são compostos por procedures e funções. Um bloco tem a estrutura básica composta por três partes: DECLARE: seção opcional, em que todos os objetos são declarados; BEGIN: em que os comandos PL/SQL são colocados; EXCEPTION: em que os erros são tratados.

>

LINGUAGENS DE ACESSO Opções não faltam para os desenvolvedores de programas de acesso a banco de dados. As mais populares são ASP, Perl, PHP e Java. Cada uma dessas linguagens tem suas vantagens e desvantagens, e a escolha depende de uma série de fatores, como compatibilidade, custo e portabilidade. Conheça essas opções. PHP, A POPULAR Uma solução bastante popular entre os webmasters de sites dinâmicos é o PHP (Personal Home Page), criado pelo programador Rasmus Leedorf. A linguagem funciona tanto em Unix quanto em Windows e possui suporte para diversos bancos de dados, incluindo MySQL, Sybase, SQL e Oracle.

A sintaxe possui alguns elementos derivados do Perl, mas é bem mais simples e exige apenas noções básicas de programação. Além disso, há outra qualidade muito importante, que beneficia uma parte sensível de todos nós: o bolso. O interpretador PHP (programa que processa as páginas feitas nesse formato) é gratuito, e basta baixar e instalar no servidor para começar a criar um website dinâmico. ASP, A OPÇÃO WINDOWS O ASP (Active Server Pages) não é exatamente uma linguagem de programação, mas o que a Microsoft define como “ambiente de execução de scripts”. Na maior parte das vezes, as instruções são escritas em VBScript, que é derivado do Visual Basic, também filhote da Microsoft. A penetração do Visual Basic no mercado contribui bastante para o crescimento do ASP. Como a quantidade de programadores VB é grande, fica mais fácil para as empresas contratarem profissionais que desenvolvam aplicações em VBScript. Aderir ao ASP significa quase sempre optar pelo mundo Windows, uma vez que as páginas ASP só rodam nativamente em servidores Windows com servidor web IIS (Internet Information Server), da Microsoft. É possível rodar páginas ASP em sistemas Unix por intermédio de soluções comerciais, como o ChiliASP, ou usan-

do o OpenASP, no servidor web Apache. Mas a implementação desse tipo de solução costuma ser problemática para os webmasters. JAVA, A ECLÉTICA A linguagem Java é a alternativa de programação criada pela Sun Microsystems. É uma linguagem robusta, com funções complexas. Possui como principal vantagem, a portabilidade — roda em qualquer plataforma, de palmtop a mainframe, de sistemas embarcados a programas sérios de internet banking, por exemplo. Profissionais especializados em Java estão entre os mais disputados do mercado. PERL, A VETERANA A linguagem Perl (Practical Extraction and Reporting Language) foi criada em 1987 pelo programador Larry Wall para resolver tarefas de administração em sistemas Unix. Wall divulgou a primeira versão de Perl nas listas de discussão da Usenet e logo programadores de todo o mundo começaram a dar sugestões para o aprimoramento da linguagem. Uma das vantagens de Perl é a portabilidade. Os scripts podem ser transferidos do Unix para o Windows e vice-versa com pouca ou nenhuma modificação. A linguagem é expandida pelo uso de módulos. C O L E Ç Ã O I N F O > 33

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

LINGUAGENS

avançadas que só funcionam naquele sistema. Os comandos básicos são intuitivos e podem ser usados sem dificuldade por quem tem noção de programação. Veja alguns: CREATE: cria tabelas SELECT: seleciona dados INSERT: inclui dados em tabelas UPDATE: atualiza dados DELETE: apaga dados Além das expressões principais, outros comandos muito usados são o “where”, que inclui a condição, e o “order by”, que ordena o resultado da consulta SQL. Veja como elas funcionam no exemplo abaixo: “SELECT nome,endereco FROM clientes WHERE estado = ‘sp’ ORDER BY nome” Esse comando seleciona as colunas “nome” e “endereco” da tabela “clientes” em que o estado é igual a “sp” (condição imposta pela expressão “where”). Portanto, somente os clientes de São Paulo. Os resultados são ordenados por “nome”. A tabela poderia conter outras colunas, como “idade” e “sexo”, mas nesse exemplo usamos só “nome” e “endereco”. Para selecionar todas as colunas, basta trocar “nome,endereco” por *, como abaixo: “SELECT * FROM clientes WHERE estado = ‘sp’ ORDER BY nome” PL/SQL, A TURBINADA A linguagem PL/SQL é uma extensão da SQL especializada no banco de dados Oracle. Ela combina a facilidade de 32 < C O L E Ç Ã O I N F O

LINGUAGENS

manipulação de dados da SQL com as facilidades de programação de uma linguagem procedural. Permite criar objetos de esquema, como gatilhos, procedimentos armazenados e pacotes. A linguagem PL/SQL utiliza o conceito de bloco estruturado. Esses blocos são compostos por procedures e funções. Um bloco tem a estrutura básica composta por três partes: DECLARE: seção opcional, em que todos os objetos são declarados; BEGIN: em que os comandos PL/SQL são colocados; EXCEPTION: em que os erros são tratados.

>

LINGUAGENS DE ACESSO Opções não faltam para os desenvolvedores de programas de acesso a banco de dados. As mais populares são ASP, Perl, PHP e Java. Cada uma dessas linguagens tem suas vantagens e desvantagens, e a escolha depende de uma série de fatores, como compatibilidade, custo e portabilidade. Conheça essas opções. PHP, A POPULAR Uma solução bastante popular entre os webmasters de sites dinâmicos é o PHP (Personal Home Page), criado pelo programador Rasmus Leedorf. A linguagem funciona tanto em Unix quanto em Windows e possui suporte para diversos bancos de dados, incluindo MySQL, Sybase, SQL e Oracle.

A sintaxe possui alguns elementos derivados do Perl, mas é bem mais simples e exige apenas noções básicas de programação. Além disso, há outra qualidade muito importante, que beneficia uma parte sensível de todos nós: o bolso. O interpretador PHP (programa que processa as páginas feitas nesse formato) é gratuito, e basta baixar e instalar no servidor para começar a criar um website dinâmico. ASP, A OPÇÃO WINDOWS O ASP (Active Server Pages) não é exatamente uma linguagem de programação, mas o que a Microsoft define como “ambiente de execução de scripts”. Na maior parte das vezes, as instruções são escritas em VBScript, que é derivado do Visual Basic, também filhote da Microsoft. A penetração do Visual Basic no mercado contribui bastante para o crescimento do ASP. Como a quantidade de programadores VB é grande, fica mais fácil para as empresas contratarem profissionais que desenvolvam aplicações em VBScript. Aderir ao ASP significa quase sempre optar pelo mundo Windows, uma vez que as páginas ASP só rodam nativamente em servidores Windows com servidor web IIS (Internet Information Server), da Microsoft. É possível rodar páginas ASP em sistemas Unix por intermédio de soluções comerciais, como o ChiliASP, ou usan-

do o OpenASP, no servidor web Apache. Mas a implementação desse tipo de solução costuma ser problemática para os webmasters. JAVA, A ECLÉTICA A linguagem Java é a alternativa de programação criada pela Sun Microsystems. É uma linguagem robusta, com funções complexas. Possui como principal vantagem, a portabilidade — roda em qualquer plataforma, de palmtop a mainframe, de sistemas embarcados a programas sérios de internet banking, por exemplo. Profissionais especializados em Java estão entre os mais disputados do mercado. PERL, A VETERANA A linguagem Perl (Practical Extraction and Reporting Language) foi criada em 1987 pelo programador Larry Wall para resolver tarefas de administração em sistemas Unix. Wall divulgou a primeira versão de Perl nas listas de discussão da Usenet e logo programadores de todo o mundo começaram a dar sugestões para o aprimoramento da linguagem. Uma das vantagens de Perl é a portabilidade. Os scripts podem ser transferidos do Unix para o Windows e vice-versa com pouca ou nenhuma modificação. A linguagem é expandida pelo uso de módulos. C O L E Ç Ã O I N F O > 33

034_SQL_SERVEREXPRESS

25/02/2006

23:01

Page 34

TESTE/SQL SERVER

UM SQL SERVER FÁCIL DE USAR A VERSÃO GRÁTIS DO BANCO DE DADOS DA MICROSOFT TEM ASSISTENTE E MUITOS RECURSOS POR NIVALDO FORESTI

servidor Pentium 4 de 2 GHz com 1 que não faz a concorrênGB de memória RAM. cia. Bastou os bancos de Seguindo o padrão dos produtos dedados de código aberto senvolvidos pela Microsoft, a instalacomeçarem a ganhar esção do Express é extremamente simpaço nas corporações, os fabricantes ples e fácil de fazer. Um tradicionais passaram a oferecer versões graFIQUE LIGADO assistente leva o usuário pela mão por todas tuitas com a maioria Pequenas empresas as etapas do processo. dos recursos das vere desenvolvedores são Com alguns cliques de sões pagas e algumas o alvo do SQL Server mouse, você instala restrições. A Microsoft 2005 Express uma instância do geinaugurou esse movirenciador de banco de mento, lançando no fidados. Mas nem tudo é perfeito. A suínal do ano passado o SQL Server 2005 te de administração e desenvolvimenExpress e seus três irmãos pagos: to SQL Server Express Management Workgroup, Standard e Enterprise. DeStudio — Community Technology Prepois, vieram a Oracle e a IBM. Como as versões comerciais irmãs, o SQL Server 2005 Express vem integrado ao Visual Studio .Net, o que se traduz em facilidade para o desenvolvimento de aplicações. O INFOLAB testou o programa num

O

>

Management Studio: suíte de administração e desenvolvimento

34 < C O L E Ç Ã O I N F O

034_SQL_SERVEREXPRESS

25/02/2006

22:28

Page 35

TESTE/SQL SERVER

view (CTP) não acompanha a instalação. É preciso fazer o download separadamente do CTP no endereço www.info.abril.com.br/download/ 4454.shtml. RECURSOS Não espere que a Microsoft tenha dado tudo de bandeja nessa versão disponível gratuitamente para você. Faltam vários recursos. Você não encontrará o DTS (Data Transformation System), o que dará muita dor de cabeça na hora de importar dados de outros formatos de arquivo para dentro do banco de dados. Também não terá a pesquisa em texto, os serviços de notificação e os recursos de business intelligence que tornam a versão Enterprise bastante atraente para as empresas maiorzinhas. Outras restrições importantes são o 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 empresa bater nesses limites. FUNCIONALIDADES Nem tudo é problema. O mecanismo de acesso a dados MSDE (Microsoft Desktop Engine), um SQL Server rudimentar para desktops, desapareceu com o advento do Express. E, com ele, sumiu a restrição de desempenho quando existiam mais de cinco conexões simultâneas ao banco de dados. Toda a funcionalidade programática está no Express, até mesmo o suporte a XML e a integração da lin-

guagem CLR (Common Language Runtime) da .Net com a Transact-SQL, a linguagem de comandos SQL da Microsoft. O novo conjunto de objetos e a habilidade de agir como cliente na replicação de dados e nos cenários de envio de mensagens não faltaram na versão gratuita. Em suma, dá para aproveitar bastante até serem necessárias mais funcionalidades.

SQL SERVER 2005 EXPRESS FABRICANTE

Microsoft

PRÓ

Fácil de usar e gerenciar

CONTRAS

Suporta apenas um processador, 1 GB de memória e bancos de até 4GB

INSTALAÇÃO

8,5 Rápida, com verificação de pré-requisitos e primeiros passos

GERENCIAMENTO

7,5 Possui administração similar à da versão Standard, mas faltam funcionalidades

FERRAMENTAS

6,5 Fica devendo ferramentas como o DTS para a importação de dados

DESENVOLVIMENTO

8,5 Traz todos os recursos das demais versões, inclusive suporte nativo a XML

SEGURANÇA

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

AVALIAÇÃO TÉCNICA (1) PREÇO

7,6 Gratuito

CUSTO/BENEFÍCIO ONDE ENCONTRAR

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 Server Express ganha 0,2 ponto na avaliação técnica devido ao bom desempenho do seu fabricante na Pesquisa INFO de Marcas 2005.

C O L E Ç Ã O I N F O > 35

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

TESTE/ORACLE EXPRESS

TESTE/ORACLE EXPRESS

ORACLE EM VERSÃO LIGHT A EDIÇÃO GRATUITA DO PODEROSO BANCO DE DADOS CHEGA COM RECURSOS DE SOBRA

Browser: controle sobre cada objeto

Utilitários: inclui importação de XML

Apesar de ser relativamente simples, a interface web funciona bem, trazendo recursos suficientes para a criação e a manutenção de bancos de dados. Ainda existe, claro, uma ferramenta para migrar um banco de dados do Oracle Express para o Oracle 10g pago. Uma grande vantagem da versão Express do Oracle em relação ao também gratuito MySQL está no suporte ao PL/SQL, a versão turbinada do SQL feita pela Oracle. Com ela, é possível acrescentar mais funcionalidade em stored procedures (ou rotinas armazenadas), o que pode diminuir a necessidade de manutenção futura dos programas que usem o banco de dados. Outra vantagem do Oracle Express é a robustez do banco de dados, que traz a base do respeitado Oracle 10g. Para quem vai desenvolver software, a versão Express tem o mesmo suporte a linguagens de programação do Oracle 10g, integrando-se com Java, C++, PHP, com os principais dialetos da tecnologia .Net (como C# e VB.NET), entre outros. O suporte do Oracle Express é feito pelos próprios usuários, que ajudam uns aos outros em um

grupo de discussão mediado por profissionais da Oracle. Ao baixar o Oracle Express, é possível cadastrar-se nesse grupo automaticamente.

POR ERIC COSTA

A licença do Oracle Express é baseguindo os rastros da tante aberta: é possível, sem pagar Microsoft, a Oracle pronada, distribuir e implantar o produziu uma versão magrama, além de usá-lo para desengra de seu poderoso volvimento de software. Nos testes banco de dados, a Oracle 10g Express da INFO, feitos com o sistema opeEdition, de olho nas pequenas emracional SUSE Linux 10.0, o Oracle presas. O software inclui os princiExpress Edition teve bom desempais recursos das versões comerciais penho, sendo instalado rapidamendo irmão robusto e é gratuito. Em te num micro com processador Pencontrapartida, limita o tamanho mátium 4 de 2,4 GHz, com 512 MB de ximo da base de dados a 4 GB, além memória RAM. A instalação é basdo hardware usado. O gerenciador tante simples. Toda a de bancos de dados FIQUE LIGADO administração do usa apenas um probanco de dados é feicessador (caso o comLimitações tornam ta pelo browser, o que putador tenha mais o Oracle 10g Express também facilita o de um) e, no máximo, indicado para as acesso remoto, para 1 GB de RAM, mesmo pequenas empresas e quem quer deixar o que o micro possua os desenvolvedores servidor afastado. mais memória.

S

>

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

36 < C O L E Ç Ã O I N F O

ORACLE 10G EXPRESS EDITION FABRICANTE

Oracle

PRÓS

Dispensa hardware parrudo, traz recursos de primeira

CONTRAS

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

COMPATIBILIDADE

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

INSTALAÇÃO

8,0 Instalação simples e direta tanto no Windows quanto no Linux

RECURSOS

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

FERRAMENTAS

8,0 Gerenciamento pelo browser, com ferramenta de construção de consultas 8,4

AVALIAÇÃO TÉCNICA

PREÇO (R$) (1)

Gratuito

CUSTO/BENEFÍCIO ONDE ENCONTRAR

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 ao bom desempenho do seu fabricante na Pesquisa INFO de Marcas 2005.

C O L E Ç Ã O I N F O > 37

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

TESTE/ORACLE EXPRESS

TESTE/ORACLE EXPRESS

ORACLE EM VERSÃO LIGHT A EDIÇÃO GRATUITA DO PODEROSO BANCO DE DADOS CHEGA COM RECURSOS DE SOBRA

Browser: controle sobre cada objeto

Utilitários: inclui importação de XML

Apesar de ser relativamente simples, a interface web funciona bem, trazendo recursos suficientes para a criação e a manutenção de bancos de dados. Ainda existe, claro, uma ferramenta para migrar um banco de dados do Oracle Express para o Oracle 10g pago. Uma grande vantagem da versão Express do Oracle em relação ao também gratuito MySQL está no suporte ao PL/SQL, a versão turbinada do SQL feita pela Oracle. Com ela, é possível acrescentar mais funcionalidade em stored procedures (ou rotinas armazenadas), o que pode diminuir a necessidade de manutenção futura dos programas que usem o banco de dados. Outra vantagem do Oracle Express é a robustez do banco de dados, que traz a base do respeitado Oracle 10g. Para quem vai desenvolver software, a versão Express tem o mesmo suporte a linguagens de programação do Oracle 10g, integrando-se com Java, C++, PHP, com os principais dialetos da tecnologia .Net (como C# e VB.NET), entre outros. O suporte do Oracle Express é feito pelos próprios usuários, que ajudam uns aos outros em um

grupo de discussão mediado por profissionais da Oracle. Ao baixar o Oracle Express, é possível cadastrar-se nesse grupo automaticamente.

POR ERIC COSTA

A licença do Oracle Express é baseguindo os rastros da tante aberta: é possível, sem pagar Microsoft, a Oracle pronada, distribuir e implantar o produziu uma versão magrama, além de usá-lo para desengra de seu poderoso volvimento de software. Nos testes banco de dados, a Oracle 10g Express da INFO, feitos com o sistema opeEdition, de olho nas pequenas emracional SUSE Linux 10.0, o Oracle presas. O software inclui os princiExpress Edition teve bom desempais recursos das versões comerciais penho, sendo instalado rapidamendo irmão robusto e é gratuito. Em te num micro com processador Pencontrapartida, limita o tamanho mátium 4 de 2,4 GHz, com 512 MB de ximo da base de dados a 4 GB, além memória RAM. A instalação é basdo hardware usado. O gerenciador tante simples. Toda a de bancos de dados FIQUE LIGADO administração do usa apenas um probanco de dados é feicessador (caso o comLimitações tornam ta pelo browser, o que putador tenha mais o Oracle 10g Express também facilita o de um) e, no máximo, indicado para as acesso remoto, para 1 GB de RAM, mesmo pequenas empresas e quem quer deixar o que o micro possua os desenvolvedores servidor afastado. mais memória.

S

>

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

36 < C O L E Ç Ã O I N F O

ORACLE 10G EXPRESS EDITION FABRICANTE

Oracle

PRÓS

Dispensa hardware parrudo, traz recursos de primeira

CONTRAS

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

COMPATIBILIDADE

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

INSTALAÇÃO

8,0 Instalação simples e direta tanto no Windows quanto no Linux

RECURSOS

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

FERRAMENTAS

8,0 Gerenciamento pelo browser, com ferramenta de construção de consultas 8,4

AVALIAÇÃO TÉCNICA

PREÇO (R$) (1)

Gratuito

CUSTO/BENEFÍCIO ONDE ENCONTRAR

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 ao bom desempenho do seu fabricante na Pesquisa INFO de Marcas 2005.

C O L E Ç Ã O I N F O > 37

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

TESTE/DB2 EXPRESS

TESTE/DB2 EXPRESS

DB2 GRÁTIS COM TUDO DENTRO A VERSÃO DEGUSTAÇÃO DO BANCO DE DADOS DA IBM VEM REPLETA DE BOAS FERRAMENTAS POR NIVALDO FORESTI

epois da Microsoft e da Oracle, foi a vez da IBM criar uma versão gratuita de seu robusto banco de dados DB2. Como as demais edições “expressas” dos concorrentes, o DB2 Express-C tem limitações — suporta até 4 GB de memória RAM —, mas possui características que permitem seu uso em aplicações comerciais e sensíveis. Tem a vantagem de suportar tanto a plataforma Windows quanto a Linux e roda em máquinas com até dois processadores, enquanto as edições expressas do SQL Server e do Oracle só aceitam

D

um. Acompanhe a seguir o teste do INFOLAB, realizado num PC Pentium 4 de 2,8 MHz, com 512 MB de RAM e Windows 2003 Server Standard. INSTALAÇÃO O processo de instalação do DB2 Express-C é rápido, mas fazer o download pela web pode ser torturante. O arquivo tem pouco mais de 450 MB e, mesmo numa conexão vitaminada, irá demorar mais de uma hora para baixar. Ler os pré-requisitos e as notas nos menus do instalador evitará problemas durante e após a instalação. Por exemplo, um dos prérequisitos é que na plataforma Windows se use o Windows XP Profissional. Durante a instalação, o próprio sistema coloca em ação as opções Java necessárias. Além disso, permite testar imediatamente Instalação: o assistente guia o usuário durante todo o processo

38 < C O L E Ç Ã O I N F O

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

seu funcionamento, criando ou carregando os bancos de dados de exemplo que o acompanham. Uma série de caixas de diálogo e janelas de confirmação indicam o que fazer a cada passo da instalação em bom português. A atualização para versões mais recentes fica a um clique de distância no próprio instalador. Basta acionar Atualizar Versão para o programa verificar qual é a versão em uso e executar o upgrade. Acessando o item Visualizar Introdução, o usuário encontra tutoriais e informações detalhadas sobre o produto e outros assuntos de interesse, como a migração de versões anteriores. Os outros primeiros passos disponíveis — criar banco de dados e acessar exemplos — abrem a Central de Controle. FIQUE

todas elas. É um utilitário bastante rico em funcionalidade para criar e modificar tabelas, executar consultas (queries) e análises complexas, monitorar o status dos bancos de dados, funções de importação e exportação de dados, dentre outras. Os usuários contam com uma interface bastante fácil de usar, similar nos sistemas operacionais Windows e Linux. Essa estratégia segue a da concorrente Oracle, que está usando os navegadores para manter interfaces semelhantes em todas as plataformas LIGADO que suporta. Na plataforma WinFácil de usar e cheio dows, a Central de NAS RÉDEAS de ferramentas, o DB2 Controle pode ser O Centro de Controle Express-C vai bem nas aberta a partir do meé o ponto de partida pequenas empresas nu Iniciar ou clicande todas as operado-se com o botão dições, controles e adreito no ícone do DB2 na bandeja de ministração das bases de dados criasistema. Uma janela com uma lista das no DB2 Express-C. Como pode similar à do Explorer, contendo banhaver mais de uma instância opeco de dados e seus objetos, é mosrando na mesma máquina, o Centrada ao abrir o programa. tro de Controle pode dar conta de

>

C O L E Ç Ã O I N F O > 39

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

TESTE/DB2 EXPRESS

TESTE/DB2 EXPRESS

DB2 GRÁTIS COM TUDO DENTRO A VERSÃO DEGUSTAÇÃO DO BANCO DE DADOS DA IBM VEM REPLETA DE BOAS FERRAMENTAS POR NIVALDO FORESTI

epois da Microsoft e da Oracle, foi a vez da IBM criar uma versão gratuita de seu robusto banco de dados DB2. Como as demais edições “expressas” dos concorrentes, o DB2 Express-C tem limitações — suporta até 4 GB de memória RAM —, mas possui características que permitem seu uso em aplicações comerciais e sensíveis. Tem a vantagem de suportar tanto a plataforma Windows quanto a Linux e roda em máquinas com até dois processadores, enquanto as edições expressas do SQL Server e do Oracle só aceitam

D

um. Acompanhe a seguir o teste do INFOLAB, realizado num PC Pentium 4 de 2,8 MHz, com 512 MB de RAM e Windows 2003 Server Standard. INSTALAÇÃO O processo de instalação do DB2 Express-C é rápido, mas fazer o download pela web pode ser torturante. O arquivo tem pouco mais de 450 MB e, mesmo numa conexão vitaminada, irá demorar mais de uma hora para baixar. Ler os pré-requisitos e as notas nos menus do instalador evitará problemas durante e após a instalação. Por exemplo, um dos prérequisitos é que na plataforma Windows se use o Windows XP Profissional. Durante a instalação, o próprio sistema coloca em ação as opções Java necessárias. Além disso, permite testar imediatamente Instalação: o assistente guia o usuário durante todo o processo

38 < C O L E Ç Ã O I N F O

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

seu funcionamento, criando ou carregando os bancos de dados de exemplo que o acompanham. Uma série de caixas de diálogo e janelas de confirmação indicam o que fazer a cada passo da instalação em bom português. A atualização para versões mais recentes fica a um clique de distância no próprio instalador. Basta acionar Atualizar Versão para o programa verificar qual é a versão em uso e executar o upgrade. Acessando o item Visualizar Introdução, o usuário encontra tutoriais e informações detalhadas sobre o produto e outros assuntos de interesse, como a migração de versões anteriores. Os outros primeiros passos disponíveis — criar banco de dados e acessar exemplos — abrem a Central de Controle. FIQUE

todas elas. É um utilitário bastante rico em funcionalidade para criar e modificar tabelas, executar consultas (queries) e análises complexas, monitorar o status dos bancos de dados, funções de importação e exportação de dados, dentre outras. Os usuários contam com uma interface bastante fácil de usar, similar nos sistemas operacionais Windows e Linux. Essa estratégia segue a da concorrente Oracle, que está usando os navegadores para manter interfaces semelhantes em todas as plataformas LIGADO que suporta. Na plataforma WinFácil de usar e cheio dows, a Central de NAS RÉDEAS de ferramentas, o DB2 Controle pode ser O Centro de Controle Express-C vai bem nas aberta a partir do meé o ponto de partida pequenas empresas nu Iniciar ou clicande todas as operado-se com o botão dições, controles e adreito no ícone do DB2 na bandeja de ministração das bases de dados criasistema. Uma janela com uma lista das no DB2 Express-C. Como pode similar à do Explorer, contendo banhaver mais de uma instância opeco de dados e seus objetos, é mosrando na mesma máquina, o Centrada ao abrir o programa. tro de Controle pode dar conta de

>

C O L E Ç Ã O I N F O > 39

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

TESTE/DB2 EXPRESS

TESTE/DB2 EXPRESS

maioria gráficas, paA quantidade de ra assegurar que as utilitários disponíveis aplicações não seno DB2 Express-C jam prejudicadas peimpressiona. Há prolo mau uso dos regramas para monicursos. São várias as toramento de meferramentas dispomória, de aplicativos, níveis: db2batch, que um Centro de Tareverifica o desempefas em que podem nho das queries em ser programadas tatempo real; Visual refas específicas paExplain, que analisa ra execução em lograficamente as conte e a configuração Visual Explain: ferramenta sultas; Design Advido sistema. Para faespecial para a análise gráfica das consultas ao banco de dados sor, que sugere a cocilitar a vida do adlocação de índices ministrador ou do em tabelas para diminuir o tempo programador, funções como criar ou de acesso baseado nas consultas exealterar banco de dados, backup e recutadas, e, finalmente, o Activity Mostore são controladas por assistentes. nitor, que gera relatórios do desempenho dos sistemas para análise. DESEMPENHO Conseguir um desempenho ótimo DESENVOLVIMENTO das aplicações com banco de dados O DB2 Express-C inclui os drivers e é considerada uma combinação de a interface necessários para o demagia negra e ciência. Na tentativa senvolvimento de aplicações nas de se aproximar do ótimo, o DB2 Exlinguagens C/C++, Java e .Net, além press-C oferece ferramentas em sua de PHP e Perl. Suporta linguagens no servidor para o desenvolvimento de stored procedures, triggers e funções. Elas podem ser escritas em C/C++, Cobol, Java (JDBC e Desenvolvimento: stored procedures em ambiente gráfico

40 < C O L E Ç Ã O I N F O

SQLJ), .Net (qualquer linguagem suportada pelo compilador CLR) e SQL PL (Procedure Language). A SQL PL é considerada nativa e guardada no banco de dados como objeto DB2, reconhecida como um padrão ANSI SQL. Uma ferramenta gráfica, o Centro de Desenvolvimento, permite o gerenciamento, desenvolvimento, teste e implantação de stored procedures. A integração e o desenvolvimento de aplicações Java são pontos fortes do produto. Os mais conhecidos drivers estão incluídos no pacote. O ambiente Websphere Studio, da IBM, pode ser usado no desenvolvimento de aplicações com o DB2 Express-C, da mesma forma que o Visual Studio 2003, da Microsoft. Um driver de acesso compatível com o ambiente de desenvolvimento 1.1 está disponível no produto. A documentação não é tão completa como deveria, mas o usuário consegue as informações, em inglês, pesquisando no site da IBM.

é o limite de 4GB para a memória RAM. Alguns recursos encontrados nas versões pagas, como ferramentas de datawarehouse e drivers para o banco de dados Informix, não acompanham o DB2 Express-C. Mas quando esses recursos forem necessários, o usuário poderá adotar uma versão paga do produto sem as dores e os custos de migração.

CONJUNTO No conjunto da obra, o DB2 ExpressC é um banco de dados que vale a pena experimentar, principalmente por conta do Centro de Controle, que é poderoso, fácil de usar e possui muitos utilitários e ferramentas. Além disso, não há limitação de número de usuários ou de tamanho para os bancos de dados nas aplicações desenvolvidas para a plataforma. A única restrição existente

DESENVOLVIMENTO

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

SEGURANÇA

7,5 Replicação de dados entre bancos, usando sistemas de mensagens

DB2 EXPRESS-C 8.2 FABRICANTE

IBM

PRÓS

Bons utilitários, suporte a máquinas com dois processadores e replicações complexas

CONTRAS

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

INSTALAÇÃO

8,4 Rápida, com verificação de pré-requisitos e primeiros passos

GERENCIAMENTO

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

FERRAMENTAS

8,5 Replicação, central de tarefas, centro de funcionamento com alertas, centro de dados inteligentes

AVALIAÇÃO TÉCNICA (1) PREÇO (R$)

8,5 Gratuito

CUSTO/BENEFÍCIO ONDE ENCONTRAR

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%).

C O L E Ç Ã O I N F O > 41

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

TESTE/DB2 EXPRESS

TESTE/DB2 EXPRESS

maioria gráficas, paA quantidade de ra assegurar que as utilitários disponíveis aplicações não seno DB2 Express-C jam prejudicadas peimpressiona. Há prolo mau uso dos regramas para monicursos. São várias as toramento de meferramentas dispomória, de aplicativos, níveis: db2batch, que um Centro de Tareverifica o desempefas em que podem nho das queries em ser programadas tatempo real; Visual refas específicas paExplain, que analisa ra execução em lograficamente as conte e a configuração Visual Explain: ferramenta sultas; Design Advido sistema. Para faespecial para a análise gráfica das consultas ao banco de dados sor, que sugere a cocilitar a vida do adlocação de índices ministrador ou do em tabelas para diminuir o tempo programador, funções como criar ou de acesso baseado nas consultas exealterar banco de dados, backup e recutadas, e, finalmente, o Activity Mostore são controladas por assistentes. nitor, que gera relatórios do desempenho dos sistemas para análise. DESEMPENHO Conseguir um desempenho ótimo DESENVOLVIMENTO das aplicações com banco de dados O DB2 Express-C inclui os drivers e é considerada uma combinação de a interface necessários para o demagia negra e ciência. Na tentativa senvolvimento de aplicações nas de se aproximar do ótimo, o DB2 Exlinguagens C/C++, Java e .Net, além press-C oferece ferramentas em sua de PHP e Perl. Suporta linguagens no servidor para o desenvolvimento de stored procedures, triggers e funções. Elas podem ser escritas em C/C++, Cobol, Java (JDBC e Desenvolvimento: stored procedures em ambiente gráfico

40 < C O L E Ç Ã O I N F O

SQLJ), .Net (qualquer linguagem suportada pelo compilador CLR) e SQL PL (Procedure Language). A SQL PL é considerada nativa e guardada no banco de dados como objeto DB2, reconhecida como um padrão ANSI SQL. Uma ferramenta gráfica, o Centro de Desenvolvimento, permite o gerenciamento, desenvolvimento, teste e implantação de stored procedures. A integração e o desenvolvimento de aplicações Java são pontos fortes do produto. Os mais conhecidos drivers estão incluídos no pacote. O ambiente Websphere Studio, da IBM, pode ser usado no desenvolvimento de aplicações com o DB2 Express-C, da mesma forma que o Visual Studio 2003, da Microsoft. Um driver de acesso compatível com o ambiente de desenvolvimento 1.1 está disponível no produto. A documentação não é tão completa como deveria, mas o usuário consegue as informações, em inglês, pesquisando no site da IBM.

é o limite de 4GB para a memória RAM. Alguns recursos encontrados nas versões pagas, como ferramentas de datawarehouse e drivers para o banco de dados Informix, não acompanham o DB2 Express-C. Mas quando esses recursos forem necessários, o usuário poderá adotar uma versão paga do produto sem as dores e os custos de migração.

CONJUNTO No conjunto da obra, o DB2 ExpressC é um banco de dados que vale a pena experimentar, principalmente por conta do Centro de Controle, que é poderoso, fácil de usar e possui muitos utilitários e ferramentas. Além disso, não há limitação de número de usuários ou de tamanho para os bancos de dados nas aplicações desenvolvidas para a plataforma. A única restrição existente

DESENVOLVIMENTO

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

SEGURANÇA

7,5 Replicação de dados entre bancos, usando sistemas de mensagens

DB2 EXPRESS-C 8.2 FABRICANTE

IBM

PRÓS

Bons utilitários, suporte a máquinas com dois processadores e replicações complexas

CONTRAS

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

INSTALAÇÃO

8,4 Rápida, com verificação de pré-requisitos e primeiros passos

GERENCIAMENTO

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

FERRAMENTAS

8,5 Replicação, central de tarefas, centro de funcionamento com alertas, centro de dados inteligentes

AVALIAÇÃO TÉCNICA (1) PREÇO (R$)

8,5 Gratuito

CUSTO/BENEFÍCIO ONDE ENCONTRAR

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%).

C O L E Ç Ã O I N F O > 41

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

TESTE/MYSQL

TESTE/MYSQL

O MYSQL GANHA MÚSCULOS PREFERIDO PELA TURMA DO LINUX, O BANCO DE DADOS INCORPORA NOVAS FUNÇÕES E CORTEJA O MERCADO CORPORATIVO POR CARLOS MACHADO, COM LUIZ CRUZ

banco de dados de código aberto MySQL teve um belo upgrade na versão 5.0, liberada no final de outubro de 2005. De alternativa rápida, eficaz e pouco sofisticada para sites simples, o produto passou à categoria dos robustos. Com suporte a novas funções, como transações e stored procedures, o banco de dados se propõe a tarefas mais ambiciosas. Essas mudanças sinalizam que o MySQL está cultivando músculos para encarar o mercado corporativo. Produzido pela empresa sueca MySQL AB, o MySQL tem uma forma de licenciamento duplo. O usuário pode adotá-lo como produto gratuito, segundo a licença GPL, mas também tem a opção de adquiri-lo comercialmente, com direito a suporte e outros benefícios. Parte fundamental do chamado padrão LAMP — sigla de um conjunto de produtos de código aberto formado por Linux, Apache, MySQL, PHP/Perl/Python —, o MySQL tem hoje uma enorme

O

42 < C O L E Ç Ã O I N F O

MySQL Administrator: interface gráfica de gerenciamento

rios. A principal dequase todos os sisteFIQUE LIGADO l a s é o s u p o r t e a mas operacionais transações. Agora, o mais importantes. Há Muito utilizado em gerenciador é capaz versões do MySQL sites simples, o MySQL de processar transapara Windows, Linux, 5.0 já dá conta de ções do tipo ACID, Unix, Solaris, Mac OS aplicações corportivas obrigatórias em apliX, FreeBSD, HP-UX, cações de missão críIBM AIX e outros. Há tica. Uma transação, para os não também versões para plataformas iniciados, é uma operação que só de hardware Intel e AMD, de 32 e faz sentido se todos os seus pas64 bits, além dos chips Sparc, Alsos forem executados. Um exempha, PowerPC etc. INFO analisou a plo clássico é a transferência de versão 5.0.15 do MySQL para Linux dinheiro de uma conta bancária num servidor Pentium 4 de 3 GHz, para outra. Há duas tarefas: debirodando a distribuição SUSE 10 de tar o valor numa conta e creditá64 bits. Também instalamos o banlo na outra. Se apenas uma das taco de dados num computador com refas é executada, o sistema se toro Windows XP. Nos dois casos, a na inconsistente. Nos bancos de instalação não ofereceu nenhuma dados profissionais, o processadificuldade especial. mento de transações garante a inAlgumas das funções que estegridade de operações desse titréiam no MySQL 5.0 eram há muipo. Se, por exemplo, o hardware to tempo reclamadas pelos usuá-

>

base instalada. A MySQL AB comemorou a marca de mais de 1 milhão de downloads nas três primeiras semanas de lançamento da versão 5.0. O número é sem dúvida indicativo do grau de interesse em torno do banco de dados. MULTIPLATAFORMA Desde o início, o MySQL se destacou pela velocidade, que permite seu uso em máquinas de recursos relativamente modestos. Isso o transformou no sistema preferido dos sites profissionais pequenos e médios. Também contribui para o sucesso sua disponibilidade em

Controles: uma só interface para controlar usuários, montar rotinas e verificar carga C O L E Ç Ã O I N F O > 43

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

TESTE/MYSQL

TESTE/MYSQL

O MYSQL GANHA MÚSCULOS PREFERIDO PELA TURMA DO LINUX, O BANCO DE DADOS INCORPORA NOVAS FUNÇÕES E CORTEJA O MERCADO CORPORATIVO POR CARLOS MACHADO, COM LUIZ CRUZ

banco de dados de código aberto MySQL teve um belo upgrade na versão 5.0, liberada no final de outubro de 2005. De alternativa rápida, eficaz e pouco sofisticada para sites simples, o produto passou à categoria dos robustos. Com suporte a novas funções, como transações e stored procedures, o banco de dados se propõe a tarefas mais ambiciosas. Essas mudanças sinalizam que o MySQL está cultivando músculos para encarar o mercado corporativo. Produzido pela empresa sueca MySQL AB, o MySQL tem uma forma de licenciamento duplo. O usuário pode adotá-lo como produto gratuito, segundo a licença GPL, mas também tem a opção de adquiri-lo comercialmente, com direito a suporte e outros benefícios. Parte fundamental do chamado padrão LAMP — sigla de um conjunto de produtos de código aberto formado por Linux, Apache, MySQL, PHP/Perl/Python —, o MySQL tem hoje uma enorme

O

42 < C O L E Ç Ã O I N F O

MySQL Administrator: interface gráfica de gerenciamento

rios. A principal dequase todos os sisteFIQUE LIGADO l a s é o s u p o r t e a mas operacionais transações. Agora, o mais importantes. Há Muito utilizado em gerenciador é capaz versões do MySQL sites simples, o MySQL de processar transapara Windows, Linux, 5.0 já dá conta de ções do tipo ACID, Unix, Solaris, Mac OS aplicações corportivas obrigatórias em apliX, FreeBSD, HP-UX, cações de missão críIBM AIX e outros. Há tica. Uma transação, para os não também versões para plataformas iniciados, é uma operação que só de hardware Intel e AMD, de 32 e faz sentido se todos os seus pas64 bits, além dos chips Sparc, Alsos forem executados. Um exempha, PowerPC etc. INFO analisou a plo clássico é a transferência de versão 5.0.15 do MySQL para Linux dinheiro de uma conta bancária num servidor Pentium 4 de 3 GHz, para outra. Há duas tarefas: debirodando a distribuição SUSE 10 de tar o valor numa conta e creditá64 bits. Também instalamos o banlo na outra. Se apenas uma das taco de dados num computador com refas é executada, o sistema se toro Windows XP. Nos dois casos, a na inconsistente. Nos bancos de instalação não ofereceu nenhuma dados profissionais, o processadificuldade especial. mento de transações garante a inAlgumas das funções que estegridade de operações desse titréiam no MySQL 5.0 eram há muipo. Se, por exemplo, o hardware to tempo reclamadas pelos usuá-

>

base instalada. A MySQL AB comemorou a marca de mais de 1 milhão de downloads nas três primeiras semanas de lançamento da versão 5.0. O número é sem dúvida indicativo do grau de interesse em torno do banco de dados. MULTIPLATAFORMA Desde o início, o MySQL se destacou pela velocidade, que permite seu uso em máquinas de recursos relativamente modestos. Isso o transformou no sistema preferido dos sites profissionais pequenos e médios. Também contribui para o sucesso sua disponibilidade em

Controles: uma só interface para controlar usuários, montar rotinas e verificar carga C O L E Ç Ã O I N F O > 43

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

TESTE/MYSQL

falha no meio de uma operação, ela é completamente anulada. A primeira regra do modelo ACID é exatamente esta: ou tudo ou nada. O MySQL 5.0 também suporta transações distribuídas, ou seja, transações complexas envolvendo múltiplos bancos de dados localizados em diferentes ambientes. STORED PROCEDURES Outra novidade do MySQL 5.0 são as stored procedures. Uma stored procedure — literalmente: rotina armazenada — é um programa, ou seqüência de comandos, guardado fisicamente no servidor. Uma série de consultas complexas roda mais rápido como uma stored procedure do que uma lista de comandos, executados um a um, a partir de um computador cliente. As procedures também podem ser disparadas dentro de uma transação. Os novos recursos do MySQL já existem há muito tempo nos grandes gerenciadores de bancos de dados. A MySQL AB sempre negou que compete com Oracle, IBM e Microsoft. Mas, ao incorporar os novos recursos, a empresa dá fortes indicações de que está de olho no mercado corporativo. Outro sinal evidente disso está no MySQL Migration Toolkit, conjunto de ferramentas oferecido para incentivar a migração dos bancos de dados concorrentes para o MySQL. Obviamente, o produto ainda não tem cacife, nem técnico nem co44 < C O L E Ç Ã O I N F O

mercial, para encarar os gigantes do setor. Mas, como se diz, está tentando comer pelas beiradas. Um recurso importante que o produto ainda está devendo aos usuários é o suporte a XML. O fabricante do MySQL também oferece o MySQL Administrator, uma ferramenta visual para gerenciar bancos de dados e usuários. O Administrator deve ser obtido num download à parte. Essa ferramenta permite criar e alterar bancos de dados, montar stored procedures e verificar informações de carga do sistema. Embora execute bem as funções a que se propõe, ainda não aproveita bem os recursos da interface gráfica.

MYSQL 5.0 FABRICANTE

MySQL AB

PRÓ

É multiplataforma: tem versões para Windows, Linux, Unix

CONTRA

Não tem suporte a XML

INSTALAÇÃO

8,6 Simples, não oferece nenhuma dificuldade especial

RECURSOS

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

FERRAMENTAS

7,5 O MySQL Administrator oferece poucos recursos gráficos

AVALIAÇÃO TÉCNICA (1)

8,3 Comparado com o JBoss, foi, em média, 3,6 vezes mais rápido no tempo de resposta

PREÇO LICENÇA

Gratuito GPL

CUSTO/BENEFÍCIO ONDE ENCONTRAR

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

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

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

TESTE/POSTGRESQL

MISSÃO CRÍTICA É PARA POSTGRE VERSÃO 8.1 CONTA COM DRIVERS E CAMADAS DE SOFTWARE QUE GARANTEM SUA CONECTIVIDADE POR HELIO SILVA

versão 8.1, mais elho conhecido das corecente, logo se munidades de software percebe que islivre, o PostgreSQL deso não é verdade. morou um pouco mais do A distribuição de que o MySQL para se popularizar, procódigos binários do Postvavelmente por ser focado em aplicagreSQL 8.1 prontos para insções críticas. Muitos dos recursos que talar está disponível apenas para Lio MySQL apresenta na versão 5.0, tais nux ou Windows. Para outras platacomo o suporte a gatilhos, stored proformas Unix, é preciso baixar o códicedures e transações, já fazem parte go-fonte e compilar o sistema. do PostgreSQL há tempos. O impulso No Linux, o PostgreSQL vem como veio com a versão para Windows e a pacote binário na maior parte das discolaboração de empresas como Sun, tribuições, mas para quem gosta de Fujitsu e Pervasive Software. Com exaventura e tem bastante tempo, poperiência no desenvolvimento e emde baixar o código-fonte e compilar. pacotamento de versões comerciais No ambiente Windows, o prograafinadas com as necessidades das corporações, elas estão colocando terno e gravata no produto. O PostgreSQL também foi vítima dos rótulos lento e pesado. Pode-se dizer que o logotipo do produto — um elefante azul — até reforce essa imagem. Mas, debruPostgreSQL: o pgAdmin faz a administração do banco çando-se sobre a

V

C O L E Ç Ã O I N F O > 47

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

TESTE/POSTGRESQL

TESTE/POSTGRESQL

próprio PostgreSQL, que equivale ao PL/SQL da Oracle. Essa diversidade facilita a vida de quem já é versado em uma dessas linguagens. Além do pacote básico, é sempre bom dar uma checada em sites que mantém projetos ligados ao PostgreSQL. Um deles é o site pgfoundry.org, onde podem ser encontrados utilitários e até mesmo sistemas completos. Uma ausência sentida é o suporte nativo ao XML. Em aplicações com trocas de dados entre sistemas heterogêneos, como em operações de transmissão eletrônica de pedidos e RECURSOS faturas entre empresas ou intercâmO PostgreSQL 8.1 chega bem abastebio de dados bancários, é de se escido de drivers e camadas de softperar que existam diware que garantem FIQUE LIGADO ferentes bancos atuansua conectividade com do do outro lado, e o ferramentas de criação Recursos poderosos mercado aponta para e extração de relatóindicam o PostgreSQL o XML como melhor rios além, é claro, de lipara as aplicações de forma de garantir esgá-lo com as linguamissão crítica sa conversa. Quem gens de programação aderir ao PostgreSQL populares como Java, terá de escrever suas interfaces XML. Visual Basic e Delphi. A plataforma .Net da Microsoft também não fica de BOA HERANÇA fora, contando com o data provider Um velho dilema da crescente coNpgSQL. É natural que o banco manmunidade de programadores que tenha conexões privilegiadas com seus trabalham com a abordagem da pares do software livre, como as linorientação a objeto (OOP) é que eles guagens Phyton, Perl, TCL e PHP. raciocinam e projetam seus sistemas Se para escrever programas de pensando em objetos e, no entanto, front-end existem tantas opções, o têm de lidar com bancos de dados mesmo pode se dizer das linguagens relacionais na hora de depositar seus disponíveis para desenvolver funções dados. Eles gostariam de ter bancos e processos que rodam dentro do de dados que entendessem um poubanco. As opções são: PL/Perl, co mais sua abordagem. O PostPL/TCL, PL/Java e o PL/pgSQL do ma pode ser instalado de duas formas: utilizando o ambiente Cygwin, que permite, com certas restrições, utilizar os programas escritos para Linux, ou diretamente no Windows XP. O Cygwin é mais indicado para quem tem experiência no uso do PostgreSQL em ambiente Linux. Já a versão pronta para o Windows é muito robusta, fácil e não decepciona. A instalação no Windows pode ser feita em português, mas, no final, o software de administração pgAdmin se apresentará em inglês.

>

48 < C O L E Ç Ã O I N F O

greSQL faz um pequeno esforço nesse sentido, implementando uma das propriedades da orientação a objeto que é a herança. Para compreender a aplicação da herança em um banco de dados, imagine o desenvolvimento de um sistema para uma loja de barcos. A primeira providência é criar a tabela Barcos com todas as características comuns a qualquer barco (código, preço, descrição etc.). Em seguida, cria-se uma tabela filha que trata especificamente de veleiros e que herda as características de Barcos, acrescentando-se os atributos específicos de um veleiro como a altura do mastro e o tipo de vela. Por fim, cria-se uma tabela Lanchas, que também é filha de Barcos, adicionando-se a ela atributos como potência do motor. Alterações em Barcos, como a criação do atributo Preço Promocional, por exemplo, automaticamente se refletem em Veleiros e Lanchas. SINCRONIZAÇÃO Usando-se um dos seus diversos sistemas de replicação, o PostgreSQL pode ser aplicado em empresas de pequeno e médio porte que têm necessidade de sincronização de dados entre matriz e filiais. Além da sincronização, o banco de dados tem evoluído em recursos para resistir a falhas e operar com múltiplos processadores, o que o torna uma boa opção para os projetos de missão crítica. Possui também a habilidade de lidar com enor-

mes bases com respostas em tempo aceitável, requisito básico para sistemas de datawarehouse, cujos bancos de dados podem chegar facilmente aos terabytes. Esse tipo de sistema está na ordem do dia das empresas graças à redução dos custos de processamento e armazenamento, além, é claro, da necessidade constante de buscar competitividade.

POSTGRESQL 8.1 FABRICANTE

PostgreSQL Global Development Group

PRÓS

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

CONTRAS

Falta de suporte nativo ao padrão XML

INSTALAÇÃO

7,0 Fácil e rápida com pacotes binários e instalador em português

GERENCIAMENTO

8,5 O pgAdmin III dá acesso a todos os recursos do banco, mas está só em inglês

FERRAMENTAS

8,5 Conta com ferramentas de geoprocessamento, administração, tunning e datawarehouse na web

DESENVOLVIMENTO

8,0 Pode ser feito em Java, Perl, PHP, TCL, C, C++ e qualquer linguagem com conectores de acesso como o .Net

SEGURANÇA

8,5 Dispõe de criptografia para proteger armazenamento, tráfego, atributos e autenticação

AVALIAÇÃO TÉCNICA (1) PREÇO LICENÇA

8,3 Gratuito BSD

CUSTO/BENEFÍCIO ONDE ENCONTRAR

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%).

C O L E Ç Ã O I N F O > 49

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

TESTE/POSTGRESQL

TESTE/POSTGRESQL

próprio PostgreSQL, que equivale ao PL/SQL da Oracle. Essa diversidade facilita a vida de quem já é versado em uma dessas linguagens. Além do pacote básico, é sempre bom dar uma checada em sites que mantém projetos ligados ao PostgreSQL. Um deles é o site pgfoundry.org, onde podem ser encontrados utilitários e até mesmo sistemas completos. Uma ausência sentida é o suporte nativo ao XML. Em aplicações com trocas de dados entre sistemas heterogêneos, como em operações de transmissão eletrônica de pedidos e RECURSOS faturas entre empresas ou intercâmO PostgreSQL 8.1 chega bem abastebio de dados bancários, é de se escido de drivers e camadas de softperar que existam diware que garantem FIQUE LIGADO ferentes bancos atuansua conectividade com do do outro lado, e o ferramentas de criação Recursos poderosos mercado aponta para e extração de relatóindicam o PostgreSQL o XML como melhor rios além, é claro, de lipara as aplicações de forma de garantir esgá-lo com as linguamissão crítica sa conversa. Quem gens de programação aderir ao PostgreSQL populares como Java, terá de escrever suas interfaces XML. Visual Basic e Delphi. A plataforma .Net da Microsoft também não fica de BOA HERANÇA fora, contando com o data provider Um velho dilema da crescente coNpgSQL. É natural que o banco manmunidade de programadores que tenha conexões privilegiadas com seus trabalham com a abordagem da pares do software livre, como as linorientação a objeto (OOP) é que eles guagens Phyton, Perl, TCL e PHP. raciocinam e projetam seus sistemas Se para escrever programas de pensando em objetos e, no entanto, front-end existem tantas opções, o têm de lidar com bancos de dados mesmo pode se dizer das linguagens relacionais na hora de depositar seus disponíveis para desenvolver funções dados. Eles gostariam de ter bancos e processos que rodam dentro do de dados que entendessem um poubanco. As opções são: PL/Perl, co mais sua abordagem. O PostPL/TCL, PL/Java e o PL/pgSQL do ma pode ser instalado de duas formas: utilizando o ambiente Cygwin, que permite, com certas restrições, utilizar os programas escritos para Linux, ou diretamente no Windows XP. O Cygwin é mais indicado para quem tem experiência no uso do PostgreSQL em ambiente Linux. Já a versão pronta para o Windows é muito robusta, fácil e não decepciona. A instalação no Windows pode ser feita em português, mas, no final, o software de administração pgAdmin se apresentará em inglês.

>

48 < C O L E Ç Ã O I N F O

greSQL faz um pequeno esforço nesse sentido, implementando uma das propriedades da orientação a objeto que é a herança. Para compreender a aplicação da herança em um banco de dados, imagine o desenvolvimento de um sistema para uma loja de barcos. A primeira providência é criar a tabela Barcos com todas as características comuns a qualquer barco (código, preço, descrição etc.). Em seguida, cria-se uma tabela filha que trata especificamente de veleiros e que herda as características de Barcos, acrescentando-se os atributos específicos de um veleiro como a altura do mastro e o tipo de vela. Por fim, cria-se uma tabela Lanchas, que também é filha de Barcos, adicionando-se a ela atributos como potência do motor. Alterações em Barcos, como a criação do atributo Preço Promocional, por exemplo, automaticamente se refletem em Veleiros e Lanchas. SINCRONIZAÇÃO Usando-se um dos seus diversos sistemas de replicação, o PostgreSQL pode ser aplicado em empresas de pequeno e médio porte que têm necessidade de sincronização de dados entre matriz e filiais. Além da sincronização, o banco de dados tem evoluído em recursos para resistir a falhas e operar com múltiplos processadores, o que o torna uma boa opção para os projetos de missão crítica. Possui também a habilidade de lidar com enor-

mes bases com respostas em tempo aceitável, requisito básico para sistemas de datawarehouse, cujos bancos de dados podem chegar facilmente aos terabytes. Esse tipo de sistema está na ordem do dia das empresas graças à redução dos custos de processamento e armazenamento, além, é claro, da necessidade constante de buscar competitividade.

POSTGRESQL 8.1 FABRICANTE

PostgreSQL Global Development Group

PRÓS

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

CONTRAS

Falta de suporte nativo ao padrão XML

INSTALAÇÃO

7,0 Fácil e rápida com pacotes binários e instalador em português

GERENCIAMENTO

8,5 O pgAdmin III dá acesso a todos os recursos do banco, mas está só em inglês

FERRAMENTAS

8,5 Conta com ferramentas de geoprocessamento, administração, tunning e datawarehouse na web

DESENVOLVIMENTO

8,0 Pode ser feito em Java, Perl, PHP, TCL, C, C++ e qualquer linguagem com conectores de acesso como o .Net

SEGURANÇA

8,5 Dispõe de criptografia para proteger armazenamento, tráfego, atributos e autenticação

AVALIAÇÃO TÉCNICA (1) PREÇO LICENÇA

8,3 Gratuito BSD

CUSTO/BENEFÍCIO ONDE ENCONTRAR

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%).

C O L E Ç Ã O I N F O > 49

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

TESTE/FIREBIRD

FIREBIRD POUPA A MÁQUINA A VERSÃO 1.5.3 TEM RECURSOS PODEROSOS E DISPENSA EQUIPES DE MANUTENÇÃO POR HELIO SILVA

banco de dados Firebird está cada vez melhor, acompanhando os avanços dos concorrentes de código aberto MySQL e PostgreSQL. Nascido de uma iniciativa da Borland de abrir o código do seu banco Interbase 6, o Firebird chegou à versão 1.5.3 bem mudado, graças ao trabalho do IBPhoenix. Esse grupo de desenvolvedores já estabilizou a tradução do código da linguagem C para a C++, o que deve permitir ao pro-

O

duto alçar vôos mais altos entre a série de versões 1.5.x e a 2.0. No teste do INFOLAB, utilizamos o Firebird 1.5.3 Classic Server, a versão estável mais recente, rodando num PC com processador Pentium HT de 1,3 GHz e 512 MB de memória RAM. INSTALAÇÃO A instalação é fácil, mas não atualiza as outras versões previamente instaladas. Ao contrário, pede a remoção de antigas edições de Inter-

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

50 < C O L E Ç Ã O I N F O

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

TESTE/FIREBIRD

IBExpert: traz recursos arrojados, como análise de performance

base ou Firebird. Ao final do processo descobre-se que foram criados alguns textos dos manuais em arquivos texto e PDF e apenas um programa baseado no velho prompt de comando. Isso porque o pacote básico não traz uma interface gráfica que facilite a administração do banco. Existe um projeto de interface gráfica de código aberto chamado FlameRobin (www.flamerobin.org), que no futuro deve fazer parte do pacote, mas seu desenvolvimento ainda está em estágio inicial.

br/download/4047.shtml), da H-K software, e a EMS SQL Manager (www.info.abril.com.br/download/4453.shtml), da EMS Database Management Solutions. O gerenciador EMS SQL Manager empresta ao Firebird uma interface elegante e funcional, com aparência bem próxima do Windows XP, usando o mesmo tipo de ícones. Na versão gratuita, ele já proINTERFACES vê todos os recursos necessários à De qualquer forma, o usuário não fiadministração. Já o brasileiro DBMaca desprovido de interface de gerennager tem como vantagem o suciamento. Pode escolher uma entre porte em português. as diversas disponíveis no site do IBSe a intenção for adquirir uma Phoenix (www.ibphoenix.com). ferramenta para ir além das ativiA maior parte delas é shareware dades normais de administração, com versões livres sem algumas então vale a pena dar uma boa olhafuncionalidades. da no IBExpert em sua versão coNo teste do INFOLAB, utilizamos mercial que, além da interface mais três interfaces de gecompleta para admiFIQUE LIGADO nistração, conta com renciamento: a DBManager (www.info. recursos arrojados Feito para aplicações abril.com.br/downcomo análise de perde médio porte, o Fireload/3682.shtml), da formance e até pesbird oferece baixo cusDBTools, a IBExpert quisas OLAP. Relemto de manutenção (www.info.abril.com. brando, por meio do

>

C O L E Ç Ã O I N F O > 51

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

TESTE/FIREBIRD

TESTE/FIREBIRD

OLAP podem ser criadas visões multidimensionais do banco já agregadas, os famosos cubos. Esse tipo de visão facilita o desmembramento e a comparação de uma informação mensurável, como o faturamento, por exemplo. Com um cubo de faturamento fica fácil estabelecer as vendas por tipo de produto, por tipo de consumidor e por região de forma fácil e rápida.

DRIVERS Outra providência necessária após a instalação é cuidar da interoperabilidade com linguagens, geradores de relatório e outros bancos de dados. O site do IBPhoenix ajuda, indicando drivers ODBC e camadas de conectividade com Java e .NET. Nem todos são gratuitos e, mesmo os livres, requerem análise do tipo de licença de uso.

FIREBIRD 1.5.3 CLASSIC SERVER

RECURSOS O esforço de instalação e implantação vale a pena. A exemplo do Interbase, o Firebird dá conta de aplicações de médio porte. Seu diferencial é rodar em plataformas Windows e em muitos sabores de Unix, além de contar com recursos importantes, como suporte a transações, gatilhos e stored procedures desde sua primeira versão, enquanto o MySQL só trouxe esses recursos na 5.0, a mais recente. O sistema de transações do Firebird é robusto e admite os aninhamentos (nested transactions), que permitem a aplicação de novas regras quando uma transação encontra um erro em um determinado ponto de seu processamento, dando alternativas à conclusão da transação sem que se torne necessário desfazer toda a operação. As transações aninhadas permitem a aplicação de regras complexas de negócio dentro do banco, eliminando a programação na interface. A transferência de lógica de ne-

FABRICANTE

FirebirdSQL Foundation

PRÓS

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

CONTRA

Depende de aplicativos de terceiros para a administração

INSTALAÇÃO

6,5 Bem traduzida, mas com longas explicações que precisam ser lidas

GERENCIAMENTO

6,5 Não tem interface gráfica de administração, exigindo ferramentas auxiliares

FERRAMENTAS

8,5 Ferramentas CASE, de administração e até OLAP podem ser encontradas na web

DESENVOLVIMENTO

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

SEGURANÇA

6,5 Não tem criptografia

AVALIAÇÃO TÉCNICA (1) PREÇO LICENÇA

7,4 Gratuito IPL

CUSTO/BENEFÍCIO ONDE ENCONTRAR

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%).

52 < C O L E Ç Ã O I N F O

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

gócio para o banco de dados flexibiliza as opções de escolha de linguagens e ambientes de programação para interfacear com o banco, uma vez que simplifica a quantidade de regras que devem estar presentes no código. Esse aspecto é importante num mundo em que o banco tem de atender um servidor web, uma aplicação .Net e outras linguagens, mantendo sempre a coerência dos dados que lhe são inseridos ou requisitados. Outro ponto forte do Firebird é sua manutenção facilitada, praticamente dispensando a presença de um DBA dedicado a atividades de ajustes de desempenho do banco e controle de crescimento da base. A atividade de manutenção se resume ao backup e, eventualmente, uma recuperação de dados. Bancos

mais sofisticados como PostgreSQL, MS SQL Server, Oracle e DB2 entre outros demandam ajustes especializados durante seu ciclo de implantação, crescimento e produção. O baixo custo de manutenção torna o Firebird uma boa opção para empresas que não podem contar com uma equipe especializada para dar suporte a suas aplicações. A portabilidade do banco de dados entre múltiplas plataformas o torna também indicado para aplicações que operam com atualizações de bases off line e que tenham necessidade de integração centralizada. Quem pretende adotar o Firebird no Brasil, pode contar com o apoio de uma comunidade forte e colaborativa, que pode ser contatada pelo portal Firebase (www. firebase.com.br). C O L E Ç Ã O I N F O > 53

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

TESTE/FIREBIRD

TESTE/FIREBIRD

OLAP podem ser criadas visões multidimensionais do banco já agregadas, os famosos cubos. Esse tipo de visão facilita o desmembramento e a comparação de uma informação mensurável, como o faturamento, por exemplo. Com um cubo de faturamento fica fácil estabelecer as vendas por tipo de produto, por tipo de consumidor e por região de forma fácil e rápida.

DRIVERS Outra providência necessária após a instalação é cuidar da interoperabilidade com linguagens, geradores de relatório e outros bancos de dados. O site do IBPhoenix ajuda, indicando drivers ODBC e camadas de conectividade com Java e .NET. Nem todos são gratuitos e, mesmo os livres, requerem análise do tipo de licença de uso.

FIREBIRD 1.5.3 CLASSIC SERVER

RECURSOS O esforço de instalação e implantação vale a pena. A exemplo do Interbase, o Firebird dá conta de aplicações de médio porte. Seu diferencial é rodar em plataformas Windows e em muitos sabores de Unix, além de contar com recursos importantes, como suporte a transações, gatilhos e stored procedures desde sua primeira versão, enquanto o MySQL só trouxe esses recursos na 5.0, a mais recente. O sistema de transações do Firebird é robusto e admite os aninhamentos (nested transactions), que permitem a aplicação de novas regras quando uma transação encontra um erro em um determinado ponto de seu processamento, dando alternativas à conclusão da transação sem que se torne necessário desfazer toda a operação. As transações aninhadas permitem a aplicação de regras complexas de negócio dentro do banco, eliminando a programação na interface. A transferência de lógica de ne-

FABRICANTE

FirebirdSQL Foundation

PRÓS

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

CONTRA

Depende de aplicativos de terceiros para a administração

INSTALAÇÃO

6,5 Bem traduzida, mas com longas explicações que precisam ser lidas

GERENCIAMENTO

6,5 Não tem interface gráfica de administração, exigindo ferramentas auxiliares

FERRAMENTAS

8,5 Ferramentas CASE, de administração e até OLAP podem ser encontradas na web

DESENVOLVIMENTO

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

SEGURANÇA

6,5 Não tem criptografia

AVALIAÇÃO TÉCNICA (1) PREÇO LICENÇA

7,4 Gratuito IPL

CUSTO/BENEFÍCIO ONDE ENCONTRAR

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%).

52 < C O L E Ç Ã O I N F O

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

gócio para o banco de dados flexibiliza as opções de escolha de linguagens e ambientes de programação para interfacear com o banco, uma vez que simplifica a quantidade de regras que devem estar presentes no código. Esse aspecto é importante num mundo em que o banco tem de atender um servidor web, uma aplicação .Net e outras linguagens, mantendo sempre a coerência dos dados que lhe são inseridos ou requisitados. Outro ponto forte do Firebird é sua manutenção facilitada, praticamente dispensando a presença de um DBA dedicado a atividades de ajustes de desempenho do banco e controle de crescimento da base. A atividade de manutenção se resume ao backup e, eventualmente, uma recuperação de dados. Bancos

mais sofisticados como PostgreSQL, MS SQL Server, Oracle e DB2 entre outros demandam ajustes especializados durante seu ciclo de implantação, crescimento e produção. O baixo custo de manutenção torna o Firebird uma boa opção para empresas que não podem contar com uma equipe especializada para dar suporte a suas aplicações. A portabilidade do banco de dados entre múltiplas plataformas o torna também indicado para aplicações que operam com atualizações de bases off line e que tenham necessidade de integração centralizada. Quem pretende adotar o Firebird no Brasil, pode contar com o apoio de uma comunidade forte e colaborativa, que pode ser contatada pelo portal Firebase (www. firebase.com.br). C O L E Ç Ã O I N F O > 53

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

TESTE/ACCESS

TESTE/ACCESS

O ACCESS ENTRA EM 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 em menus já é tão familiar aos usuários do Windows que pode parecer temerário substituí-la por outra. Mas é isso que a Microsoft está fazendo com o banco de dados Access e os demais integrantes do Office, seu pacote de aplicativos para escritório. O Office 12, nova versão com lançamento previs-

A

to para o fim de 2006, leva adiante uma tendência que já havia se esboçado nos betas do Windows Vista. No primeiro beta do Office 12, analisado pelo INFOLAB, os menus despareceram e deram lugar a uma interface com o usuário radicalmente diferente. A promessa é que, com isso, o software ficará mais fácil de usar. A avaliação do INFOLAB é que a nova in-

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

54 < C O L E Ç Ã O I N F O

terface é realmente mais prática. Com ela, será possível realizar mais tarefas com menos cliques na tela. Mas os usuários vão estranhar bastante. FIM DOS MENUS O beta 1 do novo Office (o nome Office 12 não é definitivo) traz os aplicativos Excel, Word, PowerPoint, Access e Outlook, além de alguns programas auxiliares, como o InfoPath, usado para criar formulários em XML. O que mais chama a atenção é a nova organização visual. A idéia da Microsoft é que, com mais e mais recursos embutidos em seus diferentes programas, estava difícil para os usuários do Office encontrar o que procuravam numa árvore de menus e submenus cada vez mais complexa. OPÇÕES NOS PAINÉIS O Office 12 tenta resolver o problema do excesso de comandos nos menus eliminando o mal pela raiz. Há um único menu horizontal no alto da tela. Quando o usuário clica num dos itens, em vez de se abrir um submenu, aparece um painel com botões, ícones e outros elementos que acionam comandos ou acrescentam coisas ao documento. Está escrevendo um texto? O painel, com todos os comandos necessários para a função, aparece. Vai inserir uma imagem? Clique em Inserir na barra superior. Um painel que permite inserir não só a imagem, mas também planilhas, símbolos e qualquer outra coisa, é exibido.

Note que o usuário não mais precisa chamar uma caixa de diálogo depois de passar por vários menus. Basta alterar o que quer diretamente no painel, que fica na parte superior da tela e sempre muda para adequar-se à tarefa sendo realizada. Coisas como formatação de texto e dimensões de figuras e links para páginas da web, por exemplo, podem ser definidas nesse painel superior. Em muitas situações, o painel apropriado é exibido automaticamente. Por exemplo, ao clicar num gráfico, um painel de propriedades da imagem aparece. FORMATOS DA GALERIA O Access e os outros programas do Office passam a trabalhar extensamente com galerias. Trata-se de conjuntos predefinidos de formatações ou propriedades, como, por exemplo, o posicionamento de uma imagem em um texto. Os padrões mais comuns ou freqüentemente usados ficam disponíveis para uso imediato. Basta o usuário clicar sobre a representação gráfica do resultado para que o conjunto de parâmetros seja aplicado. Mas as tradicionais caixas de diálogo continuam disponíveis. OFFICE LIVE Como já acontecia nas versões anteriores, muitas das novidades do Office 12 são voltadas ao público empresarial. Uma delas é a integração com os serviços online que a Microsoft vem chamando de Office Live. Quando esses serviços estiverem disponíveis, os C O L E Ç Ã O I N F O > 55

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

TESTE/ACCESS

TESTE/ACCESS

O ACCESS ENTRA EM 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 em menus já é tão familiar aos usuários do Windows que pode parecer temerário substituí-la por outra. Mas é isso que a Microsoft está fazendo com o banco de dados Access e os demais integrantes do Office, seu pacote de aplicativos para escritório. O Office 12, nova versão com lançamento previs-

A

to para o fim de 2006, leva adiante uma tendência que já havia se esboçado nos betas do Windows Vista. No primeiro beta do Office 12, analisado pelo INFOLAB, os menus despareceram e deram lugar a uma interface com o usuário radicalmente diferente. A promessa é que, com isso, o software ficará mais fácil de usar. A avaliação do INFOLAB é que a nova in-

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

54 < C O L E Ç Ã O I N F O

terface é realmente mais prática. Com ela, será possível realizar mais tarefas com menos cliques na tela. Mas os usuários vão estranhar bastante. FIM DOS MENUS O beta 1 do novo Office (o nome Office 12 não é definitivo) traz os aplicativos Excel, Word, PowerPoint, Access e Outlook, além de alguns programas auxiliares, como o InfoPath, usado para criar formulários em XML. O que mais chama a atenção é a nova organização visual. A idéia da Microsoft é que, com mais e mais recursos embutidos em seus diferentes programas, estava difícil para os usuários do Office encontrar o que procuravam numa árvore de menus e submenus cada vez mais complexa. OPÇÕES NOS PAINÉIS O Office 12 tenta resolver o problema do excesso de comandos nos menus eliminando o mal pela raiz. Há um único menu horizontal no alto da tela. Quando o usuário clica num dos itens, em vez de se abrir um submenu, aparece um painel com botões, ícones e outros elementos que acionam comandos ou acrescentam coisas ao documento. Está escrevendo um texto? O painel, com todos os comandos necessários para a função, aparece. Vai inserir uma imagem? Clique em Inserir na barra superior. Um painel que permite inserir não só a imagem, mas também planilhas, símbolos e qualquer outra coisa, é exibido.

Note que o usuário não mais precisa chamar uma caixa de diálogo depois de passar por vários menus. Basta alterar o que quer diretamente no painel, que fica na parte superior da tela e sempre muda para adequar-se à tarefa sendo realizada. Coisas como formatação de texto e dimensões de figuras e links para páginas da web, por exemplo, podem ser definidas nesse painel superior. Em muitas situações, o painel apropriado é exibido automaticamente. Por exemplo, ao clicar num gráfico, um painel de propriedades da imagem aparece. FORMATOS DA GALERIA O Access e os outros programas do Office passam a trabalhar extensamente com galerias. Trata-se de conjuntos predefinidos de formatações ou propriedades, como, por exemplo, o posicionamento de uma imagem em um texto. Os padrões mais comuns ou freqüentemente usados ficam disponíveis para uso imediato. Basta o usuário clicar sobre a representação gráfica do resultado para que o conjunto de parâmetros seja aplicado. Mas as tradicionais caixas de diálogo continuam disponíveis. OFFICE LIVE Como já acontecia nas versões anteriores, muitas das novidades do Office 12 são voltadas ao público empresarial. Uma delas é a integração com os serviços online que a Microsoft vem chamando de Office Live. Quando esses serviços estiverem disponíveis, os C O L E Ç Ã O I N F O > 55

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

TESTE/ACCESS

aplicativos poderão interagir com eles via internet. Há um pacote básico de serviços, que pode atender a uma pequena empresa, que estará incluído na licença do Office. Ele oferece, por exemplo, 30 MB num servidor para a hospedagem de um site e cinco contas de e-mail com o domínio da empresa. Outros serviços mais elaborados, como gerenciadores online de projetos e relatórios de despesas, estarão disponíveis por assinatura. COLABORAÇÃO NA EQUIPE O Office 12 também traz melhorias nas ferramentas de colaboração. Os aplicativos permitem que usuários de um mesmo grupo realizem tarefas em conjunto. Além de poder gravar localmente seus documentos, os aplicativos permitem armazená-los num servidor para acesso coletivo. As atualizações feitas remotamente são sincronizadas com os arquivos locais, facilitando as revisões. Quando o trabalho é concluído, um dos autores pode “encerrar” o documento, que

passa a não aceitar mais alterações. O Office 12 deve ainda ganhar recursos que permitam a transferência de dados, conversas por áudio e por vídeo entre usuários. Além disso, poderão trocar mensagens instantâneas com colegas com comunicadores do MSN, da AOL e do Yahoo!. FORMATOS DE ARQUIVOS O Office 12 destaca a gravação de arquivos em XML com compressão no padrão Zip. O objetivo é facilitar a troca de dados com outros aplicativos, incluindo os que rodam em servidores corporativos. Os formatos de arquivos atualmente usados continuarão disponíveis. Essas mudanças são muito bemvindas. Até porque, o Access continua o mesmo há dois anos, desde quando foi lançado o Office 2003. Nessa versão, o banco de dados passou a permitir aos desenvolvedores a criação de soluções mais sofisticadas em menor tempo. A integração com a web foi privilegiada. O conceito de Office Developer Center permitiu o trabalho com tecnologias como XML e SQL Server. E o banco de dados passou a ter a capacidade de produzir backups. Access 2003: versão atual permite incluir vídeo, foto e som

56 < C O L E Ç Ã O I N F O

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

TESTE/INTERFACES

ADMINISTRAÇÃO É TUDO MERGULHE NAS INTERFACES E DESCUBRA RECURSOS BACANAS DO DB2 E DO SQL SERVER 2005 POR NIVALDO FORESTI

m sistema de banco de dados não é nada sem a sua parte de administração. Sem ela, teriamos de voltar a` época em que comandos com mais de duas linhas precisavam ser digitados para criar um campo em uma tabela. Além disso, controlar índices, utilização de campos e consumo de memória continuaria impensável em

U

bancos de dados para pequenas e médias empresas. Para a alegria geral dos usu´arios, as versões Express gratuitas dos grandes competidoras dessa arena, Microsoft, Oracle e IBM, contêm recursos tão poderosos quanto os dos seus irmãos pagos. Aqui vamos explorar o mundo administrativo de duas versões Express, a do DB2, da IBM, e a do SQL Server 2005, da Microsoft.

Centro de Controle: caixas de diálogo e assistentes conduzem o usu´ario

C O L E Ç Ã O I N F O > 57

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

TESTE/INTERFACES

Centro de tarefas: permite executar programas em lote

DB2 EXPRESS-C Com uma interface extremamente simples e fácil de usar, o Centro de Controle programa de administração do DB2 Express-C, encara de frente qualquer ferramenta paga. Clique em qualquer ícone ou menu, e uma série de caixas de diálogo e assistentes o levarão a concluir a tarefa desejada. Para criar suas próprias tabelas no banco de dados de exemplo, basta expandir a árvore de visualização existente na janela Todos os Bancos de Dados, clicar na opção Tabelas com o botão direito do mouse e escolher a opção Criar Tabelas. Um assistente o levará pelos sete passos do processo. É importante usá-lo, pois recursos como criação de índices, restrições aos dados e multidimensões são tratadas com bastante clareza e na ordem correta de uso. Para adicionar uma coluna na ta58 < C O L E Ç Ã O I N F O

TESTE/INTERFACES

bela, basta clicar no botão Incluir. Uma janela permite criar campos do tipo INT (inteiro) com três tipos diferentes, Char (Caracteres) com quatro tipos diferentes, binários incluindo BLOB, quatro tipos de campos gráficos, Data, Hora, TIMESTAMP, Decimal, Numérico, Real, ponto flutuante e Doublé. Caso você deseje incluir vários campos na tabela, clique em Aplicar em vez de OK, assim a janela permanece aberta para a inclusão dos demais campos. O usuário pode definir valores-padrão para os tipos CHAR, DATE, TIME e TIMESTAMP. Eles devem ser definidos dentro de aspas simples. Adicionalmente, é possível determinar uma fórmula para o preenchimento do campo. No entanto, em nenhum lugar da documentação foram encontradas funções, tais como Hoje ou Agora, ou como construir essas fórmulas para incluir nos campos. Os passos seguintes são os de escolher em que espaço a tabela será criada, a definição de que campos serão chaves, as dimensões e restrições. Com as restrições é possível controlar o lixo que irá popular a sua tabela. Você pode impedir que valores acima de 10 ou menores que 5 sejam preenchidos em uma coluna ou que somente determinados textos existam nela. Uma palavra de aviso é importan-

te aqui. Existe um debate intenso entre os especialistas para definir onde essas regras devem existir, se cadastradas nos campos das tabelas (restrições), nos programas de validação das aplicações ou em servidores específicos para regras de negócio. Para você ter paz de espírito, é aconselhável usar as restrições em campos, para que no futuro seus dados se mostrem inúteis. Outro detalhe importante é que a forma de cadastrar as restrições não é encontrada na documentação. Foi necessário pesquisar exemplos na internet para descobrir como fazer. JANELA DE ERROS Finalmente, há alguns recursos e funcionalidades interessantes nesse processo. Primeiro, você pode voltar a qualquer momento em qualquer passo e modificar opções. Segundo, ao final você pode ver o código SQL gerado e salvá-lo para reutilização, modificá-lo ou simplesmente rever o que será feito na criação da tabela. O melhor de tudo é que o DB2 mostra uma janela apontando erros ou com a informação de sucesso durante a criação da tabela. Um trabalho importante realizado nas interfaces de administração são as consultas (queries). O administrador ou programador precisa verificar informações, exportar dados para outros programas e

modificar ou criar novos dados. O Centro de Controle permite escrever e verificar os resultados de uma consulta em SQL diretamente na janela Visualizar comandos. No entanto, melhor do que isso é ter o programa guiando-o pelo árduo mundo dos comandos SQL. Basta clicar no ícone SQL e um assistente facilitará a criação e execução de sua consulta. Com mais um clique em Executar e Acessar Plano é possível determinar o custo desses comandos dentro do seu programa. Entenda-se por custo o tempo que cada pedaço demora para ser executado. Assim, com algumas modificações, um programa otimizado será construído ou problemas de desempenho detectados. Outro procedimento comum em interfaces de administração são os backups. Com o Centro de Controle dá para fazer backups manuais ou cronogramados de forma simples e prática. Mais um assistente Análise de consulta: um clique em Anexar Plano diz o custo do comando

C O L E Ç Ã O I N F O > 59

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

TESTE/INTERFACES

Centro de tarefas: permite executar programas em lote

DB2 EXPRESS-C Com uma interface extremamente simples e fácil de usar, o Centro de Controle programa de administração do DB2 Express-C, encara de frente qualquer ferramenta paga. Clique em qualquer ícone ou menu, e uma série de caixas de diálogo e assistentes o levarão a concluir a tarefa desejada. Para criar suas próprias tabelas no banco de dados de exemplo, basta expandir a árvore de visualização existente na janela Todos os Bancos de Dados, clicar na opção Tabelas com o botão direito do mouse e escolher a opção Criar Tabelas. Um assistente o levará pelos sete passos do processo. É importante usá-lo, pois recursos como criação de índices, restrições aos dados e multidimensões são tratadas com bastante clareza e na ordem correta de uso. Para adicionar uma coluna na ta58 < C O L E Ç Ã O I N F O

TESTE/INTERFACES

bela, basta clicar no botão Incluir. Uma janela permite criar campos do tipo INT (inteiro) com três tipos diferentes, Char (Caracteres) com quatro tipos diferentes, binários incluindo BLOB, quatro tipos de campos gráficos, Data, Hora, TIMESTAMP, Decimal, Numérico, Real, ponto flutuante e Doublé. Caso você deseje incluir vários campos na tabela, clique em Aplicar em vez de OK, assim a janela permanece aberta para a inclusão dos demais campos. O usuário pode definir valores-padrão para os tipos CHAR, DATE, TIME e TIMESTAMP. Eles devem ser definidos dentro de aspas simples. Adicionalmente, é possível determinar uma fórmula para o preenchimento do campo. No entanto, em nenhum lugar da documentação foram encontradas funções, tais como Hoje ou Agora, ou como construir essas fórmulas para incluir nos campos. Os passos seguintes são os de escolher em que espaço a tabela será criada, a definição de que campos serão chaves, as dimensões e restrições. Com as restrições é possível controlar o lixo que irá popular a sua tabela. Você pode impedir que valores acima de 10 ou menores que 5 sejam preenchidos em uma coluna ou que somente determinados textos existam nela. Uma palavra de aviso é importan-

te aqui. Existe um debate intenso entre os especialistas para definir onde essas regras devem existir, se cadastradas nos campos das tabelas (restrições), nos programas de validação das aplicações ou em servidores específicos para regras de negócio. Para você ter paz de espírito, é aconselhável usar as restrições em campos, para que no futuro seus dados se mostrem inúteis. Outro detalhe importante é que a forma de cadastrar as restrições não é encontrada na documentação. Foi necessário pesquisar exemplos na internet para descobrir como fazer. JANELA DE ERROS Finalmente, há alguns recursos e funcionalidades interessantes nesse processo. Primeiro, você pode voltar a qualquer momento em qualquer passo e modificar opções. Segundo, ao final você pode ver o código SQL gerado e salvá-lo para reutilização, modificá-lo ou simplesmente rever o que será feito na criação da tabela. O melhor de tudo é que o DB2 mostra uma janela apontando erros ou com a informação de sucesso durante a criação da tabela. Um trabalho importante realizado nas interfaces de administração são as consultas (queries). O administrador ou programador precisa verificar informações, exportar dados para outros programas e

modificar ou criar novos dados. O Centro de Controle permite escrever e verificar os resultados de uma consulta em SQL diretamente na janela Visualizar comandos. No entanto, melhor do que isso é ter o programa guiando-o pelo árduo mundo dos comandos SQL. Basta clicar no ícone SQL e um assistente facilitará a criação e execução de sua consulta. Com mais um clique em Executar e Acessar Plano é possível determinar o custo desses comandos dentro do seu programa. Entenda-se por custo o tempo que cada pedaço demora para ser executado. Assim, com algumas modificações, um programa otimizado será construído ou problemas de desempenho detectados. Outro procedimento comum em interfaces de administração são os backups. Com o Centro de Controle dá para fazer backups manuais ou cronogramados de forma simples e prática. Mais um assistente Análise de consulta: um clique em Anexar Plano diz o custo do comando

C O L E Ç Ã O I N F O > 59

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

TESTE/INTERFACES

SQL Express: todos os elementos disponiveis para criar tabelas

o leva pelo caminho certo. O DB2 Express-C conta ainda com um Controle de Replicação que será muito útil nas situações em que você quer manter seus sistemas em funcionamento, mesmo quando houver panes de energia ou outras catástrofes ou para ativar outros aplicativos quando determinados dados são modificados. Por fim, o Controle de Tarefas permite executar programas em lote tais como manutenções, exportações de arquivo, importações de dados de outras aplicações etc. SQL SERVER 2005 EXPRESS O SQL Server 2005 Express veio substituir o MSDE (Microsoft SQL Server Desktop Engine). Essa mudança está fazendo bem a todos que usavam a versão Express anterior. Foi eliminado o Governor do MSDE, que tornava mais lenta a aplicação quando o programa tinha mais de cinco co60 < C O L E Ç Ã O I N F O

TESTE/INTERFACES

nexões simultâneas, tornando o SQL Server Express muito mais usável. Mas existem limitações. A memória máxima suportada é de 1GB de RAM e limitado a somente um processador. O tamanho máximo do banco de dados é de 4GB. Além disso, nem todos os recursos existentes nas versões pagas estão disponíveis, o que inclui o serviço de relatórios (que estará disponível em uma versão avançada do Express), o serviço de notificação, o serviço de análise, a pesquisa full text, DTS e as facilidades de OLAP (Online Analytical Processing). O SQL Management Server Studio Express CTP é a suíte de administração e desenvolvimento do SQL Server Express Edition que substitui o Query Analyser e o Enterprise Manager da versão anterior, além de trazer várias facilidades. Embora complexa, a ferramenta é única e integrada para a realização de todas as tarefas necessárias. Você pode mudar a estrutura de uma base de dados, realizar consultas e outras tarefas importantes. Uma série de assistentes e facilidades fazem do SQL Management Server Studio Express uma grande ferramenta para os administradores e programadores. Particularmente, a capacidade de usar e reusar scripts para a criação ou manutenção das bases de dados. Além disso, as diver-

sas configurações de visualização permitem criar um ambiente único para cada usuário. UM CLIQUE Criar tabelas e colunas é trabalho para um clique no mouse. Todas as informações se encontram disponíveis, o banco de dados, a tabela, as colunas e as todas as propriedades envolvidas em cada um deles. Os campos suportam os mais variados tipos e alguns criados pelo próprio usuário para facilitar a padronização por todo o sistema. Por exemplo, você pode criar um campo chamado nome que tenha um tamanho específico e pode ser escolhido em qualquer tabela criada. O DB2 também tem essa função, mas ela está um pouco desorganizada e escondida na ferramenta de administração. As consultas podem ser feitas como no QBE, selecionado-se tabelas, campos e opções de filtro, ou escrevendo-se o comando SQL diretamente. Nesse caso, o DB2 é um pouco mais intuitivo para os iniciantes com o seu assistente. Em todas as janelas é possível se realizar filtros. Os filtros abrem janelas que permitem um acesso mais amigável para os que estão começando no trabalho de programação. Criar índices é fácil e intuitivo. Basta clicar no campo ou na pasta índice da tabela e criar índices, até mesmo em XML. Além dis-

so, desse menu é possível reorganiza-los ou recria-los. O mesmo acontece com funções e stored procedures, todas a um clique do seu mouse. Outro recurso interessante é o de monitoração. Uma janela específica permite verificar quem ou que processos estão consumindo os recursos do servidor onde está o SQL Server Express 2005. Muito útil para diagnosticar problemas de desempenho. No geral o programa de administração é bom de se utilizar. No entanto, alguns recursos estão faltando. Por exemplo, as tarefas de manutenção se resumem a um assistente para backup, pouco para suportar aplicações robustas. Sentimos a falta também de importadores e exportadores de dados, o que dificulta aos novatos migrar dados de outros aplicativos. Essa função existe, mas somente para importar dados previamente exportados de alguma tabela do SQL Express. Monitoraç˜ao: verifica os processos que consomem recursos do servidor

C O L E Ç Ã O I N F O > 61

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

TESTE/INTERFACES

SQL Express: todos os elementos disponiveis para criar tabelas

o leva pelo caminho certo. O DB2 Express-C conta ainda com um Controle de Replicação que será muito útil nas situações em que você quer manter seus sistemas em funcionamento, mesmo quando houver panes de energia ou outras catástrofes ou para ativar outros aplicativos quando determinados dados são modificados. Por fim, o Controle de Tarefas permite executar programas em lote tais como manutenções, exportações de arquivo, importações de dados de outras aplicações etc. SQL SERVER 2005 EXPRESS O SQL Server 2005 Express veio substituir o MSDE (Microsoft SQL Server Desktop Engine). Essa mudança está fazendo bem a todos que usavam a versão Express anterior. Foi eliminado o Governor do MSDE, que tornava mais lenta a aplicação quando o programa tinha mais de cinco co60 < C O L E Ç Ã O I N F O

TESTE/INTERFACES

nexões simultâneas, tornando o SQL Server Express muito mais usável. Mas existem limitações. A memória máxima suportada é de 1GB de RAM e limitado a somente um processador. O tamanho máximo do banco de dados é de 4GB. Além disso, nem todos os recursos existentes nas versões pagas estão disponíveis, o que inclui o serviço de relatórios (que estará disponível em uma versão avançada do Express), o serviço de notificação, o serviço de análise, a pesquisa full text, DTS e as facilidades de OLAP (Online Analytical Processing). O SQL Management Server Studio Express CTP é a suíte de administração e desenvolvimento do SQL Server Express Edition que substitui o Query Analyser e o Enterprise Manager da versão anterior, além de trazer várias facilidades. Embora complexa, a ferramenta é única e integrada para a realização de todas as tarefas necessárias. Você pode mudar a estrutura de uma base de dados, realizar consultas e outras tarefas importantes. Uma série de assistentes e facilidades fazem do SQL Management Server Studio Express uma grande ferramenta para os administradores e programadores. Particularmente, a capacidade de usar e reusar scripts para a criação ou manutenção das bases de dados. Além disso, as diver-

sas configurações de visualização permitem criar um ambiente único para cada usuário. UM CLIQUE Criar tabelas e colunas é trabalho para um clique no mouse. Todas as informações se encontram disponíveis, o banco de dados, a tabela, as colunas e as todas as propriedades envolvidas em cada um deles. Os campos suportam os mais variados tipos e alguns criados pelo próprio usuário para facilitar a padronização por todo o sistema. Por exemplo, você pode criar um campo chamado nome que tenha um tamanho específico e pode ser escolhido em qualquer tabela criada. O DB2 também tem essa função, mas ela está um pouco desorganizada e escondida na ferramenta de administração. As consultas podem ser feitas como no QBE, selecionado-se tabelas, campos e opções de filtro, ou escrevendo-se o comando SQL diretamente. Nesse caso, o DB2 é um pouco mais intuitivo para os iniciantes com o seu assistente. Em todas as janelas é possível se realizar filtros. Os filtros abrem janelas que permitem um acesso mais amigável para os que estão começando no trabalho de programação. Criar índices é fácil e intuitivo. Basta clicar no campo ou na pasta índice da tabela e criar índices, até mesmo em XML. Além dis-

so, desse menu é possível reorganiza-los ou recria-los. O mesmo acontece com funções e stored procedures, todas a um clique do seu mouse. Outro recurso interessante é o de monitoração. Uma janela específica permite verificar quem ou que processos estão consumindo os recursos do servidor onde está o SQL Server Express 2005. Muito útil para diagnosticar problemas de desempenho. No geral o programa de administração é bom de se utilizar. No entanto, alguns recursos estão faltando. Por exemplo, as tarefas de manutenção se resumem a um assistente para backup, pouco para suportar aplicações robustas. Sentimos a falta também de importadores e exportadores de dados, o que dificulta aos novatos migrar dados de outros aplicativos. Essa função existe, mas somente para importar dados previamente exportados de alguma tabela do SQL Express. Monitoraç˜ao: verifica os processos que consomem recursos do servidor

C O L E Ç Ã O I N F O > 61

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

TUTORIAL/TABELAS

TUTORIAL/TABELAS

TABELAS SEM MISTÉRIO

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

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

riar tabelas é uma tarefa muito simples e até intuitiva. Mas só até certo ponto. Montar uma tabela de um modo que os seus dados sejam realmente úteis e confiáveis exige um bom conhecimento de detalhes, até porque as tabelas têm características peculiares. Assim, pensando em quem acaba de desembarcar no mundo dos bancos de dados, vamos tratar aqui de cada uma de suas propriedades relevantes. Usaremos o banco de dados Access como exemplo. Embora algumas características sejam próprias das tabelas do Access, a maioria se aplica a outros programas do gênero.

C

TIPO DE DADOS O tipo de dados é a propriedade mais importante da tabela. Quando se cria um campo, o Access oferece uma lista de Tipo de Dados: cuidado na escolha da opção salva a tabela

62 < C O L E Ç Ã O I N F O

opções na coluna Tipo de Dados. Essas opções são comentadas a seguir. ■ TEXTO Armazena qualquer tipo de caractere. O limite de caracteres pode ser definido por quem está criando a tabela, mas só pode ir até 255. Para isso, basta informar o tamanho desejado na propriedade. ■ TAMANHO DO CAMPO Definir o limite aqui é complicado. Você pode, por exemplo, definir em 50 o tamanho de um campo que vai armazenar a razão social. Na prática, o usuário quer cadastrar uma razão social que tem 55 caracteres, não vai conseguir e dirá que seu programa tem um bug terrível e chamar

você para consertá-lo somente por causa desses cinco caracteres. Para evitar problemas desse tipo, defina sempre um número grande — no caso, pode ser 100. O Access não reserva espaço para partes não utilizadas de um campo texto. Ou seja, mesmo que você reserve 100, se o usuário só utilizar 30, o Access só consumirá o espaço correspondente a 30 caracteres. Não estranhe essa observação: há bancos de dados que usam toda a capacidade do campo, mesmo que esteja vazio. ■ MEMORANDO É idêntico ao tipo de dados Texto, mas sua capacidade é muito maior: até 65 535 caracteres. Não tem a propriedade Tamanho do Campo. O campo memorando é muito utilizado para armazenar observações ou quando se quer guardar muitas informações num campo só. ■ NÚMERO Destina-se a guardar números, geralmente utilizados em cálculos matemáticos ou como código de identificação. A proprieda-

de Tamanho do Campo para esse tipo de dado é também muito importante. Veja na tabela “O tamanho dos números” o quanto cada especificação numérica ocupa em cada caso. Com essa tabela, você pode definir o tamanho correto para o campo, levando em conta a informação que você quer guardar e o espaço em disco que ela usará. No entanto, mais importante que o tamanho ocupado é a capacidade do campo numérico. Se, por exemplo, você escolher para um campo o tipo Número Inteiro, precisa saber de antemão que esse campo não poderá armazenar números, positivos ou negativos, até cerca de 32700. Seu sistema dará erro se o usuário tentar registrar no campo o valor 40000. ■ DATA/HORA Usado para guardar data e hora. Note que não é data ou hora. O Access guarda esse tipo de dados em 8 bytes. Os limites de datas vão de 1 de janeiro do ano 100 até 31 de dezembro de 9999. Quando você insere apenas a data neste campo, o Access grava a hora zero (00:00:00) como complemento da data. Situação idêntica acontece se você informar apenas C O L E Ç Ã O I N F O > 63

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

TUTORIAL/TABELAS

TUTORIAL/TABELAS

TABELAS SEM MISTÉRIO

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

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

riar tabelas é uma tarefa muito simples e até intuitiva. Mas só até certo ponto. Montar uma tabela de um modo que os seus dados sejam realmente úteis e confiáveis exige um bom conhecimento de detalhes, até porque as tabelas têm características peculiares. Assim, pensando em quem acaba de desembarcar no mundo dos bancos de dados, vamos tratar aqui de cada uma de suas propriedades relevantes. Usaremos o banco de dados Access como exemplo. Embora algumas características sejam próprias das tabelas do Access, a maioria se aplica a outros programas do gênero.

C

TIPO DE DADOS O tipo de dados é a propriedade mais importante da tabela. Quando se cria um campo, o Access oferece uma lista de Tipo de Dados: cuidado na escolha da opção salva a tabela

62 < C O L E Ç Ã O I N F O

opções na coluna Tipo de Dados. Essas opções são comentadas a seguir. ■ TEXTO Armazena qualquer tipo de caractere. O limite de caracteres pode ser definido por quem está criando a tabela, mas só pode ir até 255. Para isso, basta informar o tamanho desejado na propriedade. ■ TAMANHO DO CAMPO Definir o limite aqui é complicado. Você pode, por exemplo, definir em 50 o tamanho de um campo que vai armazenar a razão social. Na prática, o usuário quer cadastrar uma razão social que tem 55 caracteres, não vai conseguir e dirá que seu programa tem um bug terrível e chamar

você para consertá-lo somente por causa desses cinco caracteres. Para evitar problemas desse tipo, defina sempre um número grande — no caso, pode ser 100. O Access não reserva espaço para partes não utilizadas de um campo texto. Ou seja, mesmo que você reserve 100, se o usuário só utilizar 30, o Access só consumirá o espaço correspondente a 30 caracteres. Não estranhe essa observação: há bancos de dados que usam toda a capacidade do campo, mesmo que esteja vazio. ■ MEMORANDO É idêntico ao tipo de dados Texto, mas sua capacidade é muito maior: até 65 535 caracteres. Não tem a propriedade Tamanho do Campo. O campo memorando é muito utilizado para armazenar observações ou quando se quer guardar muitas informações num campo só. ■ NÚMERO Destina-se a guardar números, geralmente utilizados em cálculos matemáticos ou como código de identificação. A proprieda-

de Tamanho do Campo para esse tipo de dado é também muito importante. Veja na tabela “O tamanho dos números” o quanto cada especificação numérica ocupa em cada caso. Com essa tabela, você pode definir o tamanho correto para o campo, levando em conta a informação que você quer guardar e o espaço em disco que ela usará. No entanto, mais importante que o tamanho ocupado é a capacidade do campo numérico. Se, por exemplo, você escolher para um campo o tipo Número Inteiro, precisa saber de antemão que esse campo não poderá armazenar números, positivos ou negativos, até cerca de 32700. Seu sistema dará erro se o usuário tentar registrar no campo o valor 40000. ■ DATA/HORA Usado para guardar data e hora. Note que não é data ou hora. O Access guarda esse tipo de dados em 8 bytes. Os limites de datas vão de 1 de janeiro do ano 100 até 31 de dezembro de 9999. Quando você insere apenas a data neste campo, o Access grava a hora zero (00:00:00) como complemento da data. Situação idêntica acontece se você informar apenas C O L E Ç Ã O I N F O > 63

062_GUIA_TAB_ACCESS 25/02/2006 23:19 Page 64

TUTORIAL/TABELAS

TUTORIAL/TABELAS

Assistente de Pesquisa: orientação sobre a origem do dado

as horas, só que a data é gravada como 30/12/1899, o dia inicial do calendário interno do Access e de outros programas do Office. Enfim, o Access grava as duas partes, data e hora, e você utiliza a que desejar no campo que está criando. ■ MOEDA É um tipo de dado numérico designado para armazenar valores monetários. O tamanho ocupado em disco é de 8 bytes, igual ao tipo de dados numérico com tamanho duplo. No entanto, só há quatro casas decimais e a parte inteira vai até 15 dígitos. ■ AUTONUMERAÇÃO É um tipo numérico de dados que é preenchido automaticamente pelo Access. É muito utilizado como código de identificação. Exemplo: código do cliente, código do pedido etc. Uma propriedade interessante desse tipo de dado é Novos Valores, que pode ser Incremento ou Aleatório. A primeira, Incremento, que é o padrão, gera números seqüenciais. A outra produz valores aleatórios, que 64 < C O L E Ç Ã O I N F O

podem ser negativos ou positivos. ■ SIM/NÃO Ocupa apenas 1 bit de espaço em disco. É utilizado para guardar informações que você tem certeza que só podem conter um entre dois valores. Exemplo: um campo que indica se a pessoa é casada só pode ter o valor sim ou não. ■ OBJETO OLE Serve para guardar objetos como documentos do Word, planilhas do Excel, gráficos, sons e outros. O objeto pode ser incorporado à tabela ou vinculado. ■ HYPERLINK Utilizado para guardar endereços web, e-mails etc. Basta clicar no endereço e abre-se a página ou arquivo a que ele se refere. Esse tipo de dado se divide em três partes: textodeexibição (o texto que aparece no campo ou controle); endereço (o caminho de um arquivo, ou URL); e subendereço (uma localização dentro do arquivo ou página). Cada uma dessas partes pode ter até 2 048 caracteres. ■ ASSISTENTE DE PESQUISA Esse é um tipo de dado interessante, que poucas pessoas conhecem. Na verdade não é bem um tipo de dado, e sim uma opção que inicia um assistente para criar uma caixa de combinação, cuja lista de dados po-

de ser baseada em outra tabela, ou numa lista de valores que você pode criar no próprio assistente. Após executar essa opção, você pode ver que as propriedades da guia Pesquisa do campo criado estão preenchidas conforme o que foi escolhido no assistente. ENTRADA DE DADOS Imagine que você tem um campo que armazena o número do documento de identidade de seus clientes e que os usuários ora digitam de um jeito ora de outro. Portanto, você não confiará nas informações digitadas. Para evitar isso, a propriedade Máscara de Entrada define exatamente como deve ser digitado o RG, o CPF, o CEP e outros dados que você queira padronizar. Para o caso do RG, você coloca a seguinte máscara de entrada: 99.000.000C\->a;0;_ A máscara de entrada se divide em três partes, separadas pelo ponto-e-vírgula: a primeira é a própria definição da entrada; a segunda, que pode ser 0 ou 1, indica se os caracteres literais, como o hífen do RG(-), devem ser gravados no campo ou não. A opção 0 grava esses

caracteres; a terceira parte é o caractere que deve ser mostrado quando um dígito não está preenchido. Você pode colocar qualquer um — o padrão é o sublinhado ( _ ). Para que serve cada caractere na máscara de entrada? A resposta você tem na tabela Máscaras de Entrada, que mostra cada caractere e sua função. Outro exemplo é a máscara de entrada do telefone: "(0XX"99") "#999\-9999;0;_ Preenchido o campo, a máscara acima produz um resultado como: (0XX11) _867-9926. Uma opção interessante da propriedade Máscara de Entrada é que ela pode ser definida como Senha. Basta você digitar senha nessa propriedade e o que o usuário digitar nesse campo será exibido como asterisco(*). O Access tem ainda um assistente para máscara de entrada. Clique no botão Construtor e o programa exibe exemplos de máscara que você pode escolher e definir automaticamente para o seu campo. Outra

Assistente de máscara: guia para a digitação correta

C O L E Ç Ã O I N F O > 65

062_GUIA_TAB_ACCESS 25/02/2006 23:19 Page 64

TUTORIAL/TABELAS

TUTORIAL/TABELAS

Assistente de Pesquisa: orientação sobre a origem do dado

as horas, só que a data é gravada como 30/12/1899, o dia inicial do calendário interno do Access e de outros programas do Office. Enfim, o Access grava as duas partes, data e hora, e você utiliza a que desejar no campo que está criando. ■ MOEDA É um tipo de dado numérico designado para armazenar valores monetários. O tamanho ocupado em disco é de 8 bytes, igual ao tipo de dados numérico com tamanho duplo. No entanto, só há quatro casas decimais e a parte inteira vai até 15 dígitos. ■ AUTONUMERAÇÃO É um tipo numérico de dados que é preenchido automaticamente pelo Access. É muito utilizado como código de identificação. Exemplo: código do cliente, código do pedido etc. Uma propriedade interessante desse tipo de dado é Novos Valores, que pode ser Incremento ou Aleatório. A primeira, Incremento, que é o padrão, gera números seqüenciais. A outra produz valores aleatórios, que 64 < C O L E Ç Ã O I N F O

podem ser negativos ou positivos. ■ SIM/NÃO Ocupa apenas 1 bit de espaço em disco. É utilizado para guardar informações que você tem certeza que só podem conter um entre dois valores. Exemplo: um campo que indica se a pessoa é casada só pode ter o valor sim ou não. ■ OBJETO OLE Serve para guardar objetos como documentos do Word, planilhas do Excel, gráficos, sons e outros. O objeto pode ser incorporado à tabela ou vinculado. ■ HYPERLINK Utilizado para guardar endereços web, e-mails etc. Basta clicar no endereço e abre-se a página ou arquivo a que ele se refere. Esse tipo de dado se divide em três partes: textodeexibição (o texto que aparece no campo ou controle); endereço (o caminho de um arquivo, ou URL); e subendereço (uma localização dentro do arquivo ou página). Cada uma dessas partes pode ter até 2 048 caracteres. ■ ASSISTENTE DE PESQUISA Esse é um tipo de dado interessante, que poucas pessoas conhecem. Na verdade não é bem um tipo de dado, e sim uma opção que inicia um assistente para criar uma caixa de combinação, cuja lista de dados po-

de ser baseada em outra tabela, ou numa lista de valores que você pode criar no próprio assistente. Após executar essa opção, você pode ver que as propriedades da guia Pesquisa do campo criado estão preenchidas conforme o que foi escolhido no assistente. ENTRADA DE DADOS Imagine que você tem um campo que armazena o número do documento de identidade de seus clientes e que os usuários ora digitam de um jeito ora de outro. Portanto, você não confiará nas informações digitadas. Para evitar isso, a propriedade Máscara de Entrada define exatamente como deve ser digitado o RG, o CPF, o CEP e outros dados que você queira padronizar. Para o caso do RG, você coloca a seguinte máscara de entrada: 99.000.000C\->a;0;_ A máscara de entrada se divide em três partes, separadas pelo ponto-e-vírgula: a primeira é a própria definição da entrada; a segunda, que pode ser 0 ou 1, indica se os caracteres literais, como o hífen do RG(-), devem ser gravados no campo ou não. A opção 0 grava esses

caracteres; a terceira parte é o caractere que deve ser mostrado quando um dígito não está preenchido. Você pode colocar qualquer um — o padrão é o sublinhado ( _ ). Para que serve cada caractere na máscara de entrada? A resposta você tem na tabela Máscaras de Entrada, que mostra cada caractere e sua função. Outro exemplo é a máscara de entrada do telefone: "(0XX"99") "#999\-9999;0;_ Preenchido o campo, a máscara acima produz um resultado como: (0XX11) _867-9926. Uma opção interessante da propriedade Máscara de Entrada é que ela pode ser definida como Senha. Basta você digitar senha nessa propriedade e o que o usuário digitar nesse campo será exibido como asterisco(*). O Access tem ainda um assistente para máscara de entrada. Clique no botão Construtor e o programa exibe exemplos de máscara que você pode escolher e definir automaticamente para o seu campo. Outra

Assistente de máscara: guia para a digitação correta

C O L E Ç Ã O I N F O > 65

062_GUIA_TAB_ACCESS 25/02/2006 23:22 Page 66

TUTORIAL/TABELAS

nota importante: os controles de formulário não herdam essa propriedade. Você pode estabelecer uma máscara de entrada para o campo, porém o controle vinculado ao campo, no formulário, pode ter outra máscara. Você então pergunta: então para que eu vou definir uma máscara de entrada para o campo? Calma, a máscara definida no campo vai automaticamente para o controle. Só que ela não é obrigatória. Se quiser, você pode definir outra. Mas o melhor de tudo é que, definida uma vez na tabela, ela pode permanecer igual em outras situações, o que ajuda na padronização do sistema. A EXIBIÇÃO DOS DADOS Diferentemente da propriedade Máscara de Entrada, que define como os dados devem ser digitados, a propriedade Formato controla a sua exibição. Ou seja, você até pode estabelecer uma máscara de entrada que informa a data completa (00/00/0099), mas você quer que, no formulário ou relatório, ela apareça apenas com o ano e o mês, e nessa ordem (yyyy/mm). Assim como no caso da máscara de entrada, os controles do forConstrutor de campo: exemplos prontos com propriedades definidas

66 < C O L E Ç Ã O I N F O

mulário não herdam essa propriedade, ou seja, você pode mudar o formato do controle vinculado ao campo, no formulário, conforme a sua necessidade. A propriedade Formato é a mais interessante. Ela possibilita obter muitos resultados: ■ TEXTO E MEMORANDO O formato para textos e memorandos envolve duas partes, separadas por ponto-e-vírgula. A primeira define o formato, se o dado for preenchido; e a segunda, se ele não for preenchido. Vamos esclarecer melhor com um exemplo. Imagine um campo de preenchimento não obrigatório, como hobbies da pessoa. Pode-se definir o seguinte formato para esse campo: >[Preto];“não informado”[Vermelho]. Se os hobbies forem informados, o texto inserido será exibido em maiúsculas e com a cor preta. Caso contrário, aparecerá a expressão “não informado” em vermelho. É isso mesmo, pode testar à vontade. Você pode pesquisar na Ajuda do Access e descobrir

062_GUIA_TAB_ACCESS 25/02/2006 23:23 Page 67

TUTORIAL/TABELAS

Índice duplo: chave primária da tabela criada com dois campos

outras preciosidades sobre como exibir o texto quando ele é digitado. ■ NÚMERO E MOEDA Segue o mesmo padrão do tipo Texto e Memorando, porém com quatro partes. A primeira trata os positivos; a segunda, os negativos; a terceira, o zero; e a última, o nulo. Um campo que informa saldos financeiros pode ter o seguinte formato: “R$”#,00[Azul];“R$”#,00[Vermelho];“Zero”;“não informado” Se o saldo é positivo, ele é exibido 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, aparece a expressão “não informado”. ■ SIM/NÃO Esse formato se divide em três partes. A primeira não afeta em nada os resultados, porém tem de existir. Portanto, o formato começa com ponto-e-vírgula (ou seja, o primeiro item fica em branco); a segunda é o formato para valores verdadeiros; e a terceira para valores falsos. Um exemplo clássico: o campo Situação informa se o funcionário está ativo ou não. Então, ele pode ter o seguinte formato: ;“Ativo”[Vermelho]; “Inativo” [Preto]. Se o funcionário está na ativa,

aparece “Ativo”, em vermelho; caso contrário, “Inativo”, em preto. ■ DATA/HORA Esse formato não segue o mesmo padrão dos anteriores: não é dividido em partes. O máximo que você pode fazer é definir a cor do texto. Mas a propriedade do formato de um campo do tipo Data/Hora é muito importante, pois ele é que define o que será exibido da informação digitada pelo usuário. Você pode fazer várias combinações. Por exemplo: para exibir apenas o mês, o ano, a hora e os minutos, defina o formato assim: mm/ yyyy hh:nn (veja bem: as duas últimas letras são enes, de navio, e não emes, de minuto, como se espera). Recomendo que você veja na Ajuda as letras e caracteres que você pode utilizar no formato de datas, pois tem algumas muito interessantes, como as que retornam o trimestre, a semana e outros. Quero aproveitar o assunto para mostrar como se deve definir o formato juntamente com a máscara de entrada para C O L E Ç Ã O I N F O > 67

062_GUIA_TAB_ACCESS 25/02/2006 23:53 Page 68

TUTORIAL/TABELAS

não deixar que seu campo caia no bug do ano 2000, que nada mais é do que entrar com os quatro dígitos do ano e exibi-los. Deve-se definir para os campos que irão armazenar datas a seguinte máscara de entrada: 00/00/0099. E o seu formato deve ser: dd/mm/yyyy CONSISTÊNCIA DOS DADOS A propriedade Regra de Validação é superimportante para obter dados mais seguros desde o momento de sua edição, não permitindo que o usuário digite qualquer coisa e acabe gerando erros no sistema. Imagine que o seu cadastro de funcionários tem o campo Sexo, que deve ser preenchido com “M” ou “F”. Mas um usuário engraçadinho resolve colocar “H” na ficha de um funcionário. Numa parte qualquer do sistema, você filtra homens num bloco e mulheres em outro. Por causa do usuário que resolveu fazer graça, o funcionário em questão não aparecerá em

TUTORIAL/TABELAS

nenhum dos filtros. Um sistema profissional não pode deixar que isso aconteça. Para isso existe a regra de validação do campo. É muito simples: para o caso mencionado, basta digitar a seguinte regra na propriedade Regra de Validação do campo Sexo: “F” Ou “M”. Pronto, o campo só aceitará F ou M como conteúdo. Uma nota quanto a essa regra imposta ao campo Sexo é que o campo passa a ser de preenchimento obrigatório. Ou seja, ele não aceitará nulo (vazio). Outro exemplo: num campo onde se deve cadastrar o salário do funcionário numa empresa cujo salário mínimo é 500 reais. A regra seria, então, “maior que 500”. No entanto, pode-se não saber o salário do funcionário no momento em que ele é cadastrado: o valor será informado depois. Para dar incluir essa hipótese, a regra deve ser a seguinte: >500 Ou Nulo Ao contrário das outras propriedades até aqui apresentadas, os controles vinculados ao campo com regra de validação herdam, no formulário, a regra definida na tabela. Portanto, mesmo que você mude a regra para o controle vinculado ao campo, o valor que o usuário digitar deve satisfazer Regra de Validação: feita para garantir dados consistentes

68 < C O L E Ç Ã O I N F O

sempre à regra definida na tabela. Se porventura você definiu outra regra para o controle, o valor digitado terá que atender às duas regras, tanto a do campo na tabela quanto a do controle. A consistência ainda pode ser feita no nível do registro. Os exemplos do campo Sexo e do Salário cuidam da consistência no nível do campo. A consistência de registro funciona da seguinte forma: imagine uma tabela onde são cadastrados os produtos e a porcentagem de cada setor da empresa na participação das vendas. A tabela contém os campos Produto, SetorA, SetorB, SetorC. Como se trata de porcentagem, a soma das parcelas de todos os setores deve ser igual a 100. Para implementar essa regra, com a tabela aberta em modo Design, clique no botão Propriedades, na barra de ferramentas, a fim de exibir a folha

de propriedades da tabela. Na propriedade Regra de Validação, digite a seguinte regra: [SetorA]+[SetorB]+[SetorC]=100 Uma propriedade complementar à Regra de Validação é a Texto de Validação. Nessa propriedade você insere um texto personalizado para ser mostrado, em vez da mensagem-padrão do Access, quando o usuário digita um valor incorreto. INTEGRIDADE DOS DADOS Exemplo clássico: o número de CPF de uma pessoa é único — ou seja, nenhuma outra pessoa pode ter um CPF igual ao de outra. Portanto, não pode haver em seu cadastro de clientes dois ou mais RGs iguais. Para evitar isso, basta selecionar, na propriedade Indexado do campo CPF, a opção Sim (Duplicação não autorizada). Você pode querer uma integridade com dois campos. O número de um aluno na

MÁSCARAS DE ENTRADA Caracteres utilizados na propriedade Máscaras de Entrada CARACTERE

DESCRIÇÃO

L0

Dígito (de 0 a 9, entrada obrigatória)

9

Dígito ou espaço (entrada não obrigatória)

#

Dígito ou espaço (entrada não obrigatória; os espaços são exibidos como vazios quando no modo Edição, mas os vazios são removidos quando os dados são salvos; sinais de adição e subtração são permitidos)

L

Letra (de A a Z, entrada obrigatória)

?

Letra (de A a Z, entrada opcional)

a

Letra ou dígito (entrada opcional)

A

Letra ou dígito (entrada obrigatória)

&

Qualquer caractere ou um espaço (entrada obrigatória)

CARACTERE

C ,,:;-/

DESCRIÇÃO

Qualquer caractere ou um espaço (entrada opcional) Marcador decimal e separadores de milhares, de data e de hora

<

Converte todos os caracteres para letras minúsculas

>

Converte todos os caracteres para letras maiúsculas

!

Define que a máscara de entrada seja exibida da direita para a esquerda, e não da esquerda para a direita

\

Define que o caractere seguinte seja exibido como caractere literal (por exemplo, \A é exibido simplesmente como A)

C O L E Ç Ã O I N F O > 69

062_GUIA_TAB_ACCESS 25/02/2006 23:53 Page 68

TUTORIAL/TABELAS

não deixar que seu campo caia no bug do ano 2000, que nada mais é do que entrar com os quatro dígitos do ano e exibi-los. Deve-se definir para os campos que irão armazenar datas a seguinte máscara de entrada: 00/00/0099. E o seu formato deve ser: dd/mm/yyyy CONSISTÊNCIA DOS DADOS A propriedade Regra de Validação é superimportante para obter dados mais seguros desde o momento de sua edição, não permitindo que o usuário digite qualquer coisa e acabe gerando erros no sistema. Imagine que o seu cadastro de funcionários tem o campo Sexo, que deve ser preenchido com “M” ou “F”. Mas um usuário engraçadinho resolve colocar “H” na ficha de um funcionário. Numa parte qualquer do sistema, você filtra homens num bloco e mulheres em outro. Por causa do usuário que resolveu fazer graça, o funcionário em questão não aparecerá em

TUTORIAL/TABELAS

nenhum dos filtros. Um sistema profissional não pode deixar que isso aconteça. Para isso existe a regra de validação do campo. É muito simples: para o caso mencionado, basta digitar a seguinte regra na propriedade Regra de Validação do campo Sexo: “F” Ou “M”. Pronto, o campo só aceitará F ou M como conteúdo. Uma nota quanto a essa regra imposta ao campo Sexo é que o campo passa a ser de preenchimento obrigatório. Ou seja, ele não aceitará nulo (vazio). Outro exemplo: num campo onde se deve cadastrar o salário do funcionário numa empresa cujo salário mínimo é 500 reais. A regra seria, então, “maior que 500”. No entanto, pode-se não saber o salário do funcionário no momento em que ele é cadastrado: o valor será informado depois. Para dar incluir essa hipótese, a regra deve ser a seguinte: >500 Ou Nulo Ao contrário das outras propriedades até aqui apresentadas, os controles vinculados ao campo com regra de validação herdam, no formulário, a regra definida na tabela. Portanto, mesmo que você mude a regra para o controle vinculado ao campo, o valor que o usuário digitar deve satisfazer Regra de Validação: feita para garantir dados consistentes

68 < C O L E Ç Ã O I N F O

sempre à regra definida na tabela. Se porventura você definiu outra regra para o controle, o valor digitado terá que atender às duas regras, tanto a do campo na tabela quanto a do controle. A consistência ainda pode ser feita no nível do registro. Os exemplos do campo Sexo e do Salário cuidam da consistência no nível do campo. A consistência de registro funciona da seguinte forma: imagine uma tabela onde são cadastrados os produtos e a porcentagem de cada setor da empresa na participação das vendas. A tabela contém os campos Produto, SetorA, SetorB, SetorC. Como se trata de porcentagem, a soma das parcelas de todos os setores deve ser igual a 100. Para implementar essa regra, com a tabela aberta em modo Design, clique no botão Propriedades, na barra de ferramentas, a fim de exibir a folha

de propriedades da tabela. Na propriedade Regra de Validação, digite a seguinte regra: [SetorA]+[SetorB]+[SetorC]=100 Uma propriedade complementar à Regra de Validação é a Texto de Validação. Nessa propriedade você insere um texto personalizado para ser mostrado, em vez da mensagem-padrão do Access, quando o usuário digita um valor incorreto. INTEGRIDADE DOS DADOS Exemplo clássico: o número de CPF de uma pessoa é único — ou seja, nenhuma outra pessoa pode ter um CPF igual ao de outra. Portanto, não pode haver em seu cadastro de clientes dois ou mais RGs iguais. Para evitar isso, basta selecionar, na propriedade Indexado do campo CPF, a opção Sim (Duplicação não autorizada). Você pode querer uma integridade com dois campos. O número de um aluno na

MÁSCARAS DE ENTRADA Caracteres utilizados na propriedade Máscaras de Entrada CARACTERE

DESCRIÇÃO

L0

Dígito (de 0 a 9, entrada obrigatória)

9

Dígito ou espaço (entrada não obrigatória)

#

Dígito ou espaço (entrada não obrigatória; os espaços são exibidos como vazios quando no modo Edição, mas os vazios são removidos quando os dados são salvos; sinais de adição e subtração são permitidos)

L

Letra (de A a Z, entrada obrigatória)

?

Letra (de A a Z, entrada opcional)

a

Letra ou dígito (entrada opcional)

A

Letra ou dígito (entrada obrigatória)

&

Qualquer caractere ou um espaço (entrada obrigatória)

CARACTERE

C ,,:;-/

DESCRIÇÃO

Qualquer caractere ou um espaço (entrada opcional) Marcador decimal e separadores de milhares, de data e de hora

<

Converte todos os caracteres para letras minúsculas

>

Converte todos os caracteres para letras maiúsculas

!

Define que a máscara de entrada seja exibida da direita para a esquerda, e não da esquerda para a direita

\

Define que o caractere seguinte seja exibido como caractere literal (por exemplo, \A é exibido simplesmente como A)

C O L E Ç Ã O I N F O > 69

062_GUIA_TAB_ACCESS 25/02/2006 23:31 Page 70

TUTORIAL/TABELAS

Valor-padrão: não é preciso digitar o item que se repete no campo

classe deve ser único, porém esse número pode se repetir em outra classe. Logo, a chave deve ser o número da classe mais o número do aluno. Clique no botão Índices, na barra de ferramentas, e serão exibidos os índices da tabela. Na coluna Nome do Índice dê um nome sugestivo: ClasseAluno. Depois selecione os campos do número da classe e o do número do aluno. A propriedade Exclusivo do índice deve conter o valor Sim. A figura 2 mostra como deve ficar a janela de índice dessa tabela, que tem como índice primário o campo matrícula. VALOR-PADRÃO O Valor-padrão de um campo também é uma propriedade muito importante. Ele facilita para o usuário o trabalho de edição. Normalmente, define-se como valor-padrão de um campo o valor de preenchimento mais freqüente. Se a loja está localizada em São Paulo, é bem provável que a maioria dos clientes seja dessa cidade. Então, os campos Cidade e Estado já de70 < C O L E Ç Ã O I N F O

vem aparecer preenchidos com os valores “São Paulo”, “SP”. Assim, o operador praticamente não precisará digitar. É importante lembrar também que zero não é nulo. Zero é valor numérico — aliás, esse é o valor-padrão adotado pelo Access para os tipos de dados numéricos. Nulo é o valor de um campo não preenchido. Ou seja, nulo é igual a vazio. Quanto ao relacionamento do valor-padrão de um campo na tabela com o controle vinculado a ele num formulário, fica valendo, primeiramente, o definido para o controle. Contudo, se você não especificar um valorpadrão para o controle, será utilizado o definido para o campo. Neste tutorial você tomou contato com todos os itens que envolvem a criação de tabelas de um modo bem profissional. Vale lembrar que o banco de dados Access ainda tem um assistente para construir campos. Para acioná-lo, posicione o cursor na coluna Nome do Campo e clique no botão Construir, na barra de ferramentas. Será exibida uma lista de exemplos de campos. Se você selecionar um, o assistente já o definirá por inteiro (ou seja, com todas as propriedades) na sua tabela.

071_RELA_VEND_ORACLE

25/02/2006

23:56

Page 71

TUTORIAL/ORACLE EXPRESS

RELATÓRIO FEITO COM VIEWS APRENDA A CRIAR UMA TABELA VIRTUAL QUE FAÇA AS CONTAS NECESSÁRIAS PARA UM RELATÓRIO DE VENDAS POR CARLOS CHERNIJ, COM FRED CARBONARE

ma das boas funcionalidades disponíveis no gratuito Oracle 10g Express Edition — ou Oracle XE — são as views, tabelas virtuais que podem ser usadas para poupar trabalho do programador na hora de criar consultas no banco de dados. As views não existem fisicamente — são geradas pelas consultas. Mas, depois de criadas, elas se comportam exatamente como uma tabela. Assim, as alterações realizadas na view são repassadas para a tabela física envolvida.

U

As views são muito usadas em bancos de dados complexos com diversas tabelas que formam conjuntos de dados, relatórios etc. E não são privilégio do Oracle — podem ser encontradas também em bancos de dados como PostgreSQL, MS SQL Server e MySQL 5.0. Neste tutorial, utilizaremos as views para gerar um relatório de vendas. Detalhe importante: o Oracle XE ainda está em versão beta (no começo de fevereiro de 2006, foi colocada à disposição dos internautas a edição Release Candidate 3). Por conta disso, algumas funções podem apre-

Oracle XE: a criação da views e a administração do banco de dados é feita via web

C O L E Ç Ã O I N F O > 71

071_RELA_VEND_ORACLE

25/02/2006

23:33

Page 72

TUTORIAL/ORACLE EXPRESS

sentar problemas. No teste do INFOLAB, por exemplo, o upload de scripts não funcionou corretamente no navegador Firefox.

1. INSTALANDO Faça o download do Oracle XE em www.info.abril.com.br/download/ 4346.shtml e execute o instalador. Apesar de o arquivo do programa possuir 200 MB, a instalação vai consumir cerca de 1 GB de espaço no disco rígido. Um momento importante do processo é a solicitação da senha para o usuário System, que tem os direitos administrativos. Vamos colocar a senha como sendo system, para facilitar. Após a instalação, clique no atalho Goto database homepage, que será criado dentro do grupo de programas Oracle Database 10g Express Edition. O atalho abrirá uma janela de

TUTORIAL/ORACLE EXPRESS

browser com a página de login do módulo de administração — é tudo feito via web. A página pode ser acessada também por meio do endereço http://127.0.0.1:8080/htmldb/ htmldb na máquina em que o software foi instalado.

Script Editor: um clique em Criar abre o código de criação das tabelas

TB_CLIENTE e, depois, na aba Data para ver os dados iniciais que foram inseridos durante a criação das tabelas.

2. CARREGANDO OS SCRIPTS Na página de login, entre com o nome de usuário System e a senha escolhida durante a instalação. Vamos agora criar as tabelas que serão usadas no tutorial. Faça o download dos arquivos de script em ftp://ftp.info. abril.com.br/bdoracle.zip. Depois de descompactá-los, você terá dois arquivos de script: Criar.sql e View.sql. Na tela inicial do módulo de administração, escolha a opção SQL. Clique então em SQL Scripts. Acione o botão Upload. No campo File, clique em Procurar e informe a localização do arquivo Criar.sql. No campo Script Name, digite Criar. Clique então no botão Upload, na parte superior da tela. A partir de agora, o script vai aparecer como um ícone sempre que se entrar na tela SQL Scripts.

5

execução do script, terão sido criadas as tabelas TB_CLIENTE, com informações dos clientes, TB_PEDIDO, com dados dos pedidos, TB_PRODUTO, com informações dos produtos, e TB_PEDIDO_PRODUTO, que relacionará os produtos aos pedidos.

4. VISUALIZANDO OS DADOS A partir da tela inicial do módulo de administração, clique em Object Browser > Browse > Tables. À esquerda da tela estará uma lista com todas as tabelas do sistema, a maioria referentes a controles internos do Oracle XE. No final da lista, você verá as tabelas do tutorial. Clique em

. GERANDO O RELATÓRIO Vamos criar uma view que irá mostrar o total pedido por cliente do nosso banco de dados, gerando assim um relatório de vendas. Volte para a página inicial e escolha a opção Object > Browser > Create > View. No campo View Name, digite vw_total_pedidos_cliente. Na janela Query, cole o conteúdo do arquivo View.sql. O código é o seguinte: SELECT sum(total_pedido) as total, cod_cliente, nom_cliente FROM ( SELECT tb_pedido.cod_pedido, tb_pedido.cod_cliente,

3

Scripts: carregue e use o ícone Criar

72 < C O L E Ç Ã O I N F O

. CRIANDO AS TABELAS Ainda na tela SQL Scripts (Home > SQL > SQL Scripts), clique no ícone do script Criar. Será aberta a janela do Script Editor com o código referente à criação das tabelas. Clique no botão Run, que fica na parte superior da tela. Será aberta a tela Run Script, onde é necessário confirmar a operação, clicando novamente no botão Run. Após a

Visualize: clique na aba Data para ver dados inseridos durante a criação das tabelas

C O L E Ç Ã O I N F O > 73

071_RELA_VEND_ORACLE

25/02/2006

23:33

Page 72

TUTORIAL/ORACLE EXPRESS

sentar problemas. No teste do INFOLAB, por exemplo, o upload de scripts não funcionou corretamente no navegador Firefox.

1. INSTALANDO Faça o download do Oracle XE em www.info.abril.com.br/download/ 4346.shtml e execute o instalador. Apesar de o arquivo do programa possuir 200 MB, a instalação vai consumir cerca de 1 GB de espaço no disco rígido. Um momento importante do processo é a solicitação da senha para o usuário System, que tem os direitos administrativos. Vamos colocar a senha como sendo system, para facilitar. Após a instalação, clique no atalho Goto database homepage, que será criado dentro do grupo de programas Oracle Database 10g Express Edition. O atalho abrirá uma janela de

TUTORIAL/ORACLE EXPRESS

browser com a página de login do módulo de administração — é tudo feito via web. A página pode ser acessada também por meio do endereço http://127.0.0.1:8080/htmldb/ htmldb na máquina em que o software foi instalado.

Script Editor: um clique em Criar abre o código de criação das tabelas

TB_CLIENTE e, depois, na aba Data para ver os dados iniciais que foram inseridos durante a criação das tabelas.

2. CARREGANDO OS SCRIPTS Na página de login, entre com o nome de usuário System e a senha escolhida durante a instalação. Vamos agora criar as tabelas que serão usadas no tutorial. Faça o download dos arquivos de script em ftp://ftp.info. abril.com.br/bdoracle.zip. Depois de descompactá-los, você terá dois arquivos de script: Criar.sql e View.sql. Na tela inicial do módulo de administração, escolha a opção SQL. Clique então em SQL Scripts. Acione o botão Upload. No campo File, clique em Procurar e informe a localização do arquivo Criar.sql. No campo Script Name, digite Criar. Clique então no botão Upload, na parte superior da tela. A partir de agora, o script vai aparecer como um ícone sempre que se entrar na tela SQL Scripts.

5

execução do script, terão sido criadas as tabelas TB_CLIENTE, com informações dos clientes, TB_PEDIDO, com dados dos pedidos, TB_PRODUTO, com informações dos produtos, e TB_PEDIDO_PRODUTO, que relacionará os produtos aos pedidos.

4. VISUALIZANDO OS DADOS A partir da tela inicial do módulo de administração, clique em Object Browser > Browse > Tables. À esquerda da tela estará uma lista com todas as tabelas do sistema, a maioria referentes a controles internos do Oracle XE. No final da lista, você verá as tabelas do tutorial. Clique em

. GERANDO O RELATÓRIO Vamos criar uma view que irá mostrar o total pedido por cliente do nosso banco de dados, gerando assim um relatório de vendas. Volte para a página inicial e escolha a opção Object > Browser > Create > View. No campo View Name, digite vw_total_pedidos_cliente. Na janela Query, cole o conteúdo do arquivo View.sql. O código é o seguinte: SELECT sum(total_pedido) as total, cod_cliente, nom_cliente FROM ( SELECT tb_pedido.cod_pedido, tb_pedido.cod_cliente,

3

Scripts: carregue e use o ícone Criar

72 < C O L E Ç Ã O I N F O

. CRIANDO AS TABELAS Ainda na tela SQL Scripts (Home > SQL > SQL Scripts), clique no ícone do script Criar. Será aberta a janela do Script Editor com o código referente à criação das tabelas. Clique no botão Run, que fica na parte superior da tela. Será aberta a tela Run Script, onde é necessário confirmar a operação, clicando novamente no botão Run. Após a

Visualize: clique na aba Data para ver dados inseridos durante a criação das tabelas

C O L E Ç Ã O I N F O > 73

071_RELA_VEND_ORACLE

25/02/2006

23:35

Page 74

TUTORIAL/ORACLE EXPRESS

tabela virtual, e todas as alterações que forem feitas nela serão transmitidas para as tabelas que a compõem. Para gerar um relatório a partir da view que foi criada, basta usar o comando SELECT * FROM vw_total_pedidos_cliente.

CRIE SUA VIEW

>

Relatório: clique na aba Data

tb_pedido_produto.val_preco_ produto * tb_pedido_produto. qtd_produto as total_pedido, tb_cliente.nom_cliente FROM tb_pedido, tb_pedido_produto, tb_cliente WHERE tb_pedido.cod_pedido = tb_pedido_produto.cod_pedido AND tb_cliente.cod_cliente = tb_pedido.cod_cliente ) total GROUP BY cod_cliente, nom_cliente Clique em Next e confirme, acionando Create. Na tela de confirmação você já poderá ver o resultado, clicando na aba Data. Dessa forma, a view pode ser utilizada como se fosse uma 74 < C O L E Ç Ã O I N F O

Para criar uma view, deve ser observada a seguinte estrutura básica de comando SQL: CREATE VIEW vw_nome AS SELECT colunas FROM tabela1, tabela2 WHERE tabela1.campo = tabela2.campo Dessa forma, você irá unir duas tabelas, criando uma tabela virtual na qual poderá fazer consultas e atualizações nos dados de forma mais simples. Uma das possibilidades de aplicação é configurar permissões diferentes para as tabelas e para as views. Por exemplo, você pode ter uma senha de usuário no banco de dados sendo usada apenas para os scripts da área aberta do seu site. O internauta só terá acesso às views, o suficiente para fazer as pesquisas que deseja. Para acessar as tabelas originais, seria criado outro usuário, aplicando assim mais uma camada de segurança no banco de dados.

075_TUT GUIA DB2 25/02/2006 23:41 Page 75

TUTORIAL/CONSULTAS

CRIE PESQUISAS COM CRITÉRIOS SIGA OS PASSOS PARA MONTAR DE CONSULTAS SIMPLES A BUSCAS COM PARÂMETROS VARIÁVEIS NO DB2 POR FRED CARBONARE

lguma vez você criou consultas a banco de dados com critério? É bem provável que sim. E uma consulta com o critério OU em determinado campo, como Rio de Janeiro OU São Paulo? Provavelmente sim, também. Consultas com critérios são muito úteis. Quando desejamos que essas consultas sejam mais flexíveis, podemos substituir o critério fixo por um critério com parâmetros. Exemplo: [Cidade1] OU [Cidade2] Para treinar as consultas com critério, neste tutorial faremos um cadastro de clientes acessando o banco de dados DB2 Express-C.

A

No DB2: crie o banco de dados padrão

seguida, localize o arquivo Criar.sql que você descompactou e executeo. Ele irá criar uma tabela chamada Clientes com as seguintes colunas: id, nome, endereco, telefone, cidade, estado, datanasc e incluirá alguns dados de exemplo.

1

. BAIXE OS COMANDOS Para facilitar a compreensão, primeiramente faça o download do arquivo db2.zip no endereço ftp://ftp.info. abril.com.br/ebd_db2.zip e descompacte-o. Nesse arquivo você encontrará os comandos SQL necessários para criar a tabela de exemplo.

2

. CRIE A TABELA No DB2 Express-C, crie um banco de dados padrão chamado Consulta. Em

Identificação: dê o nome Consulta

Ao dar um duplo clique sobre a tabela Clientes, veremos o seu conteúdo. Como você pode notar, trata-se de uma tabela simples, que armazena uma lista de clientes e as suas respectivas cidades. C O L E Ç Ã O I N F O > 75

075_TUT GUIA DB2 25/02/2006 23:58 Page 76

TUTORIAL/CONSULTAS

TUTORIAL/CONSULTAS

7

dor “=”, e, em Valor, escolha a opção Listar valores. Na nova janela de valores, dê um duplo clique em São Bernardo. Basta clicar no botão > para adicionar o critério. Clique em OK e em Resultados da Consulta para ver o resultado.

5

Tabela: clique duplo exibe conteúdo

3. NOVA CONSULTA Como poderemos visualizar apenas os clientes localizados na cidade de São Bernardo do Campo? Criando, é claro, uma consulta com critério. Para isso, clique com o botão direito na tabela e escolha Consultar. Na janela Nova Consulta que se abriu, fique com a opção Selecionado > Assistente SQL. Ainda Na janela Nova Consulta, selecione Instrução SELECT > From e escolha a tabela Clientes.

. CRITÉRIO OU Quando abrimos o assistente SQL do DB2 Express-C, ele zera toda a programação feita antes. Assim, para saber quais são os clientes de São Bernardo OU São Paulo, é necessário criar novamente o critério e adicionar um novo para a cidade de São Paulo, clicando no botão OR >.

Valores: adicione o novo critério

Critério: escolha a opção Where

4. O CRITÉRIO Agora vamos colocar o critério. Para isso, escolha a opção WHERE. Nessa janela Where, escolha a coluna CIDADE, (imagem 008) opera76 < C O L E Ç Ã O I N F O

Como ficou: visualize o código SQL

Quando adicionamos o critério para as duas cidades, se você observar a declaração SQL montada, vai notar que a cláusula WHERE mudou para: WHERE CLIENTES.CIDADE = ’São Bernardo’ OR CLIENTES.CIDADE = ’São Paulo’; Note que a diferença entre as duas instruções SQL é a quantidade de parâmetros contidos exatamente na cláusula Where. Da mesma forma, a diferença da cláusula Where entre uma consulta que possua o critério: “São Bernardo”, e outra com o critério: “São Bernardo” OU “São Paulo”, será a quantidade de campos na cláusula Where.

6. VISUALIZANDO O SQL

AND OU OR?

Ao criarmos uma consulta no Assistente SQL, o programa, nos bastidores, cria uma instrução SQL para realizar a pesquisa solicitada. Veja como ficou no nosso primeiro exemplo: SELECT * FROM SQLJ.CLIENTES AS CLIENTES WHERE CLIENTES.CIDADE = ’São Bernardo’

Dúvidas sobre a utilização dos critérios AND e OR costumam ser freqüentes entre os iniciantes na arte de armazenar informação. Quando colocamos a instrução OR, acrescentamos registros ao resultado. Quando utilizamos AND, restringimos. Para exemplificar, ima-

>

. RESTRINGINDO Vamos supor agora que você quer visualizar os clientes de “São Bernardo” OU “São Paulo”, mas apenas os que nasceram em 1990. Para isso usaremos o mesmo sistema de critérios, mas adicionando um outro, do tipo AND. De volta ao Assistente SQL, escolha a coluna DATANASC e o operador BETWEEN. Em valor mínimo coloque ‘1990-01-01’ e, em valor máximo, ‘1990-12-31’. Clique em "AND >". Agora, clique em OK e execute o comando, acionando Resultados da Consulta. Pronto, agora você pode usar o Assistente SQL para gerar comandos com critérios de acordo com a sua aplicação e extrair relatórios cada vez mais precisos do seu banco de dados. Esse exemplo, feito no DB2 Express-C, pode ser aplicado em qualquer outro banco de dados. A diferença vai ser mais visual do que conceitual, de acordo com o assistente do produto.

gine um amigo procurando namorada. Ele prefere loiras de olhos azuis. Então deve especificar loira AND olhos azuis. Agora, se para você tanto faz se a moça é loira ou morena, defina a consulta com loiras OR morenas. Suas possibilidades serão maiores.

C O L E Ç Ã O I N F O > 77

075_TUT GUIA DB2 25/02/2006 23:58 Page 76

TUTORIAL/CONSULTAS

TUTORIAL/CONSULTAS

7

dor “=”, e, em Valor, escolha a opção Listar valores. Na nova janela de valores, dê um duplo clique em São Bernardo. Basta clicar no botão > para adicionar o critério. Clique em OK e em Resultados da Consulta para ver o resultado.

5

Tabela: clique duplo exibe conteúdo

3. NOVA CONSULTA Como poderemos visualizar apenas os clientes localizados na cidade de São Bernardo do Campo? Criando, é claro, uma consulta com critério. Para isso, clique com o botão direito na tabela e escolha Consultar. Na janela Nova Consulta que se abriu, fique com a opção Selecionado > Assistente SQL. Ainda Na janela Nova Consulta, selecione Instrução SELECT > From e escolha a tabela Clientes.

. CRITÉRIO OU Quando abrimos o assistente SQL do DB2 Express-C, ele zera toda a programação feita antes. Assim, para saber quais são os clientes de São Bernardo OU São Paulo, é necessário criar novamente o critério e adicionar um novo para a cidade de São Paulo, clicando no botão OR >.

Valores: adicione o novo critério

Critério: escolha a opção Where

4. O CRITÉRIO Agora vamos colocar o critério. Para isso, escolha a opção WHERE. Nessa janela Where, escolha a coluna CIDADE, (imagem 008) opera76 < C O L E Ç Ã O I N F O

Como ficou: visualize o código SQL

Quando adicionamos o critério para as duas cidades, se você observar a declaração SQL montada, vai notar que a cláusula WHERE mudou para: WHERE CLIENTES.CIDADE = ’São Bernardo’ OR CLIENTES.CIDADE = ’São Paulo’; Note que a diferença entre as duas instruções SQL é a quantidade de parâmetros contidos exatamente na cláusula Where. Da mesma forma, a diferença da cláusula Where entre uma consulta que possua o critério: “São Bernardo”, e outra com o critério: “São Bernardo” OU “São Paulo”, será a quantidade de campos na cláusula Where.

6. VISUALIZANDO O SQL

AND OU OR?

Ao criarmos uma consulta no Assistente SQL, o programa, nos bastidores, cria uma instrução SQL para realizar a pesquisa solicitada. Veja como ficou no nosso primeiro exemplo: SELECT * FROM SQLJ.CLIENTES AS CLIENTES WHERE CLIENTES.CIDADE = ’São Bernardo’

Dúvidas sobre a utilização dos critérios AND e OR costumam ser freqüentes entre os iniciantes na arte de armazenar informação. Quando colocamos a instrução OR, acrescentamos registros ao resultado. Quando utilizamos AND, restringimos. Para exemplificar, ima-

>

. RESTRINGINDO Vamos supor agora que você quer visualizar os clientes de “São Bernardo” OU “São Paulo”, mas apenas os que nasceram em 1990. Para isso usaremos o mesmo sistema de critérios, mas adicionando um outro, do tipo AND. De volta ao Assistente SQL, escolha a coluna DATANASC e o operador BETWEEN. Em valor mínimo coloque ‘1990-01-01’ e, em valor máximo, ‘1990-12-31’. Clique em "AND >". Agora, clique em OK e execute o comando, acionando Resultados da Consulta. Pronto, agora você pode usar o Assistente SQL para gerar comandos com critérios de acordo com a sua aplicação e extrair relatórios cada vez mais precisos do seu banco de dados. Esse exemplo, feito no DB2 Express-C, pode ser aplicado em qualquer outro banco de dados. A diferença vai ser mais visual do que conceitual, de acordo com o assistente do produto.

gine um amigo procurando namorada. Ele prefere loiras de olhos azuis. Então deve especificar loira AND olhos azuis. Agora, se para você tanto faz se a moça é loira ou morena, defina a consulta com loiras OR morenas. Suas possibilidades serão maiores.

C O L E Ç Ã O I N F O > 77

078_MY_ADMIN1 26/02/2006 00:00 Page 78

TUTORIAL/INTERFACE WEB

TUTORIAL/INTERFACE WEB

O PHPMYADMIN DOMA O MYSQL APRENDA A USAR O PHPMYADMIN PARA CRIAR BANCOS DE DADOS SEM ESCREVER EM SQL POR TONI CAVALHEIRO

opular por ser um gerenciador de bancos de dados confiável e gratuito, o MySQL fica devendo uma interface gráfica para o desenvolvedor. Sem ela, o uso desse software fica restrito aos programadores que dominam a linguagem SQL. A MySQL AB, que produz o banco de dados, oferece o MySQL Administrator, uma ferramenta de gerenciamento, mas não é tão popular quanto o phpMyAdmin, que permite comandar o MySQL por meio de uma interface via web. Com ele, é possível criar e modificar bancos de dados sem escrever os comandos em SQL. O phpMyAdmin também é ótimo para aprender SQL, uma vez que pode-se visualizar o código gerado. Neste tutorial, vamos criar um banco de dados com o phpMyAdmin. Para isso, é preciso ter um servidor Apache com PHP e MySQL, itens presentes em quase todas as distribuições do Linux. Se você quiser instalá-los no Windows, pode optar por um pacote como o Apache2Triad (www.info.abril.com.br/ download/3788.shtml), que reúne os três softwares. Vamos ao tutorial.

P

78 < C O L E Ç Ã O I N F O

1. INSTALAÇÃO O primeiro passo é baixar o phpMyAdmin (www.info.abril.com.br/down load/3260.shtml) e descompactar os arquivos. Crie uma pasta no servidor Apache com o nome mysql e ponha os arquivos do software nela.

2. CONFIGURAÇÃO Vamos configurar. Abra, no Bloco de Notas, o arquivo config.inc.php, que está na pasta mysql. Localize este trecho: $cfg[‘Servers’][$i]['host’] = ‘localhost’; // MySQL hostname or IP address $cfg[‘Servers’][$i][‘port’]= “; // MySQL port - leave blank for default Na primeira linha, altere o parâmetro host para o nome ou o endereço IP do servidor. Se o phpMyAdmin estiver na mesma máquina que o MySQL, deixe “localhost” mesmo. Caso seu MySQL utilize alguma porta especial, indique-a na linha seguinte. Coloque o número da porta entre os apóstrofos logo após o sinal de igual. A porta-padrão é a 3306. Caso ocorra algum tipo de pro-

blema, verifique se essa porta está liberada no firewall.

3

. AUTENTICAÇÃO Por padrão, o phpMyAdmin usa a autenticação baseada no computador. Você indica uma máquina cliente e ele só faz a conexão com ela. Vamos alterar isso para que a autenticação seja feita com base no nome de usuário. Para isso, localize a seguinte linha no arquivo config.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. Salve o arquivo e feche o Bloco de Notas. Depois disso, o phpMyAdmin estará pronto para ser usado. Abra o browser e digite a seguinte URL: http://localhost/mysql Você verá uma tela de logon. Se é a primeira vez que você acessa o MySQL, digite root como nome de usuário e deixe a senha em branco.

linhas horizontais, que são chamadas, respectivamente, de campos e registros. Vamos criar um pequeno banco de dados com o cadastro de clientes de uma empresa qualquer. Para começar, na página inicial do phpMyAdmin, procure o campo “Criar novo banco de dados”. Digite a palavra empresa nele e clique no botão Criar. Todos os nomes dos bancos de dados devem ser grafados em letras minúsculas.

5

. TABELAS O próximo passo será criar uma tabela. O próprio phpMyAdmin já sugere essa operação. Digite o nome tb_agenda para a tabela. Como ela terá nove campos, coloque o número 9 em Campos e pressione o botão Executar. É recomendável iniciar o nome de cada tabela com as letras “tb_”. Com essa nomenclatura, você poderá encontrar as tabelas mais facilmente no código-fonte do seu programa.

4. O BANCO DE DADOS Um servidor como o MySQL pode conter vários bancos de dados. Cada um é formado por um certo número de tabelas. As tabelas são divididas em colunas e

Página inicial: ponto de partida do phpMyAdmin para a criação dos vários bancos de dados que o MySQL comporta C O L E Ç Ã O I N F O > 79

078_MY_ADMIN1 26/02/2006 00:00 Page 78

TUTORIAL/INTERFACE WEB

TUTORIAL/INTERFACE WEB

O PHPMYADMIN DOMA O MYSQL APRENDA A USAR O PHPMYADMIN PARA CRIAR BANCOS DE DADOS SEM ESCREVER EM SQL POR TONI CAVALHEIRO

opular por ser um gerenciador de bancos de dados confiável e gratuito, o MySQL fica devendo uma interface gráfica para o desenvolvedor. Sem ela, o uso desse software fica restrito aos programadores que dominam a linguagem SQL. A MySQL AB, que produz o banco de dados, oferece o MySQL Administrator, uma ferramenta de gerenciamento, mas não é tão popular quanto o phpMyAdmin, que permite comandar o MySQL por meio de uma interface via web. Com ele, é possível criar e modificar bancos de dados sem escrever os comandos em SQL. O phpMyAdmin também é ótimo para aprender SQL, uma vez que pode-se visualizar o código gerado. Neste tutorial, vamos criar um banco de dados com o phpMyAdmin. Para isso, é preciso ter um servidor Apache com PHP e MySQL, itens presentes em quase todas as distribuições do Linux. Se você quiser instalá-los no Windows, pode optar por um pacote como o Apache2Triad (www.info.abril.com.br/ download/3788.shtml), que reúne os três softwares. Vamos ao tutorial.

P

78 < C O L E Ç Ã O I N F O

1. INSTALAÇÃO O primeiro passo é baixar o phpMyAdmin (www.info.abril.com.br/down load/3260.shtml) e descompactar os arquivos. Crie uma pasta no servidor Apache com o nome mysql e ponha os arquivos do software nela.

2. CONFIGURAÇÃO Vamos configurar. Abra, no Bloco de Notas, o arquivo config.inc.php, que está na pasta mysql. Localize este trecho: $cfg[‘Servers’][$i]['host’] = ‘localhost’; // MySQL hostname or IP address $cfg[‘Servers’][$i][‘port’]= “; // MySQL port - leave blank for default Na primeira linha, altere o parâmetro host para o nome ou o endereço IP do servidor. Se o phpMyAdmin estiver na mesma máquina que o MySQL, deixe “localhost” mesmo. Caso seu MySQL utilize alguma porta especial, indique-a na linha seguinte. Coloque o número da porta entre os apóstrofos logo após o sinal de igual. A porta-padrão é a 3306. Caso ocorra algum tipo de pro-

blema, verifique se essa porta está liberada no firewall.

3

. AUTENTICAÇÃO Por padrão, o phpMyAdmin usa a autenticação baseada no computador. Você indica uma máquina cliente e ele só faz a conexão com ela. Vamos alterar isso para que a autenticação seja feita com base no nome de usuário. Para isso, localize a seguinte linha no arquivo config.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. Salve o arquivo e feche o Bloco de Notas. Depois disso, o phpMyAdmin estará pronto para ser usado. Abra o browser e digite a seguinte URL: http://localhost/mysql Você verá uma tela de logon. Se é a primeira vez que você acessa o MySQL, digite root como nome de usuário e deixe a senha em branco.

linhas horizontais, que são chamadas, respectivamente, de campos e registros. Vamos criar um pequeno banco de dados com o cadastro de clientes de uma empresa qualquer. Para começar, na página inicial do phpMyAdmin, procure o campo “Criar novo banco de dados”. Digite a palavra empresa nele e clique no botão Criar. Todos os nomes dos bancos de dados devem ser grafados em letras minúsculas.

5

. TABELAS O próximo passo será criar uma tabela. O próprio phpMyAdmin já sugere essa operação. Digite o nome tb_agenda para a tabela. Como ela terá nove campos, coloque o número 9 em Campos e pressione o botão Executar. É recomendável iniciar o nome de cada tabela com as letras “tb_”. Com essa nomenclatura, você poderá encontrar as tabelas mais facilmente no código-fonte do seu programa.

4. O BANCO DE DADOS Um servidor como o MySQL pode conter vários bancos de dados. Cada um é formado por um certo número de tabelas. As tabelas são divididas em colunas e

Página inicial: ponto de partida do phpMyAdmin para a criação dos vários bancos de dados que o MySQL comporta C O L E Ç Ã O I N F O > 79

078_MY_ADMIN1 26/02/2006 00:01 Page 80

TUTORIAL/INTERFACE WEB

6. TIPOS DE CAMPO As tabelas podem conter vários tipos de campo. Vamos dar uma olhada nos principais. ■ VARCHAR Armazena seqüências de letras e números. Valores armazenados nesse campo não podem ser usados para cálculos matemáticos (se você somar “1” + “2”, receberá “12” como resultado, em vez de “3”). ■ TEXT Usado para armazenar os textos. Se você tiver um sistema de notícias online, por exemplo, irá guardar cada um dos artigos em um campo TEXT. ■ DATE Campo usado para datas. Está presente na maioria das tabelas. ■ INT É um dos tipos de campo mais usados. Armazena números inteiros, sejam eles negativos ou positivos. ■ DECIMAL Armazena números decimais. Repare que, ao lado desse campo, aparece o item “tamanho/definir”. Esse valor indica a precisão do campo decimal que você está criando. Se você preencher com o valor 10,3, por exemplo, estará informando ao servidor que a precisão será de dez dígitos e três casas decimais. Se você não especificar nenhum valor, o sistema assume 10,0 como formato-padrão. ■ BLOB É normalmente usado para armazenar imagens.

7. DEFINIÇÕES O phpMyAdmin mostra um formulário que devemos preencher com as definições dos nove campos da nossa tabela. Complete o formulário com os valores da tabela a seguir: 80 < C O L E Ç Ã O I N F O

TUTORIAL/INTERFACE WEB

CAMPO

TIPO

TAMANHO/DEFINIR

cod

INT

nome

VARCHAR

telefone

VARCHAR

15

endereco

VARCHAR

50

cidade

VARCHAR

30

estado

VARCHAR

2

pais

VARCHAR

15

cep

VARCHAR

8

email

VARCHAR

30

100

Esqueça as demais especificações do phpMyAdmin, como Atributos, Nulo e Padrão. Esses itens não serão necessários e devem ser deixados em branco. Procure evitar o uso de cedilha, acentuação ou caracteres especiais no nome dos campos. Isso pode criar problemas se você resolver transportar a base de dados para outro servidor. Ao terminar, clique em Salvar.

8. CHAVE Vamos definir a chave primária, uma referência que será usada como índice para a tabela. Clique em Estrutura e, em seguida, no ícone em forma de chave ao lado do campo cod da tabela. Uma tela de confirmação aparecerá. Clique em OK. Agora ligue a numeração automática do campo cod. Ainda na guia Estrutura, pressione o ícone em forma de lápis que está ao lado desse campo e selecione a opção auto_increment, disponível em Extra. Clique em Salvar.

9. INSERINDO DADOS Já podemos inserir dados na tabela. Primeiro, mostraremos como in-

10. DADOS NO ATACADO A técnica do passo anterior para inserir dados não é muito prática se você precisar incluir muitos nomes. A melhor saída é criar um arquivo de texto com os dados e importálo para o MySQL. Para isso, coloque os Campos: especifique o nome, o tipo e o tamanho dados de cada cliente numa linha, usando ponto-e-vírcluir dados da forma convencional gula como separador. Os campos e, em seguida, você verá como mondevem estar na ordem especificatar o cadastro de clientes importanda na tabela, como neste exemplo: do dados de um arquivo de texto. ;“João da Silva”;“(11) 6000-1010”; Para incluir dados no MySQL, cli“Rua do Endereço, 100”; que na guia Inserir, localizada na par“SãoPaulo”;“SP”;“Brasil”; te superior da janela do phpMyAd“01000000”;“[email protected]” min. O programa permite que você ;“Paulo da Silva”;“(21)1000-1212”; inclua dois registros de cada vez, bas“Rua do Teste, 200”;“Niterói”; tando preencher o formulário com in“RJ”;“Brasil”;“10201000”; formações tais como nome, endereço e telefone dos clientes. Nesse momento, preencha apenas o item Valor. O item Funções permite que você dê um tratamento personalizado aos dados que está digitando, mas não vamos usá-no neste tutorial. Caso você queira incluir outros novos dados, Importar dados: faça um arquivo de texto e marque a opção “Inimporte para o MySQL serir novo registro”. C O L E Ç Ã O I N F O > 81

078_MY_ADMIN1 26/02/2006 00:01 Page 80

TUTORIAL/INTERFACE WEB

6. TIPOS DE CAMPO As tabelas podem conter vários tipos de campo. Vamos dar uma olhada nos principais. ■ VARCHAR Armazena seqüências de letras e números. Valores armazenados nesse campo não podem ser usados para cálculos matemáticos (se você somar “1” + “2”, receberá “12” como resultado, em vez de “3”). ■ TEXT Usado para armazenar os textos. Se você tiver um sistema de notícias online, por exemplo, irá guardar cada um dos artigos em um campo TEXT. ■ DATE Campo usado para datas. Está presente na maioria das tabelas. ■ INT É um dos tipos de campo mais usados. Armazena números inteiros, sejam eles negativos ou positivos. ■ DECIMAL Armazena números decimais. Repare que, ao lado desse campo, aparece o item “tamanho/definir”. Esse valor indica a precisão do campo decimal que você está criando. Se você preencher com o valor 10,3, por exemplo, estará informando ao servidor que a precisão será de dez dígitos e três casas decimais. Se você não especificar nenhum valor, o sistema assume 10,0 como formato-padrão. ■ BLOB É normalmente usado para armazenar imagens.

7. DEFINIÇÕES O phpMyAdmin mostra um formulário que devemos preencher com as definições dos nove campos da nossa tabela. Complete o formulário com os valores da tabela a seguir: 80 < C O L E Ç Ã O I N F O

TUTORIAL/INTERFACE WEB

CAMPO

TIPO

TAMANHO/DEFINIR

cod

INT

nome

VARCHAR

telefone

VARCHAR

15

endereco

VARCHAR

50

cidade

VARCHAR

30

estado

VARCHAR

2

pais

VARCHAR

15

cep

VARCHAR

8

email

VARCHAR

30

100

Esqueça as demais especificações do phpMyAdmin, como Atributos, Nulo e Padrão. Esses itens não serão necessários e devem ser deixados em branco. Procure evitar o uso de cedilha, acentuação ou caracteres especiais no nome dos campos. Isso pode criar problemas se você resolver transportar a base de dados para outro servidor. Ao terminar, clique em Salvar.

8. CHAVE Vamos definir a chave primária, uma referência que será usada como índice para a tabela. Clique em Estrutura e, em seguida, no ícone em forma de chave ao lado do campo cod da tabela. Uma tela de confirmação aparecerá. Clique em OK. Agora ligue a numeração automática do campo cod. Ainda na guia Estrutura, pressione o ícone em forma de lápis que está ao lado desse campo e selecione a opção auto_increment, disponível em Extra. Clique em Salvar.

9. INSERINDO DADOS Já podemos inserir dados na tabela. Primeiro, mostraremos como in-

10. DADOS NO ATACADO A técnica do passo anterior para inserir dados não é muito prática se você precisar incluir muitos nomes. A melhor saída é criar um arquivo de texto com os dados e importálo para o MySQL. Para isso, coloque os Campos: especifique o nome, o tipo e o tamanho dados de cada cliente numa linha, usando ponto-e-vírcluir dados da forma convencional gula como separador. Os campos e, em seguida, você verá como mondevem estar na ordem especificatar o cadastro de clientes importanda na tabela, como neste exemplo: do dados de um arquivo de texto. ;“João da Silva”;“(11) 6000-1010”; Para incluir dados no MySQL, cli“Rua do Endereço, 100”; que na guia Inserir, localizada na par“SãoPaulo”;“SP”;“Brasil”; te superior da janela do phpMyAd“01000000”;“[email protected]” min. O programa permite que você ;“Paulo da Silva”;“(21)1000-1212”; inclua dois registros de cada vez, bas“Rua do Teste, 200”;“Niterói”; tando preencher o formulário com in“RJ”;“Brasil”;“10201000”; formações tais como nome, endereço e telefone dos clientes. Nesse momento, preencha apenas o item Valor. O item Funções permite que você dê um tratamento personalizado aos dados que está digitando, mas não vamos usá-no neste tutorial. Caso você queira incluir outros novos dados, Importar dados: faça um arquivo de texto e marque a opção “Inimporte para o MySQL serir novo registro”. C O L E Ç Ã O I N F O > 81

078_MY_ADMIN1 26/02/2006 00:01 Page 82

TUTORIAL/INTERFACE WEB

[email protected]” ;“Jorge Pinheiro”;“(609) 1000-1000”;“3rd Test Street”; “Adrian”;“MI”;“USA”;“11000123”; “[email protected]” Salve esse arquivo com o nome agenda.txt. De volta ao phpMyAdmin, clique em SQL e depois em Insere Arquivo Texto na Tabela. Clique em Browse, localize o arquivo que você criou. Para concluir a entrada dos dados, clique em Submeter. Os dados serão incorporados ao cadastro de clientes. A montagem do nosso banco de dados está concluída. Nos próximos dois passos, damos dicas para quem está aprendendo SQL.

11. EXAMINANDO O CÓDIGO Pode ser interessante dar uma olhada no código em SQL gerado pelo phpMyAdmin. Clique em Exportar e gere um arquivo com a extensão SQL. Depois, abra esse arquivo no Bloco de Notas ou num editor de programas. Analise o código e veja como o phpMyAdmin estruturou a tabela.

MySQL. Vamos ver exemplos das quatro operações básicas de bancos de dados — consulta, inclusão, edição e exclusão — em SQL. SELECT * from tb_dados WHERE cod = ‘10’ ORDER BY nome; Esse comando seleciona e lista todos os campos da tabela tb_dados somente nas linhas que tiverem o código 10. O parâmetro ORDER BY determina as linhas em ordem alfabética pelo campo nome. INSERT INTO tb_dados (endereco) VALUES (‘[email protected]’); Esse código insere o endereço mail@ mail.com no campo endereco da tabela tb_dados. UPDATE tb_dados SET nome = ‘INFO’ WHERE cod = ‘10’; Modifica o campo nome da tabela tb_dados para Info, mas só nas linhas que tiverem 10 no campo cod. DELETE FROM tb_dados WHERE nome like ‘a%’; Apaga linhas da tabela tb_dados que começarem com a letra a. O símbolo % é usado como curinga.

12. COM O SQL Há certas operações que não podem ser feitas apenas com o phpMyAdmin. Elas exigem a digitação de comandos em SQL. Isso é feito na guia SQL, bastando digitar os comandos e pressionar o botão Executar para enviá-los ao 82 < C O L E Ç Ã O I N F O

SQL: os comandos são enviados direto para o MySQL

083_084_AJAX 26/02/2006 00:20 Page 83

TUTORIAL/DESENVOLVIMENTO

ATUALIZAÇÃO É COM O AJAX COMBINAÇÃO DE VÁRIAS TECNOLOGIAS, O AJAX AGILIZA OS APLICATIVOS QUE ACESSAM BANCOS DE DADOS ONLINE POR CARLOS CHERNIJ

Ajax vem dando o que falar no mundo dos sites dinâmicos. Essa técnica de desenvolvimento usa HTML, JavaScript, XML e alguma linguagem para a web, como PHP, ColdFusion, Java ou C# e tem no Google um ilustre usuário. Quando alguém distribui corações para os amigos no orkut, por exemplo, a página atualiza os campos correspondentes sem recarregar todo o resto, agilizando a operação. Num formulário normal da web, os dados fornecidos pelo internauta são enviados para o servidor,

O

que devolve uma nova página com o resultado. Para demonstrar como se programa em Ajax, vamos criar um serviço de cadastro com PHP e HTML.

1. O SERVIDOR

Para executar nosso exemplo, é preciso ter um servidor HTTP Apache 2.0 rodando PHP 4.4 no modo binário CGI e o banco de dados MySQL 4.1 ou mais recente. Esses recursos estão disponíveis na maioria dos planos de hospedagem de sites. Baixe o exemplo em www.info.abril.com.br/down load/4326.shtml e descompacte-o. Você vai obter uma pasta chamada infoajax com vários arquivos. Coloque essa pasta no diretórioraiz do servidor Apache (diretório htdocs). Para criar nossa aplicação, usaremos uma biblioteca de classes em PHP, a Xajax (www.info.abril.com.br/ download/4327.shtml). Ela está incluída no arquivo compactado, dentro da pasta includes, com o noFormulário: cadastro de clientes feito com Ajax me xajax.inc.php. C O L E Ç Ã O I N F O > 83

083_084_AJAX 26/02/2006 00:21 Page 84

TUTORIAL/DESENVOLVIMENTO

TUTORIAL/DESENVOLVIMENTO

2. BASE DE DADOS Prepare a base de dados do aplicativo. O INFOLAB utilizou o phpMyAdmin (www.info.abril.com.br/ download/3260.shtml) nessa tarefa. Se esse software estiver instalado no servidor, digite o endereço correspondente para usá-lo, como neste exemplo: http://www.nome. com.br/phpmyadmin. phpMyAdmin: criação do banco de dados xajax Na tela inicial, procure o campo Criar Novo Banco de Da“senha” pelo nome de usuário e a sedos e digite xajax. Clique em Criar. nha que deverão ser usados para

3. TABELAS

acesso ao MySQL. Na linha de baixo, substitua “meubanco” por “xajax”.

Vamos gerar tabelas para a nossa aplicação. No phpMyAdmin, acione o menu do lado esquerdo da tela e selecione o banco de dados xajax. Ative, então, a aba MySQL. No campo Localização do Arquivo Texto, clique em Procurar. Navegue até o arquivo bd.sql, na pasta infoajax, e selecione-o. Em Conjunto de Caracteres do Arquivo, escolha latin1. Clique em Executar para rodar o programa em SQL. Isso cria as tabelas.

. O APLICATIVO Para ver o aplicativo-exemplo funcionando, abra o browser e digite este endereço: http://www.nome. com.br/infoajax. No lugar de “www.nome.com.br”, coloque o endereço do seu site. Clique em Cadastrar e inclua dados de uma pessoa no banco. Depois, volte à página anterior e faça uma consulta.

4. CONFIGURAÇÕES Vamos editar o arquivo bd.inc.php que fica na pasta includes. Abra-o num editor de textos e procure: $conexao = mysql_connect (“localhost”,“usuário”,“senha”); mysql_select_db(‘meubanco’, $conexao); Substitua as palavras “usuário” e 84 < C O L E Ç Ã O I N F O

5

6. EXAMINADO O CÓDIGO Analisaremos a seguir o arquivo cadastro.php, que contém as rotinas para a inclusão de registros. Abra o arquivo num editor de textos e, logo no começo, observe a linha $xajax = new xajax();. Esse comando define o objeto xajax, que vai processar as ações de post do formulário. Um dos métodos é

o $xajax->registerFunction(), que permite agregar funções escritas em PHP que realizarão operações com dados do formulário de forma assíncrona. Cada função dessas deve possuir um objeto da classe xajaxResponse(), que conterá os dados a atualizar.

7. TELA DE CADASTRO Na tela de cadastro, o exemplo de uso do Ajax é composto dos menus com os dados de estado e cidade. A lista de cidades é atualizada de acordo com o estado escolhido. Para selecionar as cidades, há a função carregaCidades. No arquivo cadastro.php, observe o código dessa função. Após ler o valor selecionado no menu Estado, a função realiza uma consulta na tabela para selecionar as cidades correspondentes. Cada registro encontrado é adicionado ao objeto $objResponse, por meio do método addAssign. No código, temos esta linha: $objResponse->addAssig (“cidades”,“innerHTML”, $html) O item “cidades” é a identificação da divisão da página onde ficará o menu com as cidades, e “innerHTML” especifica que o conteúdo da variável $html vai substituir o código html dentro da divisão. No final, é chamado o método getXML(), que retorna uma seção de código XML ao objeto xajax. Após implementar a função, vamos incorporála ao xajax por meio do comando:

$xajax->registerFunction (“carregaCidades”)

8. XAJAX Após a definição das funções, quando começa a seção de código HTML do arquivo cadastro.php, é preciso especificar que o xajax deve tomar para si os comandos de post do formulário. Isso é feito pelo comando $xajax->processRequests() Em seguida, devemos criar um evento que chamará a função que registramos no objeto xajax. Isso é feito na linha: Cada vez que o campo Estado mudar, a função carregaCidades será chamada e retornará a lista de cidades em código XML. O xajax utilizará a lista num JavaScript, que, por sua vez, atualizará as cidades. Um mecanismo similar é utilizado na página index.php, que contém o módulo de consulta. Abra-a num editor de textos. A função listaUsuarios utiliza como parâmetro o texto da caixa de busca. Ao ser chamada, ela faz a consulta no banco e adiciona os resultados à variável $html para que sejam exibidos na página. Ao clicar em Buscar, a função listaUsuarios passa um novo parâmetro para a consulta. Ele é enviado para o servidor pelo xajax, que recebe a resposta em XML e usa, então, um programa em JavaScript para reescrever o código HTML, que mostra os resultados. C O L E Ç Ã O I N F O > 85

083_084_AJAX 26/02/2006 00:21 Page 84

TUTORIAL/DESENVOLVIMENTO

TUTORIAL/DESENVOLVIMENTO

2. BASE DE DADOS Prepare a base de dados do aplicativo. O INFOLAB utilizou o phpMyAdmin (www.info.abril.com.br/ download/3260.shtml) nessa tarefa. Se esse software estiver instalado no servidor, digite o endereço correspondente para usá-lo, como neste exemplo: http://www.nome. com.br/phpmyadmin. phpMyAdmin: criação do banco de dados xajax Na tela inicial, procure o campo Criar Novo Banco de Da“senha” pelo nome de usuário e a sedos e digite xajax. Clique em Criar. nha que deverão ser usados para

3. TABELAS

acesso ao MySQL. Na linha de baixo, substitua “meubanco” por “xajax”.

Vamos gerar tabelas para a nossa aplicação. No phpMyAdmin, acione o menu do lado esquerdo da tela e selecione o banco de dados xajax. Ative, então, a aba MySQL. No campo Localização do Arquivo Texto, clique em Procurar. Navegue até o arquivo bd.sql, na pasta infoajax, e selecione-o. Em Conjunto de Caracteres do Arquivo, escolha latin1. Clique em Executar para rodar o programa em SQL. Isso cria as tabelas.

. O APLICATIVO Para ver o aplicativo-exemplo funcionando, abra o browser e digite este endereço: http://www.nome. com.br/infoajax. No lugar de “www.nome.com.br”, coloque o endereço do seu site. Clique em Cadastrar e inclua dados de uma pessoa no banco. Depois, volte à página anterior e faça uma consulta.

4. CONFIGURAÇÕES Vamos editar o arquivo bd.inc.php que fica na pasta includes. Abra-o num editor de textos e procure: $conexao = mysql_connect (“localhost”,“usuário”,“senha”); mysql_select_db(‘meubanco’, $conexao); Substitua as palavras “usuário” e 84 < C O L E Ç Ã O I N F O

5

6. EXAMINADO O CÓDIGO Analisaremos a seguir o arquivo cadastro.php, que contém as rotinas para a inclusão de registros. Abra o arquivo num editor de textos e, logo no começo, observe a linha $xajax = new xajax();. Esse comando define o objeto xajax, que vai processar as ações de post do formulário. Um dos métodos é

o $xajax->registerFunction(), que permite agregar funções escritas em PHP que realizarão operações com dados do formulário de forma assíncrona. Cada função dessas deve possuir um objeto da classe xajaxResponse(), que conterá os dados a atualizar.

7. TELA DE CADASTRO Na tela de cadastro, o exemplo de uso do Ajax é composto dos menus com os dados de estado e cidade. A lista de cidades é atualizada de acordo com o estado escolhido. Para selecionar as cidades, há a função carregaCidades. No arquivo cadastro.php, observe o código dessa função. Após ler o valor selecionado no menu Estado, a função realiza uma consulta na tabela para selecionar as cidades correspondentes. Cada registro encontrado é adicionado ao objeto $objResponse, por meio do método addAssign. No código, temos esta linha: $objResponse->addAssig (“cidades”,“innerHTML”, $html) O item “cidades” é a identificação da divisão da página onde ficará o menu com as cidades, e “innerHTML” especifica que o conteúdo da variável $html vai substituir o código html dentro da divisão. No final, é chamado o método getXML(), que retorna uma seção de código XML ao objeto xajax. Após implementar a função, vamos incorporála ao xajax por meio do comando:

$xajax->registerFunction (“carregaCidades”)

8. XAJAX Após a definição das funções, quando começa a seção de código HTML do arquivo cadastro.php, é preciso especificar que o xajax deve tomar para si os comandos de post do formulário. Isso é feito pelo comando $xajax->processRequests() Em seguida, devemos criar um evento que chamará a função que registramos no objeto xajax. Isso é feito na linha: Cada vez que o campo Estado mudar, a função carregaCidades será chamada e retornará a lista de cidades em código XML. O xajax utilizará a lista num JavaScript, que, por sua vez, atualizará as cidades. Um mecanismo similar é utilizado na página index.php, que contém o módulo de consulta. Abra-a num editor de textos. A função listaUsuarios utiliza como parâmetro o texto da caixa de busca. Ao ser chamada, ela faz a consulta no banco e adiciona os resultados à variável $html para que sejam exibidos na página. Ao clicar em Buscar, a função listaUsuarios passa um novo parâmetro para a consulta. Ele é enviado para o servidor pelo xajax, que recebe a resposta em XML e usa, então, um programa em JavaScript para reescrever o código HTML, que mostra os resultados. C O L E Ç Ã O I N F O > 85

086_CONSULTA_TAB_ACCESS

26/02/2006

00:22

Page 86

TUTORIAL/CONSULTAS

TUTORIAL/CONSULTAS

PESQUISE BEM NO ACCESS MONTE CONSULTAS COM DUAS TABELAS E ESCAPE DAS PEGADINHAS NA LÓGICA DOS DADOS POR CARLOS MACHADO

uem gosta de música e organização costuma não resistir a um banco de dados. Em geral, utiliza o Access, que já está ali mesmo no PC, no pacote Office. Vamos supor que você tenha montado uma tabela no Access reunindo todos os seus arquivos de música em MP3. Como também gosta de analisar as letras — e decorar para cantar no chuveiro —, criou uma tabela para elas. Nem todas as músicas têm sua letra no banco, e você quer saber quais MP3 dispõem de letras. A solução pode ser encontrada no Access a um toque do mouse, sem programação. Será preciso construir uma consulta simples, com o objetivo de identificar, em duas tabelas, quais registros contêm as mesmas informações em dois campos indicados: um em cada tabela. Essa solução pode ser aplicada em muitas outras situações. O problema pode ser representado por um diagrama que mostra dois conjuntos de dados, um para cada tabela. O xis da questão é identificar a porção comum às duas tabelas — corres-

Q

86 < C O L E Ç Ã O I N F O

pondente, no desenho, à área em que os dois conjuntos se superpõem. Agora que já caracterizamos o problema, vamos à solução, passo a passo.

1. A TABELA DE MP3 Para acompanhar o exemplo, crie no Access uma tabela com os campos Intérprete e Título, ambos do tipo Texto. Salve-a com o nome tabMP3. Essa tabela, claro, vai conter a lista das músicas.

2. A TABELA DAS LETRAS Crie outra tabela, com os campos Intérprete, Título e Letra. Este último deve ser do tipo Memorando, para abrigar a letra da música. O campo do tipo Texto tem capacidade máxima para 255 caracteres. A letra não caberia nele. Por sua vez, o campo de memorando suporta até 65 536 caracteres. Dê à segunda tabela o nome tabLetras. Também não haveria problema se o campo Título, que é o ponto comum entre as tabelas, tivesse nome diferente nas duas. No entanto, para facilitar a compreensão, é mais cômodo usar o mesmo nome.

3. CRIE A CONSULTA Na janela Banco de Dados, clique na orelha Consulta. Dê um duplo clique no comando Criar Consulta no Modo Design para projetar um objeto desse tipo a partir do zero. O Access abre duas janelas: Mostrar Tabela e Consulta1. Selecione (mouse mais a tecla Ctrl) o nome das duas tabelas — tabMP3 e tabLetras — na primeira janela e clique no botão Adicionar.

4. A LINHA NEGRA

Consulta 1 (no alto) e seus resultados: a base é a tabLetras

Dois quadros com os campos das tabelas aparecem na área superior de Consulta1. Se as duas tabelas tiverem chaves primárias chamadas Código (nome-padrão), o Access vai mostrar uma linha negra ligando esses dois campos. Clique nessa linha e acione a tecla Del para apagá-la. Isso porque o valor Código numa ta-

Consulta 2: o resultado (embaixo) não é igual ao da consulta 1

bela não tem nenhum parentesco com seu homônimo na outra.

5

. O PULO-D0-GATO Com o mouse, clique no campo Título de uma tabela e arraste-o para o campo de mesmo nome na outra tabela. Uma linha passa a ligar os dois campos, indicando que a consulta deve procurar neles informações iguais. Dica: o procedimento também funciona quando o nome dos dois campos não é o mesmo. No quadro tabLetras, arraste para a linha Campo, embaixo, os campos Título e Intérprete. Opcionalmente, indique que o campo Intérprete seja apresentado em ordem alfabética. Para isso, na linha Classificação, escolha Crescente. Salve a consulta (com um nome amigável, como cnsMP3comLetras1) e execute-a. Veja que ela exibe exaC O L E Ç Ã O I N F O > 87

086_CONSULTA_TAB_ACCESS

26/02/2006

00:22

Page 86

TUTORIAL/CONSULTAS

TUTORIAL/CONSULTAS

PESQUISE BEM NO ACCESS MONTE CONSULTAS COM DUAS TABELAS E ESCAPE DAS PEGADINHAS NA LÓGICA DOS DADOS POR CARLOS MACHADO

uem gosta de música e organização costuma não resistir a um banco de dados. Em geral, utiliza o Access, que já está ali mesmo no PC, no pacote Office. Vamos supor que você tenha montado uma tabela no Access reunindo todos os seus arquivos de música em MP3. Como também gosta de analisar as letras — e decorar para cantar no chuveiro —, criou uma tabela para elas. Nem todas as músicas têm sua letra no banco, e você quer saber quais MP3 dispõem de letras. A solução pode ser encontrada no Access a um toque do mouse, sem programação. Será preciso construir uma consulta simples, com o objetivo de identificar, em duas tabelas, quais registros contêm as mesmas informações em dois campos indicados: um em cada tabela. Essa solução pode ser aplicada em muitas outras situações. O problema pode ser representado por um diagrama que mostra dois conjuntos de dados, um para cada tabela. O xis da questão é identificar a porção comum às duas tabelas — corres-

Q

86 < C O L E Ç Ã O I N F O

pondente, no desenho, à área em que os dois conjuntos se superpõem. Agora que já caracterizamos o problema, vamos à solução, passo a passo.

1. A TABELA DE MP3 Para acompanhar o exemplo, crie no Access uma tabela com os campos Intérprete e Título, ambos do tipo Texto. Salve-a com o nome tabMP3. Essa tabela, claro, vai conter a lista das músicas.

2. A TABELA DAS LETRAS Crie outra tabela, com os campos Intérprete, Título e Letra. Este último deve ser do tipo Memorando, para abrigar a letra da música. O campo do tipo Texto tem capacidade máxima para 255 caracteres. A letra não caberia nele. Por sua vez, o campo de memorando suporta até 65 536 caracteres. Dê à segunda tabela o nome tabLetras. Também não haveria problema se o campo Título, que é o ponto comum entre as tabelas, tivesse nome diferente nas duas. No entanto, para facilitar a compreensão, é mais cômodo usar o mesmo nome.

3. CRIE A CONSULTA Na janela Banco de Dados, clique na orelha Consulta. Dê um duplo clique no comando Criar Consulta no Modo Design para projetar um objeto desse tipo a partir do zero. O Access abre duas janelas: Mostrar Tabela e Consulta1. Selecione (mouse mais a tecla Ctrl) o nome das duas tabelas — tabMP3 e tabLetras — na primeira janela e clique no botão Adicionar.

4. A LINHA NEGRA

Consulta 1 (no alto) e seus resultados: a base é a tabLetras

Dois quadros com os campos das tabelas aparecem na área superior de Consulta1. Se as duas tabelas tiverem chaves primárias chamadas Código (nome-padrão), o Access vai mostrar uma linha negra ligando esses dois campos. Clique nessa linha e acione a tecla Del para apagá-la. Isso porque o valor Código numa ta-

Consulta 2: o resultado (embaixo) não é igual ao da consulta 1

bela não tem nenhum parentesco com seu homônimo na outra.

5

. O PULO-D0-GATO Com o mouse, clique no campo Título de uma tabela e arraste-o para o campo de mesmo nome na outra tabela. Uma linha passa a ligar os dois campos, indicando que a consulta deve procurar neles informações iguais. Dica: o procedimento também funciona quando o nome dos dois campos não é o mesmo. No quadro tabLetras, arraste para a linha Campo, embaixo, os campos Título e Intérprete. Opcionalmente, indique que o campo Intérprete seja apresentado em ordem alfabética. Para isso, na linha Classificação, escolha Crescente. Salve a consulta (com um nome amigável, como cnsMP3comLetras1) e execute-a. Veja que ela exibe exaC O L E Ç Ã O I N F O > 87

086_CONSULTA_TAB_ACCESS

26/02/2006

00:23

Page 88

TUTORIAL/CONSULTAS

tamente os títulos comuns às duas tabelas. A solução descrita acima aparentemente resolve o problema apresentado no início deste tutorial.

6

. TESTE A CONSULTA Faça, agora, uma experiência importante. Inclua, na tabela MP3, uma música cujo título já existe em tabLetras, mas registre aí outro intérprete. Escolha, de propósito, uma canção que não faz parte do núcleo comum entre as duas tabelas. Execute novamente a consulta. O que ocorre? A nova música não aparece. Isso porque a consulta está sendo feita com base na tabela tabLetras.

7

. MESMO TÍTULO Agora, na janela Banco de Dados, selecione a consulta cnsMP3comLetras1 e copie-a. Cole-a no mesmo lugar, com o nome de cnsMP3comLetras2. Selecione essa nova consulta e clique no botão Design. Na janela da consulta, linha Tabela, es-

colha, nos dois campos, tabMP3 em vez de tabLetras. Salve a consulta. Em outras palavras, estamos fazendo a mesma consulta, só que agora a outra tabela é nosso ponto de partida. Execute essa consulta modificada. O que ocorre? A música aparece, mas com outro intérprete. Para comparar, abra as duas. Ao trabalhar com bancos de dados, é preciso pensar em coisas desse tipo. A questão é que duas canções com o mesmo título e cantores diferentes podem ser a mesma música ou não. Assim, se você quiser garantir a identidade de título e intérprete, precisa construir uma consulta ligeiramente diferente.

8. OS INTÉRPRETES Experimente mais. Copie a primeira consulta e cole-a como cnsMP3comLetras11. Abra-a em modo Design e arraste o campo Intérprete de uma tabela para o mesmo campo na outra. Com isso, estamos dizendo que tanto o título como o intérprete devem coincidir nas duas tabelas. Agora, copie a tabela cnsMP3comLetras2 e cole-a como cnsMP3comLetras22. Arraste o campo Intérprete da mesma forma.

9. BUSCA DUPLA

Consultas 11 e 22: bases diferentes, mas com resultados iguais

88 < C O L E Ç Ã O I N F O

Execute, lado a lado, as consultas 11 e 22. Embora se baseiem em tabelas diferentes, elas dão os mesmíssimos resultados. A diferença está na busca de dupla identidade: de título e de intérprete.

089_CADASTROFOTO_EXIF 26/02/2006 00:24 Page 89

TUTORIAL/CADASTRO DE FOTOS

O EXIF VAI PARA O BANCO APRENDA A CRIAR UMA BASE DE DADOS DE FOTOS NO SQL SERVER EXPRESS COM INFORMAÇÕES DA CÂMERA POR NIVALDO FORESTI

ue tal criar um banco de dados de fotografias sem perder muito tempo na digitação dos detalhes? A idéia é boa e factível, se usarmos as informações Exif (Exchangeable Image File Format) que as câ-

Q

meras fotográficas digitais, em sua maioria, gravam em cada imagem capturada por seus sensores. Entre essas informações preciosas estão a data e a hora em que a foto foi tirada, a abertura do obturador, o tempo de exposição, o nome do fabri-

Banco de fotos: para criar um banco, selecione General na janela New Database

C O L E Ç Ã O I N F O > 89

089_CADASTROFOTO_EXIF 26/02/2006 00:24 Page 90

TUTORIAL/CADASTRO DE FOTOS

TUTORIAL/CADASTRO DE FOTOS

MSQL >DATA. Lá estarão os arquivos fotos.mdf e fotos_log.ldf.

2. AS TABELAS

Checagem: verifique os arquivos que formam o banco de dados

cante e o modelo da máquina, além da resolução da imagem. Neste tutorial, vamos criar uma base de dados de fotos com informações Exif no SQL Server 2005 Express, da Microsoft. Nosso banco terá três tabelas: clientes, fotógrafos e pictures. Vamos aos passos.

1. A BASE DE DADOS Abra a suíte SQL Server Management Studio Express. Na interface principal, clique com o botão direito do mouse em Databases e selecione Criar New Database. Do lado esquerdo da janela New Database que se abre, selecione a opção General. No campo chamado database name, digite Fotos, que será o nome do nosso banco de dados. Clique OK. O banco de dados Fotos está criado e se constitui de dois arquivos. Você pode verificar isso acionando Programs > Microsoft SQL Server > 90 < C O L E Ç Ã O I N F O

De volta ao SQL Server Management Studio Express, expanda o banco de dados Fotos, clicando no ícone +. Agora vamos criar as três tabelas: fotografos, pictures e clientes. Como definição, iremos dizer que um fotógrafo pode ter várias fotos e que um cliente também pode ter várias fotos. Primeiro, criamos a tabela fotografos. Com o botão direito, clique em Tables e selecione NEW TABLE. Na janela Properties, digite o nome da tabela, fotografos, no campo ObjectName. Agora vamos criar os campos dessa tabela. Aparece uma lista com as opções na janela Table — dbo.table-1, o nome padrão de tabela criada pelo SQL Management, contendo o nome da coluna (Column Name), tipo de dados (Data Type) e Allow Nulls?. O primeiro campo que vamos criar é o da chave primária dessa tabela. É de bom costume criar sempre uma chave primária para toda tabela. Nesse caso, ela será chamada Id_fotografo. Digite esse nome no campo Column Name. A janela Column properties deve ser alterada para as características desejadas. Em primeiro lugar, va-

mos determinar qual tipo de dados o campo irá suportar. Clique no campo Data Type e selecione int, pois esse campo será uma identificação do fotógrafo e a chave primária dessa tabela. Dê TAB até abrir a próxima linha da janela Table — dbo.table-1, nome provisório da tabela.

3

. MAIS CAMPOS Vamos criar agora os campos Nome do fotógrafo, Endereço, Cidade, Estado. Todos eles serão do tipo varchar, que consumirá somente o espaço necessário no disco para a quantidade de caracteres armazenada. Assim, um nome que contenha 10 caracteres consumirá somente 10 bytes no banco de dados. No caso do campo do tipo char, um campo com tamanho de 50 caracteres sempre ocupará 50 bytes de espaço no disco rígido. Para cada um, defina no campo lenght o tamanho que você deseja para ele. O último campo será o de CEP. Defina-o como um campo numérico de tamanho 8 (o tamanho do cep no Brasil). Preencha as opções Precision como 8 e scale 0 na janela Properties. Não queremos que falte informação nessa tabela. Assim, desmarque a opção Allow Nulls de todos os campos. O próprio sistema de banco de dados não permitirá que campos em branco sejam registrados.

4. CHAVE PRIMÁRIA Vamos agora definir a nossa chave primária. Clique com o botão direito sobre o campo desejado e selecione Set Primary Key. Vamos fazer isso com o campo Id_fotografo. A chave primária é identificada graficamente por uma pequena chave à frente do nome do campo. Salvamos nossa tabela, acionando File > Salvar Fotografos. Pronto, a primeira tabela está criada na base de dados Fotos. Faça o mesmo para a tabela Clientes. Ela terá os campos Id_cliente, nome_cliente, endereço_cliente, cidade_cliente, estado_cliente, CEP_cliente como colunas. Como não queremos registros incompletos, todos eles também não permitirão campos não preenchidos ou nulos. Vamos fazer o ID_cliente como nossa chave primária dessa tabela. Salve a tabela Clientes clicando no ícone de fechar tabela. Uma jaChave primária: pequena chave identifica o campo correspondente

C O L E Ç Ã O I N F O > 91

089_CADASTROFOTO_EXIF 26/02/2006 00:24 Page 90

TUTORIAL/CADASTRO DE FOTOS

TUTORIAL/CADASTRO DE FOTOS

MSQL >DATA. Lá estarão os arquivos fotos.mdf e fotos_log.ldf.

2. AS TABELAS

Checagem: verifique os arquivos que formam o banco de dados

cante e o modelo da máquina, além da resolução da imagem. Neste tutorial, vamos criar uma base de dados de fotos com informações Exif no SQL Server 2005 Express, da Microsoft. Nosso banco terá três tabelas: clientes, fotógrafos e pictures. Vamos aos passos.

1. A BASE DE DADOS Abra a suíte SQL Server Management Studio Express. Na interface principal, clique com o botão direito do mouse em Databases e selecione Criar New Database. Do lado esquerdo da janela New Database que se abre, selecione a opção General. No campo chamado database name, digite Fotos, que será o nome do nosso banco de dados. Clique OK. O banco de dados Fotos está criado e se constitui de dois arquivos. Você pode verificar isso acionando Programs > Microsoft SQL Server > 90 < C O L E Ç Ã O I N F O

De volta ao SQL Server Management Studio Express, expanda o banco de dados Fotos, clicando no ícone +. Agora vamos criar as três tabelas: fotografos, pictures e clientes. Como definição, iremos dizer que um fotógrafo pode ter várias fotos e que um cliente também pode ter várias fotos. Primeiro, criamos a tabela fotografos. Com o botão direito, clique em Tables e selecione NEW TABLE. Na janela Properties, digite o nome da tabela, fotografos, no campo ObjectName. Agora vamos criar os campos dessa tabela. Aparece uma lista com as opções na janela Table — dbo.table-1, o nome padrão de tabela criada pelo SQL Management, contendo o nome da coluna (Column Name), tipo de dados (Data Type) e Allow Nulls?. O primeiro campo que vamos criar é o da chave primária dessa tabela. É de bom costume criar sempre uma chave primária para toda tabela. Nesse caso, ela será chamada Id_fotografo. Digite esse nome no campo Column Name. A janela Column properties deve ser alterada para as características desejadas. Em primeiro lugar, va-

mos determinar qual tipo de dados o campo irá suportar. Clique no campo Data Type e selecione int, pois esse campo será uma identificação do fotógrafo e a chave primária dessa tabela. Dê TAB até abrir a próxima linha da janela Table — dbo.table-1, nome provisório da tabela.

3

. MAIS CAMPOS Vamos criar agora os campos Nome do fotógrafo, Endereço, Cidade, Estado. Todos eles serão do tipo varchar, que consumirá somente o espaço necessário no disco para a quantidade de caracteres armazenada. Assim, um nome que contenha 10 caracteres consumirá somente 10 bytes no banco de dados. No caso do campo do tipo char, um campo com tamanho de 50 caracteres sempre ocupará 50 bytes de espaço no disco rígido. Para cada um, defina no campo lenght o tamanho que você deseja para ele. O último campo será o de CEP. Defina-o como um campo numérico de tamanho 8 (o tamanho do cep no Brasil). Preencha as opções Precision como 8 e scale 0 na janela Properties. Não queremos que falte informação nessa tabela. Assim, desmarque a opção Allow Nulls de todos os campos. O próprio sistema de banco de dados não permitirá que campos em branco sejam registrados.

4. CHAVE PRIMÁRIA Vamos agora definir a nossa chave primária. Clique com o botão direito sobre o campo desejado e selecione Set Primary Key. Vamos fazer isso com o campo Id_fotografo. A chave primária é identificada graficamente por uma pequena chave à frente do nome do campo. Salvamos nossa tabela, acionando File > Salvar Fotografos. Pronto, a primeira tabela está criada na base de dados Fotos. Faça o mesmo para a tabela Clientes. Ela terá os campos Id_cliente, nome_cliente, endereço_cliente, cidade_cliente, estado_cliente, CEP_cliente como colunas. Como não queremos registros incompletos, todos eles também não permitirão campos não preenchidos ou nulos. Vamos fazer o ID_cliente como nossa chave primária dessa tabela. Salve a tabela Clientes clicando no ícone de fechar tabela. Uma jaChave primária: pequena chave identifica o campo correspondente

C O L E Ç Ã O I N F O > 91

089_CADASTROFOTO_EXIF 26/02/2006 00:26 Page 92

TUTORIAL/CADASTRO DE FOTOS

TUTORIAL/CADASTRO DE FOTOS

6. RELACIONAR

Índice: definindo a chave de pesquisa para os fotógrafos

nela aparecerá perguntando se você deseja salvar as alterações nela. Clique YES.

5

. TABELA DE FOTOS Chegou a vez da tabela Pictures. Essa tabela terá informações Exif sobre as fotos que você deseja guardar. O padrão Exif é bastante completo, mas não queremos todas essas informações. Como ilustração, usaremos o fabricante da câmera, o seu modelo, a data e a hora da foto e a sua largura e altura. Defina todos os campos (exceto a chave primária) como varchar com o tamanho desejado. Defina uma chave primária chamada Id_Pictures. Nesse caso, devemos permitir nulls nos outros campos, pois você pode não ter alguma das informações. Normalmente, todas as câmeras têm, mas se você desejar gravar uma foto avulsa será possível fazêlo sem dispor de algumas delas. 92 < C O L E Ç Ã O I N F O

A tabela não está completa ainda. Você precisa relacioná-la aos fotógrafos e aos clientes. Lembre-se que, em um banco de dados relacional, essa relação é importante para descobrir as fotos que pertencem a um fotógrafo ou que fotos são de quais clientes. Primeiro, vamos definir as chaves de pesquisa para os fotógrafos e clientes nessa tabela. Elas serão chamadas de id_fotografos e id_clientes, respectivamente. Crie como campos do tipo int. Agora, clique com o botão direito na janela de campos e escolha a opção indexes/Key. Clique no botão ADD. Selecione o índice criado. Em Columns, escolha primeiro a coluna id_fotografos, abrindo a janela com a opção ".....". Na coluna Identity (name) dê o nome desse índice. Vamos chamá-lo de indice_fotografos. Você notará que existe uma coluna chamada is unique? Mantenha a opção NO. Por quê? Bem, queremos que esse valor se repita para cada foto que pertença a um fotógrafo. Caso selecionássemos a opção YES, o banco de dados evitaria que existisse registro contendo valores duplicados. Crie outro índice igual para clientes que se chamará indice_clientes.

7. TABELA COM TABELA Estamos prontos para relacionar as tabelas. Existem vários modos de se

fazer isso. Vamos pelo mais fácil e visual. No banco de dados Fotos, clique com o botão direito em Database Diagrams na janela da esquerda. Clique em database diagrams. O sistema irá avisar que esse banco de dados não tem um ou mais objetos necessários para utilizar o recurso de diagramas. Clique em YES. Selecione a opção New Database Diagram. Uma janela chamada Add Tables será mostrada. Selecione uma tabela e clique no botão Add. Faça isso com todas elas. Ao final, clique em Close. Uma representação gráfica das tabelas e seus relacionamentos é mostrada. Selecione a coluna de chave no cliente (ID_cliente) com o mouse e arraste até a coluna id_clientes. A janela Table and Columns será mostrada. Isso fará com que o sistema gere uma relação entre a tabela clientes usando o campo id_clientes para a tabela Pictures. Essa relação é de um para muitos, ou seja, de um cliente para várias fotos. Sacou? Clique OK. Faça o mesmo para a tabela fotografos, usando a coluna id_fotografo, e para a tabela pictures usando a coluna Id_fotógrafos. Os relacionamentos estão feitos. A identificação de cada uma dessas relações é feita por uma linha que une os campos de índices e cada lado contém a forma dessa relação,

um para um, um para muitos ou muitos para muitos. No nosso caso, você verá uma chave de um dos lados da relação e um símbolo de infinito do outro lado, o que significa uma relação de um para muitos. Quando você executar consultas que contenham as tabelas clientes e pictures ou fotografos e pictures, as informações relacionadas de ambas serão trazidas automaticamente. Por exemplo, ao pesquisar um fotógrafo, você encontrará todas as fotos que ele produziu. Salve o diagrama, clicando em SALVAR ou fechando a janela. Dê um nome para esse diagrama — no nosso caso, diagrama.

8. IMPORTANDO DADOS Neste ponto, já podemos utilizar essa base. Primeiro precisamos cadastrar alguns dados nela. Usamos um programa de extração de dados Exif Relacionamento completo: clientes, fotógrafos e pictures

C O L E Ç Ã O I N F O > 93

089_CADASTROFOTO_EXIF 26/02/2006 00:26 Page 92

TUTORIAL/CADASTRO DE FOTOS

TUTORIAL/CADASTRO DE FOTOS

6. RELACIONAR

Índice: definindo a chave de pesquisa para os fotógrafos

nela aparecerá perguntando se você deseja salvar as alterações nela. Clique YES.

5

. TABELA DE FOTOS Chegou a vez da tabela Pictures. Essa tabela terá informações Exif sobre as fotos que você deseja guardar. O padrão Exif é bastante completo, mas não queremos todas essas informações. Como ilustração, usaremos o fabricante da câmera, o seu modelo, a data e a hora da foto e a sua largura e altura. Defina todos os campos (exceto a chave primária) como varchar com o tamanho desejado. Defina uma chave primária chamada Id_Pictures. Nesse caso, devemos permitir nulls nos outros campos, pois você pode não ter alguma das informações. Normalmente, todas as câmeras têm, mas se você desejar gravar uma foto avulsa será possível fazêlo sem dispor de algumas delas. 92 < C O L E Ç Ã O I N F O

A tabela não está completa ainda. Você precisa relacioná-la aos fotógrafos e aos clientes. Lembre-se que, em um banco de dados relacional, essa relação é importante para descobrir as fotos que pertencem a um fotógrafo ou que fotos são de quais clientes. Primeiro, vamos definir as chaves de pesquisa para os fotógrafos e clientes nessa tabela. Elas serão chamadas de id_fotografos e id_clientes, respectivamente. Crie como campos do tipo int. Agora, clique com o botão direito na janela de campos e escolha a opção indexes/Key. Clique no botão ADD. Selecione o índice criado. Em Columns, escolha primeiro a coluna id_fotografos, abrindo a janela com a opção ".....". Na coluna Identity (name) dê o nome desse índice. Vamos chamá-lo de indice_fotografos. Você notará que existe uma coluna chamada is unique? Mantenha a opção NO. Por quê? Bem, queremos que esse valor se repita para cada foto que pertença a um fotógrafo. Caso selecionássemos a opção YES, o banco de dados evitaria que existisse registro contendo valores duplicados. Crie outro índice igual para clientes que se chamará indice_clientes.

7. TABELA COM TABELA Estamos prontos para relacionar as tabelas. Existem vários modos de se

fazer isso. Vamos pelo mais fácil e visual. No banco de dados Fotos, clique com o botão direito em Database Diagrams na janela da esquerda. Clique em database diagrams. O sistema irá avisar que esse banco de dados não tem um ou mais objetos necessários para utilizar o recurso de diagramas. Clique em YES. Selecione a opção New Database Diagram. Uma janela chamada Add Tables será mostrada. Selecione uma tabela e clique no botão Add. Faça isso com todas elas. Ao final, clique em Close. Uma representação gráfica das tabelas e seus relacionamentos é mostrada. Selecione a coluna de chave no cliente (ID_cliente) com o mouse e arraste até a coluna id_clientes. A janela Table and Columns será mostrada. Isso fará com que o sistema gere uma relação entre a tabela clientes usando o campo id_clientes para a tabela Pictures. Essa relação é de um para muitos, ou seja, de um cliente para várias fotos. Sacou? Clique OK. Faça o mesmo para a tabela fotografos, usando a coluna id_fotografo, e para a tabela pictures usando a coluna Id_fotógrafos. Os relacionamentos estão feitos. A identificação de cada uma dessas relações é feita por uma linha que une os campos de índices e cada lado contém a forma dessa relação,

um para um, um para muitos ou muitos para muitos. No nosso caso, você verá uma chave de um dos lados da relação e um símbolo de infinito do outro lado, o que significa uma relação de um para muitos. Quando você executar consultas que contenham as tabelas clientes e pictures ou fotografos e pictures, as informações relacionadas de ambas serão trazidas automaticamente. Por exemplo, ao pesquisar um fotógrafo, você encontrará todas as fotos que ele produziu. Salve o diagrama, clicando em SALVAR ou fechando a janela. Dê um nome para esse diagrama — no nosso caso, diagrama.

8. IMPORTANDO DADOS Neste ponto, já podemos utilizar essa base. Primeiro precisamos cadastrar alguns dados nela. Usamos um programa de extração de dados Exif Relacionamento completo: clientes, fotógrafos e pictures

C O L E Ç Ã O I N F O > 93

089_CADASTROFOTO_EXIF 26/02/2006 00:27 Page 94

TUTORIAL/CADASTRO DE FOTOS

EasyExif: gerando informações de fotografias em arquivos CSV

em lote para gerar as informações das fotos, o EasyExif (www.info. abril.com.br/download/4457. shtml), de Kevin Hu. O programa gera arquivos CSV de cada imagem. Abra o programa e selecione a opção Save Directory as CSV Text no menu Save Exif. Uma janela-padrão do Windows permitirá selecionar o diretório onde se encontram as imagens. O sistema lerá as informações de todas as fotos existentes e, para cada uma, gerará um arquivo no formato CSV (separado por vírgulas), em um diretório chamado Exifdata dentro da pasta de suas fotos. Junte todos os arquivos gerados em um único para importação na base de dados. Existem duas maneiras de se fazer isso. A primeira é criar um programa de importação, já 94 < C O L E Ç Ã O I N F O

TUTORIAL/CADASTRO DE FOTOS

que o SQL Express não tem esse tipo de utilitário. A outra é conseguir algum pacote que execute essa função. O EMS Data Import for SQL Server, da EMS Electronic Microsystems, permite importar dados do formato CSV para um banco de dados SQL Server. Faça o download da versão de teste em (www.info.abril.com.br/down load/4458.shtml). Esse utilitário tem um assistente que o leva passo a passo pelo processo. O primeiro é a conexão com a base de dados. Isso depende da instalação que foi feita no SQL Express. No nosso caso, escolhemos Remote, preenchemos o nome da máquina e a autenticação configurada foi a do Windows. Clique no botão NEXT. Data Import: conecta-se ao banco e importa as informações

Importação: escolha o arquivo com os dados clicando em ADD FILE

No próximo passo escolhemos o arquivo com os dados, clicando no botão ADD FILE. Uma janela chamada Select Table é mostrada. Selecione o banco de dados Fotos, e a tabela dbo.pictures. Clique OK e depois em NEXT. Agora mude o delimitador para vírgula no campo Delimiter. Na janela Field, selecione o campo CameraManufacture. Escolha na janela Columns a coluna que corresponde a esse campo no banco de dados. No nosso caso, a coluna 2. Faça o mesmo para os campos CameraModel, DateTime, Width e Lenght com as colunas 4, 16, 54 e 55 respectivamente. Clique em NEXT.

de índice da tabela. Primeiro a chave primária (Id_pictures). Selecione-a no campo Field. No campo Generator Step na janela Field Tunning digite 1. Isso significa que para cada registro um novo índice adicionado de um será gerado. Como nossa base é virgem, ele começará do 1, pois é a soma 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 Generator Value para a importação acontecer com sucesso, pois a chave primária não pode ser duplicada.

10

. ID DO FOTÓGRAFO Vamos gerar o valor de id_fotografos. Temos dois registros e queremos que o primeiro seja do fotóCampos de índice: geração automática dos campos da tabela

9. CAMPOS DE ÍNDICE Vamos tratar da geração automática dos campos C O L E Ç Ã O I N F O > 95

089_CADASTROFOTO_EXIF 26/02/2006 00:27 Page 94

TUTORIAL/CADASTRO DE FOTOS

EasyExif: gerando informações de fotografias em arquivos CSV

em lote para gerar as informações das fotos, o EasyExif (www.info. abril.com.br/download/4457. shtml), de Kevin Hu. O programa gera arquivos CSV de cada imagem. Abra o programa e selecione a opção Save Directory as CSV Text no menu Save Exif. Uma janela-padrão do Windows permitirá selecionar o diretório onde se encontram as imagens. O sistema lerá as informações de todas as fotos existentes e, para cada uma, gerará um arquivo no formato CSV (separado por vírgulas), em um diretório chamado Exifdata dentro da pasta de suas fotos. Junte todos os arquivos gerados em um único para importação na base de dados. Existem duas maneiras de se fazer isso. A primeira é criar um programa de importação, já 94 < C O L E Ç Ã O I N F O

TUTORIAL/CADASTRO DE FOTOS

que o SQL Express não tem esse tipo de utilitário. A outra é conseguir algum pacote que execute essa função. O EMS Data Import for SQL Server, da EMS Electronic Microsystems, permite importar dados do formato CSV para um banco de dados SQL Server. Faça o download da versão de teste em (www.info.abril.com.br/down load/4458.shtml). Esse utilitário tem um assistente que o leva passo a passo pelo processo. O primeiro é a conexão com a base de dados. Isso depende da instalação que foi feita no SQL Express. No nosso caso, escolhemos Remote, preenchemos o nome da máquina e a autenticação configurada foi a do Windows. Clique no botão NEXT. Data Import: conecta-se ao banco e importa as informações

Importação: escolha o arquivo com os dados clicando em ADD FILE

No próximo passo escolhemos o arquivo com os dados, clicando no botão ADD FILE. Uma janela chamada Select Table é mostrada. Selecione o banco de dados Fotos, e a tabela dbo.pictures. Clique OK e depois em NEXT. Agora mude o delimitador para vírgula no campo Delimiter. Na janela Field, selecione o campo CameraManufacture. Escolha na janela Columns a coluna que corresponde a esse campo no banco de dados. No nosso caso, a coluna 2. Faça o mesmo para os campos CameraModel, DateTime, Width e Lenght com as colunas 4, 16, 54 e 55 respectivamente. Clique em NEXT.

de índice da tabela. Primeiro a chave primária (Id_pictures). Selecione-a no campo Field. No campo Generator Step na janela Field Tunning digite 1. Isso significa que para cada registro um novo índice adicionado de um será gerado. Como nossa base é virgem, ele começará do 1, pois é a soma 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 Generator Value para a importação acontecer com sucesso, pois a chave primária não pode ser duplicada.

10

. ID DO FOTÓGRAFO Vamos gerar o valor de id_fotografos. Temos dois registros e queremos que o primeiro seja do fotóCampos de índice: geração automática dos campos da tabela

9. CAMPOS DE ÍNDICE Vamos tratar da geração automática dos campos C O L E Ç Ã O I N F O > 95

089_CADASTROFOTO_EXIF 26/02/2006 00:28 Page 96

TUTORIAL/CADASTRO DE FOTOS

Resultado: data e hora de cada imagem

Clique NEXT nos próximos passos até o de número 10. Nesse último, clique IMPORT. Os dois registros foram importados para nosso banco de dados Fotos.

12. A PESQUISA grafo que está cadastrado em nossa base com o índice 1 e o segundo do fotógrafo com índice 2. Selecione id_fotografos na janela Fields e, em Fields Tunning, coloque Generator Value 0 e Generator Step 1. Isso fará com que o primeiro registro seja do fotógrafo com índice de número 1 (campo com o valor 1) e o segundo registro seja do fotógrafo 2 (campo com valor 2).

11. DADOS DO CLIENTE Agora vamos gerar as informações de cliente. Queremos que todas as fotos pertençam ao mesmo cliente, o que tem índice 1 em nossa tabela de clientes. Para tanto, selecione o campo id_clientes na janela Fields e digite o número 1 em Constant Values na janela Fields Tunning. Todos os registros terão o valor 1 no campo de índice id_clientes pertencendo assim ao mesmo cliente. Clique no botão NEXT. 96 < C O L E Ç Ã O I N F O

Vamos verificar se nossas informações estão corretas fazendo uma consulta. Na janela Object Explorer, clique com o botão direito do mouse no banco Fotos e selecione a opção New Query. Queremos primeiro descobrir todos as fotos do cliente 1. Clique com o botão direito na janela de Query e selecione Query Designer. Adicione as Tabelas Cliente e Pictures. Na coluna Column_Name, selecione Nome_Cliente da lista. Nas demais, selecione DateTime, CameraModel e Id_clientes. Em filter, na linha de id_clientes, digite 1. O próprio Query Designer gerou um comando SQL para ser executado. Clique no botão OK. O comando SQL gerado está pronto para execução. Clique com o botão direito na janela Query novamente e escolha EXECUTE. Eis o resultado de sua pesquisa, a data e hora de cada foto e o modelo da câmera utilizado e para qual cliente isso foi feito.

097_CLASSIFICADOSWEB_POSTGRES

26/02/2006

00:29

Page 97

TUTORIAL/POSTGRESQL

E-MAIL FALSO NÃO ENTRA CONSTRUA UM CADASTRO DE ENDEREÇOS VÁLIDOS AUTOMATIZANDO O PEDIDO DE CONFIRMAÇÃO POR HELIO SILVA

ada mais chato e inoportuno do que descobrir na sua caixa postal uma enxurrada de newsletters que você não assinou. Tudo porque alguém cadastrou seu e-mail por brincadeira ou mesmo por maldade. Para o webmaster, essa situação também é desagradável porque recebe reclamações e é taxado de spammer. A saída para o site é criar um cadastro de emails válidos, enviando ao candidato

N

a assinante da newsletter um pedido de confirmação na forma de um clique em um hyperlink. Quando esse hyperlink for acionado, o webmaster terá certeza de que quem solicitou a assinatura é o dono do endereço. É isso que faremos no tutorial a seguir. Para segui-lo, será necessário um servidor web com PHP 4.x, banco de dados PostgreSQL 8.1.2 e um provedor de acesso à internet que aceite conexões SMTP para a transmissão de e-mails.

Tabela de e-mails: comando SQL cria a tabela de assinantes no PostgreSQL

C O L E Ç Ã O I N F O > 97

097_CLASSIFICADOSWEB_POSTGRES

26/02/2006

00:38

Page 98

TUTORIAL/POSTGRESQL

1. A TABELA DE E-MAILS O primeiro passo é criar a tabela com os e-mails no PostgreSQL. Abra o pgAdmin, clique no botão SQL e crie 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ÁRIO Agora vamos criar o formulário para o usuário se cadastrar. Para isso,

você precisa primeiro fazer o download do arquivo newsletter.zip no endereço ftp://ftp.info.abril.com.br/ newsletter.zip e descompactá-lo na pasta que o servidor web compartilha com a rede. Ao descompactar, você terá os arquivos pega_email.php, grava_email.php e confirma_email.php. O pega_email.php é basicamente um arquivo HTML com um formulário para que o usuário entre com seus dados. Esse formulário acionará nosso script em PHP, que gravará os dados preliminarmente e enviará um email para o provável novo assinante. No nosso exemplo, o arquivo pega_ email.php recebe o endereço de email e repassa ao script seguinte, o grava_email.php.

Formulário: HTML aciona script PHP que recebe o e-mail e repassa a outro script

98 < C O L E Ç Ã O I N F O

097_CLASSIFICADOSWEB_POSTGRES

26/02/2006

00:31

Page 99

TUTORIAL/POSTGRESQL

Resultado: e-mails válidos identificados com endereço IP e status de confirmação

3

. PEDIDO DE CONFIRMAÇÃO Nosso segundo script, o grava_ email.php, salva o endereço de email que está solicitando a assinatura da newsletter e também grava a data e o número IP usado na conexão. Caso haja alguém fazendo o cadastramento indevido do usuário e este queira descobrir quem foi, esses dados serão de grande valia. É importante lembrar que nesta fase do processo o status do assinante é gravado como INATIVO. Enquanto permanecer assim, ele não deve ser importunado por nenhum outro tipo de mensagem que não seja o pedido de confirmação da assinatura. É gerado e gravado também um código adicional (hash) para identificar o usuário. Quando ele pedir a confirmação, esse código impedirá que uma pessoa confirme a assinatura de outra.

Por fim, o programa envia um email com um hyperlink para o nosso próximo script, o confirma_ email.php, para que o assinante confirme sua requisição. Como essa resposta só será possível porque a informação chegou ao assinante através do endereço de e-mail digitado inicialmente, fica claro que quem quer se inscrever é o detentor da conta.

4. ATIVANDO O ASSINANTE O confirma_email.php, acionado pelo clique do nosso futuro assinante, irá tomar as providências finais. Primeiro, ele altera o status do assinante de INATIVO para ATIVO. Note que também gravamos o número IP e a data de confirmação da assinatura. Em caso de haver reclamações, essas informações também ajudarão a esclarecer dúvidas. C O L E Ç Ã O I N F O > 99

100_RAILS 26/02/2006 00:39 Page 100

TUTORIAL/ATIVO FIXO

TUTORIAL/ATIVO FIXO

O RAILS FAZ MAIS RÁPIDO ACELERE O DESENVOLVIMENTO, CRIANDO UM APLICATIVO DE CONTROLE DE PATRIMÔNIO COM O RUBY ON RAILS POR TONI CAVALHEIRO

cativo simples de gerenciamento de ativo fixo com banco de dados SQLite 3. As instruções são para Windows XP. Mas os programas usados têm também versões para Linux.

1

. INSTALAÇÃO DO RUBY Faça o download do instalador do Ruby on Rails no endereço www. info.abril.com.br/download/4357. shtml. Inicie a instalação e mantenha os padrões sugeridos pelo programa. Selecione todos os itens opcionais. Mantenha também o diretório padrão, que é o C:\Ruby. Para testar o software, abra o Prompt de Comando do Windows e digite esse comando (tecle Enter depois de cada comando): ruby –v Deve aparecer uma mensagem com a versão do Ruby.

como o MySQL. Baixe o SQLite 3 no endereço www.info.abril.com.br/ download/4358.shtml. Depois de descompactar o arquivo zip, você terá um programa executável e uma DLL. Como o SQLite não tem instalador, tudo o que você tem a fazer é copiar esses dois arquivos para o diretório Windows\System32.

3. RUBY ON RAILS Agora, vamos instalar o Rails e a biblioteca que faz o acesso ao SQLite 3. O micro deve estar conectado à internet para que o instalador faça o download de componentes adicionais. No Prompt de Comando do Windows, digite: gem install rails O passo seguinte é instalar o suporte ao SQLite 3. Digite: gem install sqlite3-ruby

4

Aplicativo pronto: sistema de Ativo Fixo disponível na intranet da empresa

Ruby On Rails vem dando o que falar entre os desenvolvedores para a web. Programadores experientes dizem que essa ferramenta permite acelerar o desenvolvimento em até dez vezes em comparação com linguagens mais tradicionais. Mesmo que haja exagero nessa afirmação, basta trabalhar um

O

100 < C O L E Ç Ã O I N F O

pouco com o Rails para perceber que operações corriqueiras em bancos de dados podem ser implementadas com incrível rapidez. O Rails é uma biblioteca, baseada na linguagem Ruby, que permite a criação de aplicações para a web associadas a bancos de dados. Para mostrar como se desenvolve usando o Ruby on Rails, vamos criar um apli-

Instalação: marque todos os opcionais

2

. BANCO DE DADOS Vamos prosseguir instalando o SQLite. Esse gerenciador de bancos compacto é útil para testes e desenvolvimento. Para uso em produção, poderia ser escolhido outro software,

. AMBIENTE DA APLICAÇÃO Na hora de criar uma aplicação, é preciso separar scripts, logs, configurações e outros componentes numa estrutura de diretórios. O Rails faz isso de forma automática. No Prompt de Comando, digite: rails c:\data\web\ativofixo\ Abra o Explorer e navegue até a pasta ativofixo que definimos. Você verá a estrutura de diretórios criada pelo Rails. O diretório app é o local onde ficarão os arquivos do programa. O script é a pasta que contém os arquivos de apoio. Os diretórios helpers e views servem, respectivamente, para armazenar C O L E Ç Ã O I N F O > 101

100_RAILS 26/02/2006 00:39 Page 100

TUTORIAL/ATIVO FIXO

TUTORIAL/ATIVO FIXO

O RAILS FAZ MAIS RÁPIDO ACELERE O DESENVOLVIMENTO, CRIANDO UM APLICATIVO DE CONTROLE DE PATRIMÔNIO COM O RUBY ON RAILS POR TONI CAVALHEIRO

cativo simples de gerenciamento de ativo fixo com banco de dados SQLite 3. As instruções são para Windows XP. Mas os programas usados têm também versões para Linux.

1

. INSTALAÇÃO DO RUBY Faça o download do instalador do Ruby on Rails no endereço www. info.abril.com.br/download/4357. shtml. Inicie a instalação e mantenha os padrões sugeridos pelo programa. Selecione todos os itens opcionais. Mantenha também o diretório padrão, que é o C:\Ruby. Para testar o software, abra o Prompt de Comando do Windows e digite esse comando (tecle Enter depois de cada comando): ruby –v Deve aparecer uma mensagem com a versão do Ruby.

como o MySQL. Baixe o SQLite 3 no endereço www.info.abril.com.br/ download/4358.shtml. Depois de descompactar o arquivo zip, você terá um programa executável e uma DLL. Como o SQLite não tem instalador, tudo o que você tem a fazer é copiar esses dois arquivos para o diretório Windows\System32.

3. RUBY ON RAILS Agora, vamos instalar o Rails e a biblioteca que faz o acesso ao SQLite 3. O micro deve estar conectado à internet para que o instalador faça o download de componentes adicionais. No Prompt de Comando do Windows, digite: gem install rails O passo seguinte é instalar o suporte ao SQLite 3. Digite: gem install sqlite3-ruby

4

Aplicativo pronto: sistema de Ativo Fixo disponível na intranet da empresa

Ruby On Rails vem dando o que falar entre os desenvolvedores para a web. Programadores experientes dizem que essa ferramenta permite acelerar o desenvolvimento em até dez vezes em comparação com linguagens mais tradicionais. Mesmo que haja exagero nessa afirmação, basta trabalhar um

O

100 < C O L E Ç Ã O I N F O

pouco com o Rails para perceber que operações corriqueiras em bancos de dados podem ser implementadas com incrível rapidez. O Rails é uma biblioteca, baseada na linguagem Ruby, que permite a criação de aplicações para a web associadas a bancos de dados. Para mostrar como se desenvolve usando o Ruby on Rails, vamos criar um apli-

Instalação: marque todos os opcionais

2

. BANCO DE DADOS Vamos prosseguir instalando o SQLite. Esse gerenciador de bancos compacto é útil para testes e desenvolvimento. Para uso em produção, poderia ser escolhido outro software,

. AMBIENTE DA APLICAÇÃO Na hora de criar uma aplicação, é preciso separar scripts, logs, configurações e outros componentes numa estrutura de diretórios. O Rails faz isso de forma automática. No Prompt de Comando, digite: rails c:\data\web\ativofixo\ Abra o Explorer e navegue até a pasta ativofixo que definimos. Você verá a estrutura de diretórios criada pelo Rails. O diretório app é o local onde ficarão os arquivos do programa. O script é a pasta que contém os arquivos de apoio. Os diretórios helpers e views servem, respectivamente, para armazenar C O L E Ç Ã O I N F O > 101

100_RAILS 26/02/2006 00:40 Page 102

TUTORIAL/ATIVO FIXO

Tela inicial: o Ruby instalado e pronto para usar

funções auxiliares e layouts para o site. Folhas de estilos CSS ficam na pasta public\stylesheets.

5. SERVIDOR WEB O Ruby on Rails inclui um minisservidor web que pode ser usado no desenvolvimento. Para não conflitar com outros servidores que você possa ter na máquina (como Apache ou IIS), ele vem configurado para funcionar na porta 3000. No Prompt de Comando, digite os seguintes comandos para rodá-lo: cd c:\data\web\ativofixo ruby script\server Abra o browser e acesse o seguinte endereço: http://localhost:3000 Você deve ver uma página com o título Welcome Aboard e informações sobre o Ruby on Rails.

6

. ATIVO FIXO Nos passos anteriores, especificamos uma aplicação chamada Ativo Fixo. É uma versão simples do sistema de controle patrimonial de uma empresa. Depois que ela estiver pronta, você pode adicionar outros 102 < C O L E Ç Ã O I N F O

TUTORIAL/ATIVO FIXO

campos e recursos. Essa aplicação usa as quatro operações básicas de um banco de dados: consulta, edição, inclusão e exclusão. A primeira coisa a fazer é criar o banco de dados no SQLite 3. No Prompt de Comando do Windows, digite: sqlite3 db\ativodev.db Depois que o prompt do SQLite 3 aparecer, digite: CREATE TABLE afs (id INTEGER NOT NULL PRIMARY KEY, descricao VARCHAR(100) NOT NULL, valor_aquisicao INT NOT NULL, fornecedor VARCHAR(255) NULL, comprador VARCHAR(30) NULL, tempo_depreciacao INT NULL);

7

. ACESSO AOS DADOS O próximo passo é configurar o Rails para acessar esse banco de dados. No diretório ativofixo, encontre a pasta config e, dentro dela, o arquivo database.yml. Abra-o num editor de textos e modifique suas configurações para o seguinte: development: adapter:sqlite3 dbfile: db\ativodev.db test: adapter:sqlite3 dbfile: db\ativotest.db production: adapter:sqlite3 dbfile: db\ativoprod.db Todo o restante do arquivo pode ser apagado, já que não terá utilidade em nosso tutorial. Na verdade, só usaremos o ambiente development,

uma vez que os dois outros bancos não foram criados ainda. Mas é bom deixar o arquivo correto.

8

. MODELO E CONTROLADOR No Ruby on Rails, cada tabela é descrita por um modelo. Vamos criar um modelo chamado af (iniciais de Ativo Fixo) que refletirá a tabela que acabamos de definir. No Prompt de Comando do Windows, digite: ruby script\generate model af Em seguida, vamos criar um controlador para o modelo af. O controlador é o módulo básico dos aplicativos do Rails. Este é o comando: ruby script\generate controller afs Note que nosso modelo chamase af, mas o controlador é chamado afs. Isso ocorre porque o Ruby on Rails trabalha com a língua inglesa, colocando as palavras no plural. Se você criar um modelo Person, por exemplo, ele irá procurar por uma tabela chamada People, plural de Person em inglês.

9

. SCAFFOLDING O último passo antes de colocar sua aplicação para funcionar é associar um recurso chamado scaffold ao controlador. Ele adiciona funções de visualização, edição, inclusão e exclusão de dados. Localize o arquivo afs_controller.rd. Abra-o num editor de textos e adicione o comando scaffold, assim: class AfsController < ApplicationController

scaffold :af end Vamos reiniciar o servidor. Clique no Prompt de Comando para mantê-lo em foco no Windows e tecle Ctrl+C para parar o servidor. Em seguida, reinicie-o com o comando: ruby script\server Abra o navegador e vá a este endereço: http://localhost:3000 Você verá uma aplicação com recursos de consulta, edição, exclusão e inclusão. Note que usamos uma única linha de código (scaffold :af) para criá-la.

10

. PERSONALIZAÇÃO Vejamos como personalizar o layout da aplicação. Esse processo é feito por meio de dois arquivos rhtml, um de visualização (conhecido por view) e outro de layout. Além disso, é preciso fazer algumas modificações no controlador principal para carregar os dados para uma variável temporária. Vamos começar personalizando o controlador. Abra o arquivo afs num editor de texto e modifique-o para que fique assim:

Arquivo list.rhtml: código modificado no editor de texto

C O L E Ç Ã O I N F O > 103

100_RAILS 26/02/2006 00:40 Page 102

TUTORIAL/ATIVO FIXO

Tela inicial: o Ruby instalado e pronto para usar

funções auxiliares e layouts para o site. Folhas de estilos CSS ficam na pasta public\stylesheets.

5. SERVIDOR WEB O Ruby on Rails inclui um minisservidor web que pode ser usado no desenvolvimento. Para não conflitar com outros servidores que você possa ter na máquina (como Apache ou IIS), ele vem configurado para funcionar na porta 3000. No Prompt de Comando, digite os seguintes comandos para rodá-lo: cd c:\data\web\ativofixo ruby script\server Abra o browser e acesse o seguinte endereço: http://localhost:3000 Você deve ver uma página com o título Welcome Aboard e informações sobre o Ruby on Rails.

6

. ATIVO FIXO Nos passos anteriores, especificamos uma aplicação chamada Ativo Fixo. É uma versão simples do sistema de controle patrimonial de uma empresa. Depois que ela estiver pronta, você pode adicionar outros 102 < C O L E Ç Ã O I N F O

TUTORIAL/ATIVO FIXO

campos e recursos. Essa aplicação usa as quatro operações básicas de um banco de dados: consulta, edição, inclusão e exclusão. A primeira coisa a fazer é criar o banco de dados no SQLite 3. No Prompt de Comando do Windows, digite: sqlite3 db\ativodev.db Depois que o prompt do SQLite 3 aparecer, digite: CREATE TABLE afs (id INTEGER NOT NULL PRIMARY KEY, descricao VARCHAR(100) NOT NULL, valor_aquisicao INT NOT NULL, fornecedor VARCHAR(255) NULL, comprador VARCHAR(30) NULL, tempo_depreciacao INT NULL);

7

. ACESSO AOS DADOS O próximo passo é configurar o Rails para acessar esse banco de dados. No diretório ativofixo, encontre a pasta config e, dentro dela, o arquivo database.yml. Abra-o num editor de textos e modifique suas configurações para o seguinte: development: adapter:sqlite3 dbfile: db\ativodev.db test: adapter:sqlite3 dbfile: db\ativotest.db production: adapter:sqlite3 dbfile: db\ativoprod.db Todo o restante do arquivo pode ser apagado, já que não terá utilidade em nosso tutorial. Na verdade, só usaremos o ambiente development,

uma vez que os dois outros bancos não foram criados ainda. Mas é bom deixar o arquivo correto.

8

. MODELO E CONTROLADOR No Ruby on Rails, cada tabela é descrita por um modelo. Vamos criar um modelo chamado af (iniciais de Ativo Fixo) que refletirá a tabela que acabamos de definir. No Prompt de Comando do Windows, digite: ruby script\generate model af Em seguida, vamos criar um controlador para o modelo af. O controlador é o módulo básico dos aplicativos do Rails. Este é o comando: ruby script\generate controller afs Note que nosso modelo chamase af, mas o controlador é chamado afs. Isso ocorre porque o Ruby on Rails trabalha com a língua inglesa, colocando as palavras no plural. Se você criar um modelo Person, por exemplo, ele irá procurar por uma tabela chamada People, plural de Person em inglês.

9

. SCAFFOLDING O último passo antes de colocar sua aplicação para funcionar é associar um recurso chamado scaffold ao controlador. Ele adiciona funções de visualização, edição, inclusão e exclusão de dados. Localize o arquivo afs_controller.rd. Abra-o num editor de textos e adicione o comando scaffold, assim: class AfsController < ApplicationController

scaffold :af end Vamos reiniciar o servidor. Clique no Prompt de Comando para mantê-lo em foco no Windows e tecle Ctrl+C para parar o servidor. Em seguida, reinicie-o com o comando: ruby script\server Abra o navegador e vá a este endereço: http://localhost:3000 Você verá uma aplicação com recursos de consulta, edição, exclusão e inclusão. Note que usamos uma única linha de código (scaffold :af) para criá-la.

10

. PERSONALIZAÇÃO Vejamos como personalizar o layout da aplicação. Esse processo é feito por meio de dois arquivos rhtml, um de visualização (conhecido por view) e outro de layout. Além disso, é preciso fazer algumas modificações no controlador principal para carregar os dados para uma variável temporária. Vamos começar personalizando o controlador. Abra o arquivo afs num editor de texto e modifique-o para que fique assim:

Arquivo list.rhtml: código modificado no editor de texto

C O L E Ç Ã O I N F O > 103

100_RAILS 26/02/2006 00:41 Page 104

TUTORIAL/ATIVO FIXO

class AfsController < ApplicationController scaffold :af layout “default” def list @entries = Af.find_all nil, “descricao” end end

11. LAYOUT Agora, na pasta app\views\layouts, crie um arquivo de texto chamado default.rhtml. Esse arquivo deve ter o seguinte conteúdo: Ativo Fixo Lista de patrimônio

12. VISUALIZAÇÃO Vamos, agora, criar a visualização, o código-fonte que irá controlar a exibição dos dados. É aqui que definimos a aparência do site. Vá para a pasta \app\views\afs\ e crie um ar-

Aplicativo no ar: ainda sem a formatação definitiva

104 < C O L E Ç Ã O I N F O

quivo chamado list.rhtml. Ele recebe esse nome de acordo com a definição no controlador, logo depois do comando def. Confira o código:
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF