5.
Usando o Data Base
Boa parte dos sistemas em uso nas empresas faz uso de uma base de dados. O
Delphi fornece um gerenciador de banco de dados completo (Borland Database
Engine - BDE) capaz de atender facilmente grande parte destes sistemas.
Junto com o pacote do Delphi está o DataBase Desktop, que facilita muito a vida
do programador, permitindo criar e modificar à vontade os arquivos, índices e
referências.
Neste ponto, gostaria de ressaltar a importância de planejar o sistema de
arquivos que será utilizado antes de começar a criar arquivos no DataBase. Um
sistema pequeno e didático de 4 arquivos (ou Tables) como o que iremos criar,
pode até caber inteiro na nossa cabeça, mas na vida real, os sistemas são
sempre maiores e mais complexos. Uma ferramenta muito útil para navegar pelos
arquivos sem se perder é o DER - Diagrama de Entidade-Relacionamento. Através
dele podemos ver as relações entre os arquivos e entender suas dependências.
Na página seguinte é mostrado o DER do nossa aplicação.
Alias
Um conceito importante que deve ser dominado antes de continuarmos é o de
Alias. Pode ser considerado um apelido para um diretório. Você associa um nome
a um diretório e passa a se referir ao diretório por esse nome. Por exemplo:
suponha que enquanto você está desenvolvendo o sistema usa o diretório
C:\Fontes\Sist1\DB para colocar os arquivos do banco de dados do sistema. Em vez
de digitar a todo momento esse diretório quando criar uma referencia a um
arquivo, você pode associar o alias alSist1 para esse diretório. Mas diminuir
a digitação não é o principal benefício do alias. O principal é que depois
que a aplicação estiver pronta, certamente será instalada em outro diretório,
geralmente em outro micro e tendo um alias, basta modificar o diretório
associado para o novo diretório e nenhuma mudança será necessária no
sistema.
DataBase Desktop
Para
começar vamos dar uma boa olhada no DER da figura 3. Temos o cadastro de
clientes que armazena dados sobre os clientes. Da mesma maneira, o cadastro de
produtos. Para o cadastro de pedidos, existe um problema: Se o Pedido relacionar
diretamente o Cliente com o Produto, teremos uma relação de M para M (Muitos
para Muitos), por que um cliente pode pedir muitos produtos e um produto pode
fazer parte de muitos pedidos. Procuramos sempre evitar esse tipo de relação,
então incluímos mais uma relação: o Item de Pedido. Relacionando Pedidos com
Produtos através de Itens de Pedido, ficamos apenas com relações de 1 para M.
Um pedido pode ter muitos itens, mas um item só pode fazer parte de um pedido.
Da mesma maneira, um produto pode fazer parte de muitos itens, mas um item só
pode ter um produto associado.
Figura 3 - DER do sistema
Só mais um detalhe antes de ativar o Database Desktop. Cada arquivo de dados na
base de dados tem associado a ele vários arquivos necessários para a criação
de índices, verificação de referências, validação e etc. Portanto o número
total de arquivos na base de dados aumenta rapidamente conforme vamos
implementando novos cadastros. Por esse motivo, não é aconselhável deixar a
base de dados no mesmo diretório que os programas fontes. Debaixo do diretório
que você criou para o projeto, crie um subdiretório chamado DB. É nesse diretório
que vamos criar nossa base de dados.
Finalmente estamos prontos para ativar o DataBase Desktop. Depois de ativado,
nossa primeira tarefa é criar um aliás para nossa base de dados. Para isso
ative a opção File/Aliases no menú principal. O DataBase responde mostrando a
janela de diálogo para os aliases. Pressione o botão New para criar um novo e
em seguida digite alPedidos na caixa rotulada com DataBase Alias depois coloque
o caminho completo do diretório na caixa Path. A seguir pressione o botão OK e
pronto. Nosso alias está criado.
Outro conceito do DataBase é o Work Directory (Diretório de trabalho). Este é
o diretório default para o Desktop. Tudo que é feito no Desktop acontece nesse
diretório. Clique a opção do menú File/Working Directory e na caixa Aliases
escolha o alias que acabou de ser criado. Pressione Ok para confirmar.
Para começar a criar os arquivos, selecione a opção File/New/Table. Na janela
Table Type deixe a opção default (Paradox 5.0) e tecle Ok. Neste ponto o
DataBase abre o diálogo de estrutura de arquivo (o Database chama de Table -
Tabela). como aparece na figura 4.
Figura 4. Diálogo para criação de tabelas
Clientes
Vamos começar criando o arquivo de clientes. Use os valores da tabela abaixo
para definir os campos do arquivo de clientes:
Field
Name |
Type |
Size |
Key |
CodCli |
A |
6 |
* |
RzSocial |
A |
40 |
|
Endereco |
A |
40 |
|
Cidade |
A |
30 |
|
Cep |
A |
9 |
|
UF |
A |
2 |
|
Clique no campo CodCli e ative a opção Required Field. Isso fará com que a
digitação deste campo seja obrigatória e o BDE se engarregará de tomar os
devidos cuidados sem necessidade de intervenção. Isso é desejável já que
CodCli é a chave primária da tabela de Clientes.
Ao terminar pressione o botão Save As. O diálogo é fechado e aparece a janela
do arquivo criado. Podemos ver os nomes dos campos no topo das colunas, mas a
tabela ainda está vazia. Para acrescentar um registro, pressione o botão Edit
Data, é o botão mais a direita na barra de botões. Clique no campo CodCli do
registro 1 e comece a digitação. Para mudar de campo tecle Enter ou Tab.
Quando acabar, desligue o modo de edição pressionando novamente o botão Edit
Data.
Produtos
Para criar a tabela de produtos, use os dados abaixo. Não esqueça de ativar a
opção Required Field no campo CodProd.
Field
Name |
Type |
Size |
Key |
CodProd |
A |
6 |
* |
Descricao |
A |
30 |
|
PrecoUnit |
$ |
|
|
Pedidos
A tabela de pedidos requer alguns cuidados extras, porque depende da tabela de
clientes. Todo pedido deve pentencer a um cliente. Depois de criar os campos
para esta tabela, selecione na caixa Table Properties a opção Referential
Integrity e a seguir pressione Define. Agora voce deve relacionar um campo com
uma tabela, no caso, o campo CodCli com a tabela de Clientes. Para isso dê um
clique duplo em CodCli na lista à esquerda e outro na tabela de clientes que
aparece na lista à direita. Pressione Ok e digite irClientes como nome para a
relação. Esta operação torna a tabela de Pedidos oficialmente dependente da
tabela de Clientes no ponto de vista gerenciador de banco de dados - BDE e nós
podemos deixar esse controle por conta do BDE.
Field
Name |
Type |
Size |
Key |
CodPed |
A |
6 |
* |
CodCli |
A |
6 |
|
DtEmissao |
D |
|
|
Vendedor |
A |
12 |
|
Itens de Pedidos
Esta é a tabela mais dependente do sistema. Depende de pedidos e de produtos,
então devem ser criadas duas Referential integrity: uma relacionando o campo
CodPed com a tabela de pedidos, e outra relacionando o campo CodProd com a
tabela de Produtos. Note também que esta tabela tem chave dupla: os dois
primeiros campos compõe a chave primária, ou seja, para identificar um único
registro é preciso saber os dois campos.
Field
Name |
Type |
Size |
Key |
CodPed
|
A |
6 |
* |
NumItem |
S |
|
* |
CodProd |
A |
6 |
|
Quantidade |
N |
|
|
Lembrete
Não esqueça de definir pelo menos um registro em cada tabela. Esse registro
será útil mais adiante quando criarmos as janelas de cadastro. Quando definir
os campos que são chave numa tabela, deixe sempre ligada a opção Required
Field.