No post passado, falei sobre as modificações que foram feitas na minha Classe de Conexão para Múltiplos Bancos de Dados, descrevendo as novas propriedades e novos métodos.

Estas modificações foram feitas com a intenção de simplificar ainda mais a construção de aplicativos em .NET, principalmente Web Applications (que é o tipo de aplicação que faço com mais frequência). A versão anterior focava mais a parte de reaproveitamento de código para a execução das instruções SQL e conexão com Banco de dados proprieamente ditas.

O foco destas modificações é automatizar a atribuição das propriedades de uma classe na interface de usuário, além de melhorias na automação de construção de instruções SQL e afins.

Para demonstrar este novo “poder” da nova Classe de Conexão, construiremos um simples Personal Information Manager (PIM), mais conhecido como Agenda de Contatos, com interface Web e utilizando o banco de dados Firebird 2.0, e usaremos as rotinas da Classe de Conexão para fazer as operações necessárias.

Dividiremos a construção do Simple PIM nas seguintes postagens:

  • Introdução e Modelagem da Base de Dados (este post)
  • Estrutura da Aplicação e Construção da Biblioteca de Classes
  • Construção (Design e Codificação) da Interface Web
  • Conclusões

Esta aplicação não é nada se comparada a muitos downloads de PIM que temos Internet à fora, ela foi construída unicamente para fins didáticos, para demonstração dos novos métodos da nova Classe de Conexão, te dando uma base de como utilizá-la em seus projetos :-). Portanto, se acharem o design da interface “tosco” demais, não liguem… o importante aí é o código da aplicação e os conceitos que iremos utilizar ;-).

Estrutura de Dados do Simple PIM

Nosso Personal Information Manager consistirá de um cadastro simples de dados pessoais, com múltiplos endereços e formas de contato. Para que isso seja possível, modelei a seguinte estrutura de tabelas:

Diagrama de Banco de Dados

Como você pode ver, são 4 tabelas:

  • CONTATOS: Armazenas as informações básicas de cada contato;
  • ENDERECOS: Armazena os endereços de cada contato;
  • FORMA_CONTATO: Armazenas as formas de contato de cada pessoa (exemplos: telefone residencial, comercial, celular, msn, skype, etc)
  • TP_FORMA_CONTATO: Cadastro básico, armazena os tipos de forma de contato a ser utilizado pela tabela FORMA_CONTATO (ex: telefone residencial, comercial, etc).

Os campos ID de cada tabela são do tipo auto-incremento, sendo que o auto-incremento é implementado no Firebird com o auxílio de um generator e um trigger Before Insert.

Então temos, para cada tabela, um generator e um trigger associados, como no script abaixo, que demonstra esta estrutura para uma tabela:

create generator GEN_CONTATO_ID;
---
...
---
CREATE TRIGGER AI_CONTATOS_ID FOR CONTATOS ACTIVE
BEFORE INSERT POSITION 0
AS
BEGIN
	IF (NEW.ID IS NULL) THEN
	NEW.ID = GEN_ID(GEN_CONTATO_ID, 1);
END
^

Caso o programa seja portado para o SQL Server, implementamos os campos auto-incremento com o atributo IDENTITY, não sendo necessária a construção de uma trigger para esta função.

Com isso, fechamos a parte do Banco de Dados do Simple PIM!

Caso você já queira ir estudando o que vai vir pela frente, faça o download do projeto completo:

Projeto de Exemplo da Classe de Conexão – Simple PIM (263 kB)

Aguarde que no próximo post a brincadeira começa de verdade!