Coloca-se como de fundamental importância tanto a análise como a modelagem de dados para o processo de desenvolvimento de aplicações. Esses procedimentos garantem um maior controle das diversas etapas do projeto desde a definição das regras do negócio até a implementação e manutenção da aplicação como um todo. Existem no mercado, atualmente, diversas ferramentas para modelagem de dados, dentre as quais pode ser destacado o software ErWin.

O ErWin pode ser usado de uma forma simples e prática possibilitando uma melhor visualização, controle e documentação do que se tem no banco de dados. Através dos diversos recursos disponíveis (Figura 1) podemos “desenhar” o nosso banco de dados definindo as entidades de que compõe o modelo com seus respectivos atributos e relacionamentos, definir características dessas entidades tornando-as reais em um modelo físico ou em vários modelos físicos se for necessário o acesso a SGDB´s distintos. Podemos ainda criar, de forma automática, o modelo implementado num banco de dados ou gerar scripts para atualização de alterações efetuadas no modelo, “sincronizar” dois bancos de forma a garantir uma estrutura idêntica em ambos, e vários outros recursos.

figura
Figura 1. Tela inicial do ErWin

Na parte superior direita, observa-se uma barra de ferramentas com os principais objetos do ErWin, como mostrado na Figura 2, a seguir:

figura
Figura 2. Barra de ferramenta do ErWin
  • A seta é utilizada para desmarcar o objeto corrente em uso.
  • O primeiro objeto representa as entidades.
  • O segundo é utilizado para criar um subtipo de uma ou mais entidade já existentes.
  • O terceiro é utilizado para inserir textos no modelo, como comentário de entidades, relacionamento e outros.
  • O quarto é utilizado como auxílio para mudar os atributos de posição ou de entidade.
  • Os três últimos objetos são utilizados para relacionamentos, porém com formas diferentes.
  • O quinto possui cardinalidade um para um, definindo o campo de relacionamento como chave primária na tabela filha.
  • O sexto possui cardinalidade muitos para muitos.
  • O último objeto possui cardinalidade um para muitos e não define o campo de relacionamento como chave primária na tabela filha.

Alguns conceitos importantes

  1. Entidades - Entidade é o local onde ficam armazenadas as informações. Por exemplo, a Entidade CLIENTES pode guardar informações referentes aos clientes, e assim sucessivamente.
  2. Subtipos - Podem ser definidos como um espelho de uma ou mais entidades. Por exemplo, pode-se criar um subtipo chamado CLIENTES_RJ que contenha somente os clientes que moram no Rio de Janeiro, podendo ter ou não todos os atributos da Entidade CLIENTES.
  3. Atributos - Os atributos podem ser definidos como identificadores de cada informação contida na entidade. O Código do Cliente, por exemplo, é um atributo da Entidade CLIENTES.
  4. Relacionamentos - Relacionamentos são definidos como a ligação entre duas ou mais entidades.
  5. Cardinalidade - É o que caracteriza o relacionamento. Por exemplo: um pai pode ter mais de um filho, porém um filho só pode ter apenas um pai. Isso quer dizer que a cardinalidade define o comportamento do relacionamento, definindo-o como um para muitos, muitos para um ou até muitos para muitos.

Os tipos de modelo

  • Modelo Lógico - É o modelo de abstração do sistema. Neste, detalhes como qual banco de dados será usado, o tipo de campo, o tipo de hardware, entre outros aspectos não são relevantes. Aqui, somente as necessidades do processo são definidas, dando uma visão “global” do sistema. No Erwin, podemos ter uma visão da regra de negócio, ou seja, podemos planejar uma estrutura lógica para o banco de dados, onde são definidas as validações, as restrições da regra de negócio, a análise das entidades e dos atributos definidos para a aplicação como um todo.
  • Modelo Físico - É onde os detalhes são definidos. Serve como um espelho de tudo o que está no banco de dados, permitindo controlar características de tabelas e colunas (conhecidos no modelo lógico como Entidades e Atributos) de forma particular para o SGDB utilizado além de possibilitar a definição de Procedures, Triggers e outros processos.

Criando o modelo lógico

O tipo de modelo que está sendo visualizado encontra-se na Combo situada logo acima da barra de ferramentas, mostrada na Figura 1.

