Quando começamos o desenvolvimento de um sistema, algumas perguntas que não querem se calar: “Quais regras de negócio ficarão no banco de dados? Quais devem ficar na camada servidora? E quais ficariam na camada cliente?”. Responder a essas três perguntas não é fácil. Se você coloca todas as regras no banco, corre o risco de sobrecarregá-lo. O mesmo vale para a aplicação servidora, seja ela cliente/servidor ou multicamadas. E no cliente? Devo colocar alguma regra?

Existem algumas sugestões básicas: quando você desenvolve uma aplicação Web, as regras mais simples você utiliza JavaScript para checar/validar no próprio navegador, não é mesmo? Campos obrigatórios, validação de datas, verificação de CPF e outras.

E as outras? Como decidir quais ficarão na aplicação servidora e quais ficarão no banco? Eu uso a seguinte lógica: se a regra envolve atualização em uma ou duas tabelas e com isso incluir/alterar um ou dois registros, prefiro deixá-la na camada da aplicação, pois muito provavelmente serão enviados um ou dois comandos SQL para o banco pela rede.

Agora, se a regra atualiza mais de duas tabelas e com isso temos que incluir/alterar vários registros, então é forte candidata a ficar no banco. Há também aquelas regras que mudam com muita freqüência. Prefira deixá-las no banco.

Obviamente que isso é muito relativo. Por exemplo: se o cliente tem um servidor de banco de dados dedicado, você pode colocar mais regras no banco, pois a máquina vai agüentar a carga de serviço. O melhor caminho mesmo é testar.

E é justamente isso que faremos. Partindo de um sistema semi pronto, com uma solução, digamos, pouco aconselhável de uma regra de negócio, vamos primeiramente colocar essa regra de maneira mais segura na própria aplicação. Depois vamos colocar a mesma regra no banco e assim poderemos analisar qual a melhor solução. Utilizaremos Delphi com o banco de dados Firebird. Sinta-se a vontade em utilizar outro banco de dados. Aliás, estou testando a versão Express do DB2 da IBM e estou gostando muito.

[nota]Nota: A criação de banco de dados no Firebird, bem como detalhes sobre configurações de conexões dbExpress, estão fora do escopo deste artigo. Você pode encontrar muitos artigos no portal, acessando www.clubedelphi.net/portal.[/nota]

O sistema de exemplo

A aplicação CDEstoque (acho que já vi esse nome em algum lugar) é bastante simples. O modelo de dados está na Figura 1.

Modelo de Dados do CDEstoque
Figura 1. Modelo de Dados do CDEstoque

Não é a intenção aqui desenvolver uma aplicação completa, passo a passo. Por esse motivo algumas tabelas estão resumidas, com poucos campos, especialmente as tabelas de fornecedores e de clientes, e outras nem estão no modelo, como vendedores.

...
Quer ler esse conteúdo completo? Tenha acesso completo