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:
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!