O modelo utilizado inicialmente será o modelo lógico, pois começando por este fica mais fácil definir o outro. Isso porque, como já foi visto, no modelo lógico tem-se um melhor controle da aplicação, sendo possível definir as validações necessárias, tanto para a regra de negócio como para a implementação de banco de dados no modelo físico. Posteriormente, podem ser criados modelos físicos para acessar a diferentes bancos de dados a partir do mesmo modelo lógico.

Será criado um modelo simples, onde definiremos algumas entidades com seus respectivos atributos e relacionamentos mostrando como utilizar alguns dos muitos recursos disponíveis no ErWin para modelagem de dados. O modelo será feito com base em um sistema comercial com as tabelas CLIENTES, VENDEDORES, PRODUTOS, FORNECEDORES, PEDIDOS E ITENS_PEDIDOS.

Criando as Entidades

Como já visto, as entidades podem ser criadas através do primeiro objeto da barra de ferramentas, clicando nesta, arrastando para o modelo e trocando o seu nome, como mostrado na Figura 3.

figura
Figura 3. Criação da Entidade Clientes

Criando os Atributos

Para criar os atributos, basta apenas dar um duplo clique na entidade. É possível criar novos atributos, renomear ou excluir um atributo já existente, como mostrado na Figura 4. Pode-se, também, ao lado direito da tela, definir várias características do atributo como chave primária na opção Primary Key ou Requerido na opção Required.

figura
Figura 4. Editor de Atributos

Criando os Relacionamentos

Para definir um tipo de relacionamento, basta escolher um dos três objetos já mostrados da barra de ferramentas, clicar na tabela pai e depois na tabela filho. Automaticamente, o relacionamento escolhido é visualizado. A Figura 5 mostra o editor de Relacionamento e suas funcionalidades.

figura
Figura 5. Editor de Relacionamentos entre entidades

Ao dar um duplo clique sobre o relacionamento esta tela é automaticamente aberta. Nela definimos a cardinalidade do relacionamento, assim como a nulidade dos campos que estão sendo relacionados.

A Figura 6 mostra o modelo totalmente criado, com suas entidades, atributos e respectivos relacionamentos.

figura
Figura 6. Modelo lógico com entidades, atributos e relacionamentos

Criando o modelo físico

Após criar todo o modelo lógico é necessária a definição dos atributos do modelo físico.

Para alternar entre os modelos físico e lógico basta selecionar na Combo situada logo acima da barra de ferramentas, mostrada na Figura 1.

No modelo físico iremos definir características das entidades e atributos criados no modelo lógico de acordo com o SGDB utilizado. Neste modelo temos uma visão real das tabelas, colunas, procedures, triggers e outros objetos do nosso banco.

A Figura 7 mostra o Editor de Coluna do modelo físico.

figura
Figura 7. Editor de Coluna

Conforme o observado no modelo físico, não existem mais Entidades e Atributos, e sim Tabelas e Colunas, nomes comuns ao banco de dados. O editor de coluna permite alterar o tipo e tamanho de cada campo, assim como definir se ele pode ou não receber valores nulos. Ainda pode-se utilizar a aba Comment para comentar cada campo, assim como cada tabela, como mostra a Figura 8.

figura
Figura 8. Modelo Físico com Tabelas, Colunas e Relacionamentos

Criando o banco de dados a partir do Modelo Físico criado

Terminada a implementação é necessário criar os objetos definidos no ErWin em um banco de dados. Para isso, é preciso fazer o modelo apontar para o SGDB a ser utilizado acessando-se o menu: Server\Target Server. Além da seleção do SGDB e da versão do mesmo é possível definir opções referentes ao tipo de dados e a nulidade default para as colunas definidas no modelo bem como máscara para nomenclatura automática de índices e tabelas. Vide Figura 9.

figura
Figura 9. Target Server – Configuração do Banco de Dados

Após as configurações do Target Server, basta acessar o menu Tasks\Forward Engineer/Schema Generation para criar o banco de dados. Vide Figura 10. Utilizaremos um banco criado no Oracle.

figura
Figura 10. Tela de geração de banco de dados

Como se pode ver a tela é bem intuitiva. Na pasta Summary indicamos os objetos do nosso modelo ( tabelas, colunas, índices, triggers, etc.) que serão criados no banco. Ao clicar no botão Generate, o banco é criado, automaticamente, com todas as tabelas, campos e relacionamentos demonstrados no modelo físico.

