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.
Na parte superior direita, observa-se uma barra de ferramentas com os principais objetos do ErWin, como mostrado na Figura 2, a seguir:
- 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
- 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.
- 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.
- 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.
- Relacionamentos - Relacionamentos são definidos como a ligação entre duas ou mais entidades.
- 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.