AGROSOFT 99
II Congresso da SBI-Agro

Guia de Software Agropecuário: Uma Aplicação de Banco de Dados sobre a Internet em Ambiente Linux


Autores

Carlos Alberto de Carvalho
Email: calberto@agrosoft.softex.br
Vínculo: Núcleo Softex - Agrosoft / CNPq
Endereço: Caixa Postal 20.037 / 36.100 - Juiz de Fora - MG
Telefone: (32) 229-3427

Paulo Roberto de Castro Villela
Email: villela@staff.uiuc.edu
Vínculo: Universidade Federal de Juiz de Fora / University of Illinois at Urbana-Champaign
Endereço: 1101 W. Peabody Dr. - Urbana, IL 61801 - EUA
Telefone: 55(32)229-3427 / 1(217)333-7425

Resumo

O guia de software agropecuário publicado pelo Agrosoft em www.agrosoft.com/guia é uma aplicação de banco de dados sobre a Internet. Através dele são colocados à disposição do público uma série de informações sobre softwares, mantidas diretamente pelas próprias fontes de informação. Este artigo aborda alguns aspectos básicos da implementação dessa aplicação e mostra onde se pode obter (gratuitamente) todo o software utilizado: o sistema operacional Linux, o gerenciador de banco de dados MySQL, o servidor web Apache e a linguagem de programação da interface web PHP3. Alguns exemplos simples de códigos PHP3 e MySQL são mostrados para exemplificar como os dados podem ser extraídos do banco de dados e colocados, dinamicamente, numa página web.

Abstract

The Agricultural Software Catalog published by Agrosoft at www.agrosoft.com/guia is a data base application over Internet. People can get in it several informations about agricultural software developed by companies and institutions. This paper reports some basic issues concerning the construction of this application and shows where one can get (free) all software used: operating system Linux, database manager MySQL, web server Apache and web database interface language PHP3. Some simple PHP3 and MySQL codes are showed to exemplify how data can be got in a database and put, dynamically, in a web page.

Palavras chaves

Software agropecuário. Internet. Banco de Dados. Linux.

1. INTRODUÇÃO

O Guia Agrosoft Online é uma publicação de títulos de software agropecuário acessível através da Internet. O Guia foi cancebido e é mantido pelo Agrosoft e está disponível para acesso público através do endereço www.agrosoft.com/guia. Atualmente o Guia é uma aplicação de banco de dados sobre a Internet e através dele, são colocados à disposição do público, uma série de informações sobre títulos de software agropecuário. Tais informações são mantidas diretamente pelas fontes dos dados (empresas e instituições), que podem acessar o banco de dados através de uma interface especial e restrita às fontes cadastradas. Estes dois tipos de usuários, público e fontes, interagem continua e dinamicamente através de um banco de dados conectado à Internet.

O Guia está atualmente implementado em plataforma Linux, utilizando um conjunto de softwares, distribuídos gratuitamente ou a custo muito reduzido, que permitem integrar a versatilidade oferecida pelos gerenciadores de banco de dados com a facilidade de uso e universalidade de acesso da Internet.

Evolução Histórica

A primeira fase do Guia funcionou de uma forma tradicional, isto é, bastante dependente da intervenção de um webmaster. Sinteticamente o processo se dava da seguinte forma: as fontes enviavam por carta, fax ou correio eletrônico, as informações sobre os softwares que desenvolviam e comercializavam. Estas mensagens eram encaminhadas para o webmaster do Guia, que era o responsável pela construção e publicação das páginas com estes dados em servidores web. Caso a fonte desejasse fazer alguma alteração em suas informações, ela deveria novamente entrar em contato com o Guia para que o webmaster providenciasse tais modificações. O processo era bastante moroso e dependente de uma série de intervenções humanas que o tornava muito susceptível a falhas.