A Figura 11 mostra os scripts com todos objetos gerados no banco de dados a partir do modelo implementado.

figura
Figura 11. Script com o código de criação das tabelas definidas no modelo

Criando um modelo a partir de um banco existente

Em muitos casos, o banco de dados já está totalmente implementado, sendo necessária a criação do modelo a partir deste. Este processo chama-se Engenharia Reversa, e é acessado pelo menu Tasks\Reverse Engineer. A primeira tela a ser exibida é a ErWin Template Selection, onde escolhe-se a opção Blank Diagram para criar o modelo do zero. Ao clicar em Next, depara-se com a tela Select Taget Server, onde é informado o tipo de banco de dados a ser utilizado e a sua versão. Clicando-se mais uma vez no botão Next, surge a tela Set Options onde são definidos procedimentos necessários à realização da engenharia reversa. Vide Figura 12.

figura
Figura 12. Tela de opções da Engenharia

Deste modo, as opções da engenharia reversa podem ser definidas como Dados de Tabelas, Colunas, TableSpace, Procedure, Triggers e outros. Na opção Table/Views Owned By, foi selecionada a opção Current User para importar somente os objetos criados pelo usuário conectado, poderíamos importar objetos de todos os usuários do banco ou de um usuário diferente do atualmente conectado desde que o mesmo tenha privilégios no banco suficientes para isso. Ainda há possibilidade de se escolher formas de indexação e outras coisas mais.

Clicando-se no botão Next, visualiza-se a tela de conexão, conforme mostrado na Figura 13.

figura
Figura 13. Tela de Conexão com o Oracle

Esta é a tela que permite fazer a conexão do modelo com o banco de dados definido em Taget Server, mostrado na Figura 9. Esta tela também é apresentada quando o banco é criado a partir do modelo. Nela são informados o Nome de Usuário, a Senha e a Connect String que representa a instância onde será efetuada a conexão, neste caso, com o Oracle. Foi criada uma Connection String, chamada “Comercio” no TNSNAMES do Oracle apontando para o banco de dados. Feito tudo isso, é só clicar no botão Connect que o modelo é criado automaticamente, conforme mostrado na Figura 14.

figura
Figura 14. Modelo criado a partir de um banco de dados existente usando a Engenharia Reversa

Foi possível, a partir de um banco existente, criar um modelo semelhante ao já implementado, conforme já mostrado. No processo de Engenharia Reversa no ErWin, os modelos lógico e físico são criados automaticamente.

Criando vários modelos físicos a partir de um único modelo lógico

Ainda se pode, a partir de um modelo lógico, criar modelos físicos para acessar bancos de dados diferentes do Oracle. Será criado um modelo físico que acesse um banco de dados SQL Server a partir do mesmo modelo lógico criado para o Oracle. Para isso basta acessar o Target Server, mostrado na Figura 9, mudar o banco para o SQL Server, escolhendo a versão, definindo os padrões (como já mostrado) e efetuar os procedimentos mostrados nas Figuras 10 e 11.

A Figura 15 aponta como fica o modelo físico para acessar o banco de dados SQLServer.

figura
Figura 15. Modelo Físico para acessar o SQL server

Observa-se que alguns tipos de campos mudaram, como os campos de valores monetários, que passaram de Number (7,2) para Money, e os de data, que passaram de Date para Date/Time. Com isso, conclui-se que, a partir de um modelo lógico criado, pode-se criar modelos físicos para acessar diversos bancos de dados, e este se adapta à situação de cada um automaticamente.

É importante ressaltar que o modelo lógico continua o mesmo.

Conclusão

Estes são apenas alguns dos muitos recursos que o ErWin oferece para modelagem de dados. É possível criar Procedures, Triggers, Views, alterar o banco de dados, alterar o modelo a partir de alguma alteração feita no banco, criar o dicionário de dados, etc. A implementação de um modelo antes do início do desenvolvimento de um sistema garante uma visão ampla e unificada do mesmo, facilitando em muito a definição da regras de negócio, a implementação, manutenção e análise dos procedimentos, garantindo inclusive a continuidade do trabalho no caso de alterações na equipe de desenvolvimento com pouco ou nenhum retrabalho uma vez que o modelo disponibiliza de forma clara e objetiva uma documentação de toda infraestrutura do sistema.