Com a incorporação de novas metodologias e tecnologias, o Guia Agrosoft Online deixou de ser um conjunto de páginas web previamente construídas e passou a ser uma aplicação de banco de dados integrado à Internet. As páginas web não mais existem fisicamente no servidor web, elas são geradas dinamicamente pelo servidor no momento em que alguém do público faz uma consulta no banco de dados, pela Internet. As fontes têm acesso direto ao banco de dados, através de uma interface privativa da aplicação, onde se dispõe de funções de inclusão, alteração e exclusão sobre o banco de dados. Com isto, as fontes têm autonomia para modificar seus dados sem necessitar da intervenção do webmaster e o público tem um serviço de mais qualidade. 

 

2. SOFTWARES UTILIZADOS

Basicamente, colocar disponível um banco de dados na Internet envolve: (1) um sistema operacional de servidor, isto é, um sistema operacional com suporte para Internet e gerenciamento de múltiplos usuários ao mesmo tempo; (2) um gerenciador de banco de dados, isto é, um software de banco de dados multiusuário, com suporte a grandes bases de dados; (3) um servidor web; e (4) uma interface de programação para acessar a base de dados e mostrar estes dados em páginas web.

A Tabela 1 mostra os softwares utilizados na montagem do Guia Agrosoft Online com os respectivos endereços onde podem ser obtidos gratuitamente na Internet. 

APLICAÇÃO SOFTWARE REFERÊNCIA
Sistema operacional Linux www.linux.org
Gerenciador de banco de dados MySQL www.tcx.se
Servidor web Apache www.apache.org
Interface de programação PHP3 www.php.net

Tabela 1: Aplicações, títulos de software e referências

O ambiente Linux é muito interessante para o desenvolvimento de aplicações de banco de dados e web em geral e foi portanto escolhido como o software básico para o desenvolvimento do Guia Agrosoft. Entre as vantagens de se optar por este ambiente, está o fato de que os softwares utilizados estão sob as regras do Free Software [ http://www.gnu.org ]. Isto significa que seus códigos fonte são de domínio público e são fornecidos gratuitamente.

Como sistema operacional, o Linux mostra-se estável e robusto, podendo ser rodado em equipamentos mais simples do que os exigidos por outros sistemas operacionais. Sua estrutura nativa incorpora serviços necessários para a Internet, como o protocolo TCP/IP e ainda conta com freqüentes contribuições de atualização e correção de erros de vários programadores espalhados pelo mundo.

Como a aplicação de banco de dados é acionada pelos web browsers do público, a interligação da interface de desenvolvimento em linguagem PHP3 com o servidor web Apache é fundamental. A linguagem PHP3 é uma extensão da linguagem HTML e seu interpretador está instalado no servidor web. Desta maneira, o servidor web passa a aceitar páginas web com terminação .php3. A linguagem PHP3 é muito similar à linguagem C, possuindo as estruturas básicas e construtores de linguagem tais como: o desvio condicional (if-then-else) e a repetição (for e while). Com isto, as aplicações web são desenvolvidas como páginas HTML com a extensão PHP3 que o servidor web irá interpretar, buscando as informações no banco de dados e montando dinamicamente as páginas web resultantes de consultas feitas pelo público.

Uma das peças mais importantes da aplicação é o software de banco de dados. O software MySQL é um gerenciador de banco de dados relacional, obedecendo ao padrão SQL, linguagem universal para banco de dados. O MySQL tem sua natureza vinculada à Internet, permitindo o seu gerenciamento e disponibilização de informações através de conexões TCP/IP. Além disso, possui um sistema de controle de acesso bem organizado. Para se estabelecer uma conexão com o MySQL, ele verifica o usuário, sua senha e de que ponto da Internet está vindo o pedido de abertura da base de dados. Com base nestas informações, ele concede (ou não) ao usuário o direito de ter acesso à base.

 

3. INTEGRAÇÃO

A integração do sistema operacional Linux, do gerenciador de banco de dados MySQL, do servidor web Apache e da interface de programação PHP3 é o ponto crucial para o desenvolvimento desse tipo de aplicação web.

Na camada mais interna, situa-se o sistema operacional Linux, conectado à Internet. A instalação e configuração do gerenciador de banco de dados MySQL é feita neste ambiente e questões de segurança tais como a política de acesso ao banco de dados, devem ser ajustadas logo após a sua instalação. A Figura 1 ilustra o esquema de integração de software.

Em seguida deve ser feita a integração do servidor web Apache com a interface de programação da linguagem PHP3. De posse dos código fontes de ambos, eles são compilados como um único software. O resultado é um servidor web que interpreta a linguagem PHP3.

A vantagem de se ter os códigos fonte destes softwares é que ao compilá-los, carregam-se apenas os suportes necessários para sua aplicação, tornando-os mais rápidos. No caso do Guia Agrosoft Online, por exemplo, utilizamos apenas o suporte ao MySQL.

Os passos técnicos para a instalação e configuração destes softwares estão descritos em seus manuais, que podem ser obtidos nas referências da Tabela 1, e também são amplamente debatidos em listas de discussão específicas.

 

4. DESENVOLVIMENTO DA APLICAÇÃO

Modelagem do Banco de Dados

A modelagem da base de dados do Guia Agrosoft obedece ao Modelo de Entidades e Relacionamentos (MER) (Yourdon, 1988). As duas tabelas mais importantes da base de dados são Empresas e Produtos, de tal forma que uma empresa pode ter mais de um produto (relacionamento 1 para N):

  • Empresas: informações das empresas, como: nome, contato, endereço.
  • Produtos: dados relativos ao software como: descrição, categoria, preço.
  • Esta modelagem, apesar de simples, é suficiente para a geração do Guia Agrosoft. Nada impede que ela possa ser enriquecida. Por exemplo, imaginar que um software pode ser desenvolvido por mais de uma empresa. (relacionamento N para N).

    A criação da estrutura das tabelas é realizada pelo MySQL, através de comandos da linguagem SQL. Por exemplo, a criação da tabela EMPRESAS seria feita através de uma instrução do tipo:

    mysql > CREATE TABLE empresas (codigo INT, nome CHAR(20), endereco CHAR(40));

    Desenvolvimento da Interface Web

    A interface web é um conjunto de páginas escritas em PHP3. A aplicação utiliza as estruturas da programação HTML tradicional com a extensão PHP3. Por exemplo, através dos formulários, é feita a captação de dados nas caixas de texto, caixas de seleção, checkboxes, etc. e transmitidos para a servidor de banco de dados. Este por sua vez retorna uma página web que é construída no momento em que se interage com o banco de dados.

    O código típico PHP3 é muito similiar ao código HTML padrão que utiliza estruturas chamadas TAGS tais como: <html>, <body>, <b>. O PHP3 utiliza-se de uma TAG especial: <? ... código PHP3 ... ?>. Isto indica para o servidor web que vai começar uma sequência de código escrita em PHP3 e este código pode assim conviver com as demais TAGS do HTML sem maiores dificuldades. Por exemplo, o trecho de código a seguir produz o resultado mostrado na Figura 2.

    <html>
    <title>Teste de PHP3</title>
    <body>
    <h1> Teste de PHP3</h1>
    <?
    $parcela1 = 20;
    $parcela2 = 3;
    $total = $parcela1 + $parcela2;
    echo("A soma de $parcela1 e $parcela2 é $total");
    ?>
    </body>
    </html>

    É importante frisar que quando se pede para visualizar o código fonte no browser de um usuário qualquer, ele não irá mostrar as tags do PHP3 e sim o código da página gerada, dinamicamente, em código HTML padrão.

    Acesso ao Banco de Dados

    O código PHP3 de acesso a banco de dados pode ser descrito em três etapas: 1) conexão ao banco de dados; 2) envio do comando SQL; e 3) recuperação dos dados do comando SQL.

    Conexão ao banco de dados

    Esta chamada permite que se estabeleça uma conexão entre a aplicação web e o banco de dados. Nesta chamada deve ser indicado o endereço IP do computador que mantém o MySQL, um usuário e uma senha, que serão utilizados para conceder ou não acesso à base de dados.

    A função MYSQL_CONNECT() realiza a conexão:

    <html>
    <body>
    <h1>Conexão</h1>
    <?
    $login="fulano";
    $senha="senhadofulano";
    if (mysql_connect("192.168.0.1",$login,$senha) < 1):
    echo("Conexão negada. Login e/ou senha inválidos." );
    mysql_close();
    else:
    echo("Conexão efetuada com sucesso!");
    endif;
    ?>
    </body>
    </html>

    Envio do comando SQL

    Uma vez conectado, pode-se enviar comandos SQL para o servidor de banco de dados. Neste ponto, o domínio do SQL é indispensável. É necessário utilizar as funções SELECT (procurar), INSERT INTO (incluir), DELETE FROM (apagar) e UPDATE (alterar) da linguagem SQL para manipular a base de dados. A função MYSQL() envia para o servidor de banco de dados o comando SQL.

    <html>
    <body>
    <h1>Enviando consulta para o servidor de banco de dados</h1>
    <?
    $login="fulano";
    $senha="senhadofulano";
    mysql_connect("192.168.0.1",$login,$senha);
    $procuraregistros = "SELECT nome, telefone FROM tabela";
    $nomedobancodedados = "meubanco";
    $resultado = mysql($nomedobancodedados ,$procuraregistros);
    ?>
    </body>
    </html>

    A variável $resultado é uma matriz que recebe os valores que resultam da consulta $procuraregistros. Ela será utilizada na próxima etapa para recuperar os dados.

    Recuperação dos dados do comando SQL

    Neste ponto, o domínio PHP3 volta a ser importante, pois os valores que estão armazenados na variável matricial $resultado devem ser apresentados na página web para que o usuário os visualize.

    Basicamente, uma estrutura de malha (while) lê os dados da matriz $resultado e apresenta-os na tela.

    As funções MYSQL_NUMROWS() e MYSQL_RESULT() trabalham em conjunto, recuperando a quantidade registros e o valor de cada campo, respectivamente:

    <html>
    <body>
    <h1>Recuperando dados</h1>
    <?
    $login="fulano";
    $senha="senhadofulano";
    mysql_connect("192.168.0.1",$login,$senha);
    $procuraregistros = "SELECT nome, telefone FROM tabela";
    $nomedobancodedados = "meubanco";
    $resultado = mysql($nomedobancodedados ,$procuraregistros);
    $numregistros = mysql_numrows($resultado);
    $contador = 0;
    while ($contador < $numregistros):
    $nome =mysql_result($resultado , $cont,"nome");
    $telefone =mysql_result($resultado ,$cont,"telefone");
    echo ("$nome - $telefone");
    $cont++;
    endwhile;
    ?>
    </body>
    </html>

     

    5. CONCLUSÕES

    O Guia Agrosoft Online é uma aplicação que abre um campo de pesquisa e desenvolvimento muito interessante. São aplicações que podem funcionar sobre a Internet, com interação de várias pessoas, espalhadas geograficamente, trabalhando em grupo para colocar as informações disponíveis, utilizando-se qualquer tipo de computador, em qualquer lugar do mundo. Aplicações mais simples tais como agendas de compromissos, catálogos de produtos ou de pessoal, etc. podem também ser desenvolvidas para rodar em Intranets, em redes locais, utilizando-se a mesma tecnologia descrita neste artigo.

    A similaridade do código PHP3 com a linguagem C e a utilização de comandos SQL tornam o desenvolvimento destas aplicações web (veja alguns exemplos em www.php.net/projects.php3) menos árdua, pois estes dois padrões de linguagens são universalmente conhecidos e disseminados entre os desenvolvedores. Alguns geradores automáticos de código PHP3 começam a surgir mas são ainda tímidos se comparados às ferramentas de programação visual tais como o Borland Delphi ou o Visual Basic.

     

    6. REFERÊNCIAS

  • Yourdon, C. (1988) Análise Estruturada Moderna. Ed. Campus, São Paulo.