Neste post veremos como fazer modelagens simples para esquemas do Banco de Dados Matisse usando a ferramenta Matisse Database Modeler. Veremos também informações gerais sobre o Banco de Dados, SGBD para gerenciamento, ferramenta de modelagem e suas interfaces gráficas.

Na Figura 1 é ilustrado a interface gráfica do Matisse Database Modeler.

Ilustração da interface gráfica do
Matisse Database Modeler

Figura 1. Ilustração da interface gráfica do Matisse Database Modeler.

Para fazer a modelagem dos esquemas a ferramenta faz uso da notação UML, mais exatamente do Diagrama de Classes. Portanto, é necessário que o usuário tenha conhecimentos básicos no Paradigma de Orientação a Objetos no Diagrama de Classes da UML. Um ponto interessante da ferramenta é que o usuário pode, a partir da modelagem, gerar código para as seguintes linguagens de programação: C#, VB.NET, Java, C++, PHP, Python e Eiffel.

Modelando um Exemplo Prático

Ao longo deste post será descrito como modelar esquemas por meio de um exemplo simples. Para o mesmo não levaremos consideração contextos como restrição de segurança, conceitos de chaves e etc. Para dar início a modelagem é necessário que exista esquemas de banco criado e em execução no banco Matisse. Para isto, terá de ser utilizado a ferramenta Matisse Enterprise Manager, que é a ferramenta para gerenciar o Banco Matisse.

O exemplo utilizado será a modelagem de uma instituição de ensino superior, que precisa armazenar dados dos professores, técnicos administrativos e alunos, bem como as turmas formadas, cursos, disciplinas e departamentos. Também existe a necessidade de armazenar informações básicas referente as entidades professores, técnicos administrativos e alunos como código de matrícula, nome, RG, CPF, data de nascimento, além dos dados dos endereços de cada uma dessas entidades como logradouro, número, bairro, CEP, cidade, estado. Professores são alocados em departamentos de ensino e só podem ser alocados a, no máximo, um departamento de ensino, enquanto que técnicos administrativos estão alocados a departamentos de ensino ou administrativos, mas só podem ser alocados a, no máximo, um destes departamentos. Departamentos de ensino possuem várias disciplinas que formam vários cursos que, por sua vez, podem ser habilitados para formar várias turmas por período que precisam ser formados por vários alunos. Estes alunos podem estar alocados em várias turmas de diferentes cursos.

Após a descrição do exemplo, pode-se criar um esquema de banco pela ferramenta Matisse Enterprise Manager. Pela interface gráfica, clique com o botão direito do mouse no nome do seu host, que provavelmente deverá ter o nome referente ao nome dado ao PC pessoal, e escolha a opção New Database. Deverá aparecer uma janela com três guias: General, Data files, Advanced. A guia General possui a opção de mencionar o nome do esquema. A guia Data files é utilizada para importar ou atualizar arquivos DDL (linguagem de definição de dados – Dates Definition Language) ou ODL (linguagem de descrição de objetos – Object Description Language), caso já possuam esquemas de banco já prontos. E a guia Advanced é utilizada para configurações rede como processamento paralelo, segurança e etc. Neste post utilizaremos somente a guia General. Na guia General informa o nome do esquema de banco como instituição de ensino e clique em no botão OK. Após a criação do esquema de banco é necessário inicializa-lo; clique com o botão direito do mouse no esquema instituição de ensino e escolha a opção start para iniciar o banco.

Após a criação do esquema de banco, execute a ferramenta Matisse Database Modeler. No canto esquerdo da tela, deve aparecer a ilustração do seu host e dos esquemas de banco que estão em execução. Caso o esquema do banco da instituição de ensino não esteja presente, clique com o botão direito do mouse no nome do seu host e escolha a opção Reload All Databases para que a ferramenta possa recarregar os esquemas do banco ativo no momento. A Figura 2 ilustra como deve estar representado o esquema do banco instituição de ensino na ferramenta Matisse Databse Modeler.

Representação do esquema instituição
de ensino na ferramenta Matisse Database Modeler

Figura 2. Representação do esquema instituição de ensino na ferramenta Matisse Database Modeler.

Como pode ser observado, o esquema instituição de ensino é composto de duas partes: Schema e Meta Schema. A parte Shema é utilizada para realizar a modelagem do esquema de banco. Por outro lado, a parte do Meta Schema é utilizada pela ferramenta para construir o Metamodelo do esquema, ou seja, aquele utilizado para conferir a correção do modelo diante da notação UML. Na parte Schema existe a possibilidade de criação de Namespace, muito utilizado em linguagens C#.NET e VB.Net, para aumentar o nível de abstração do seu esquema de banco, o que é uma forma de tentar alinhar a arquitetura do banco de dados a arquitetura do sistema. Existem três formas de se modelar os esquemas: através da guia Diagram no canto superior da tela; através dos ícones da notação do Diagrama de Classes na barra de tarefas, ao lado do ícone de zoom; e através da área de modelagem, clicando com o botão direito do mouse e escolhendo a opção New.

Seguindo o exemplo dado para fazermos modelagem, pode-se perceber que as entidades Professores, Técnicos Administrativos e Alunos tem informações em comum como Nome, RG, CPF, Data de Nascimento e Matrícula. Então pode-se modelar estas informações em comum entre estas entidades como outra entidade; chamada Pessoa. A Figura 3 ilustra a criação da classe Pessoa com todas as informações que as outras três entidades têm em comum. Quando a classe é criada, a mesma criada vazia e é necessário preencher com os dados. Dê um duplo clique no botão esquerdo do mouse que irá aparecer a opção de nomear a classe e um ícone onde você pode criar atributos, métodos, índices e dicionários de dados. Existem diversos tipos de atributos, inclusive do tipo estrutura de dados homogêneas e arquivos de mídia como texto, vídeo e etc. Vale salientar que a ferramenta não aceita nome de atributos, métodos e classes com acentos ou que comecem com números. Outra forma de editar classes é clicando no botão direito do mouse e escolhendo a opção Edit members deverá abrir uma janela semelhante a que pode ser visualizada na Figura 4.

Modelando a classe Pessoa

Figura 3. Modelando a classe Pessoa.

Ilustração da segunda forma de edição
de classes na ferramenta

Figura 4. Ilustração da segunda forma de edição de classes na ferramenta.

Como pode ser observado na Figura 4, uma janela é aberta onde se pode editar todas as informações referentes a uma classe de forma mais rápida e prática. As informações que podem ser editadas são: sintaxe da classe, nome da classe, tipo dos atributos, acesso ao atributo, valor inicial (se o atributo é nulo), criação de atributos e métodos, índices e dicionários de dados. Como descrito na Figura 4, edite a classe de acordo com as informações que são mencionadas na janela, como segue abaixo:

  • Nome da classe: Pessoas;
  • Atributo Matricula: tipo integer;
  • Atributo Nome: tipo string;
  • Atributo RG: tipo integer;
  • Atributo CPF: tipo integer;
  • Atributo DataNascimento: tipo date.

O próximo passo é a criação de índices, que são muito utilizados para criação de chaves. Estas chaves podem ser criadas com um ou mais atributos. O procedimento para criação de chaves é bem simples: clique com o botão direito do mouse e escolha a opção Edit members. A Figura 5 ilustra este procedimento. Após abrir a janela de edição, escolha o ícone parecido com uma tabela com o nome New Index. De acordo com o ilustrado na Figura 5, o campo Sintax mostra o tipo de acesso, nome do índice e seus parâmetros que são os atributos. Existem duas cláusulas aplicadas a eles: cláusula asc, onde aquele parâmetro será incrementado em ordem crescente; e a cláusula desc, onde aquele parâmetro será incrementado em ordem decrescente. Para o nome do índice será PMatricula e seu parâmetro será somente o atributo Matricula e incremento na forma asc, marcando a caixa Modifiers para que o índice seja Chave Primária.

Ilustração de criação de índice de
classes

Figura 5. Ilustração de criação de índice de classes.

Esta ferramenta também permite a modelagem de Dicionários de Dados. Para quem não conhece, Dicionário de Dados são estruturas de dados semelhantes a vetores onde as buscas por estes dados são feitas por índices de chaves. A Figura 6 ilustra um Dicionário de Dados pela ferramenta. Um Dicionário de Dados tem a seguinte descrição:

  • Dicionário como chave primária;
  • Nome do Dicionário de Dados;
  • Lista de parâmetros. Organizada na sequência de lista de atributos da classe, ponto de entrada, case sensitive/nonsensitive (Caso o Dicionário de Dados trabalhe com dados duplicados ou unitários).

Para a criação de Dicionário de Dados basta, pela janela rápida, clicar no ícone em destaque na Figura 6, que fica ao lado do ícone de criação de índices. No exemplo utilizado neste post não se fará uso de Dicionário de Dado, que são uma ótima alternativa para quem deseja trabalhar com chaves compostas ou representar uma tabela de dados relacional dentro de um objeto.

Exemplo de um Dicionário de Dados

Figura 6. Exemplo de um Dicionário de Dados.

O próximo passo será a criação de métodos. Para isso basta abrir a janela de edição rápida de componentes de uma classe e escolher o ícone de um bloquinho rosa com o nome New Method. Configure o método de acordo com as configurações exibidas na Figura 7. Assim como métodos em Linguagens Orientadas a Objetos, estes possuem tipo de acesso, tipo de retorno, parâmetros. Para edição do método é necessário clicar no ícone parecido com um corpo de código ao lado, onde irá aparecer uma tela semelhante a que é ilustrada na Figura 8. De acordo com o que é observado, o formato de um método no Matisse é semelhante ao formato de Procedures para quem já trabalhou com Banco de Dados Oracle ou PostgreSQL. Para quem não conhece, Procedures são como funções ou métodos que são executados dentro de um Banco de Dados, melhorando sua a eficiência, simplificando o número de transações entre a aplicação e o sistema de Banco de Dados, principalmente quando se trabalha com dados que precisam ser processados várias vezes pela aplicação e pelo banco de dados para depois ser retornada a informação ao cliente.

Ilustração da criação do método
getMatricula na ferramenta

Figura 7. Ilustração da criação do método getMatricula na ferramenta.

Ilustração da janela de edição de
métodos

Figura 8. Ilustração da janela de edição de métodos.

De uma forma geral, métodos de classes pelo Matisse são estruturados com nome do método, parâmetros de passagem de dados, atributo de retorno e estrutura BEGIN-END. Esta estrutura é organizada com a declaração de dados, pela estrutura DECLARE e pelo corpo de código com laços de repetição, rotinas SQL, atribuições em variáveis e etc. Não será objeto deste post expandir a explicação sobre métodos, devido a extensão do assunto.

Agora que a classe com as informações que são comuns as entidades Professores, Técnicos Administrativos e Alunos foi criada, pode-se criar estas classes destas demais entidades e utilizar o mecanismo de herança. A Figura 9 ilustra como as classes deverão ser criadas. Para permitir que as três classes possam herdar atributos e métodos da classe Pessoas, na barra de tarefas escolha o ícone semelhante a uma seta vazada que corresponde a Generalization. Utilize esta seta das classes que devem receber herança para a classe Pessoas, para que o mecanismo de herança tenha o efeito desejado. Configure as classes de acordo com o mostrado na Figura 9, que neste caso serão as seguintes informações:

  • Classe Professores: matProf (tipo integer), Cargo (tipo string), Formacao (tipo string), Titulacao (tipo string), PmatProf (primary key matProf);
  • Classe Tec_Adms: matTec (tipo integer), Cargo (tipo string), Formacao (tipo string), PmatTec (primary key matTec);
  • Classe Alunos: matAln (tipo integer), PmatAln (primary key matAln);

Ilustração do mecanismo de herança

Figura 9. Ilustração do mecanismo de herança.

A próxima etapa será a modelagem das demais classes restantes para depois tratarmos dos relacionamentos e suas cardinalidades. A Figura 10 ilustra a criação das outras demais classes. Em geral, uma instituição de ensino possui departamentos de ensino e administrativos com características bem específicas, portanto, não existe a necessidade de se criar uma superclasse chamada de departamento para fazer herança. Foi criada a classe Enderecos para armazenar os endereços dos registros dos colaboradores da instituição de ensino, além das classes para armazenar informações sobre disciplinas (Disciplina), sobre os cursos (Cursos) e as turmas formadas (Turmas). Entre com as seguintes informações:

  • Classe Enderecos: Logradouro (tipo string), Numero (tipo integer), Bairro (tipo string), CEP (tipo integer), Cidade (tipo string), Estado (tipo string);
  • Classe Dep_Adms: ID_Adm (tipo integer), Nome (tipo string), Tipo (tipo string), P_Adm (primary key ID_Adm);
  • Classe Dep_Ensinos: ID_Ens (tipo integer), Nome (tipo string), Area (tipo string), P_Adm (primary key ID_Ens);
  • Classe Disciplinas: ID_Dis (tipo integer), Nome (tipo string), CargaHoraria (tipo string), Periodo (tipo integer), P_Dis (primary key ID_Dis);
  • Classe Cursos: ID_Cursos (tipo integer), Nome (tipo string), Abreviatura (tipo string), P_Cursos (primary key ID_Cursos);
  • Classe Turmas: ID_Turma (tipo integer), Periodo (tipo integer), Ano_Ingresso (tipo date), P_Turma (primary key ID_Turma);

Ilustração das classes Enderecos, Dep_Adms, Dep_Ensinos, Disciplinas, Cursos,
Turmas

Figura 10. Ilustração das classes Enderecos, Dep_Adms, Dep_Ensinos, Disciplinas, Cursos, Turmas.

O próximo passo será a modelagem dos relacionamentos entre classes. Antes de iniciarmos é preciso ressaltar três tipos de relacionamentos que existem entre classes na notação UML, sendo estes:

  • Associação: equivalente a relacionamentos entre entidades na modelagem Entidade-Relacionamento. A ferramenta também permite auto associação em uma classe;
  • Agregação: semelhante a Associação. É utilizada quando temos objetos de uma classe que compõe um ou vários objetos de outra classe, mas a classe que compõem existe independentemente da classe composta existir ou não;
  • Composição: equivalente a entidade fraca na modelagem Entidade-Relacionamento;

A Figura 11 ilustra a modelagem de relacionamentos. Para o exemplo que foi dado vamos analisar o seguinte contexto: os colabores possuem cadastro de um único endereço (por mais que se possa se repetir) ao qual teremos então uma associação simples com cardinalidade de 1 para 1. É sabido que uma instituição de ensino precisa primeiro ter uma estrutura para depois comportar seus funcionários, alunos e etc. Ou seja, é preciso que os departamentos sejam criados para depois ter um quadro de funcionários. Caso os departamentos venham a fechar, consequentemente funcionários deixarão de existir na instituição ou serão remanejados, como no caso de técnicos administrativos, por exemplo. Logo, é necessário que exista uma composição entre professores e departamento de ensino e agregação entre técnicos administrativos e departamentos de ensino ou departamentos administrativos. A mesma coisa acontece com os alunos que, para serem cadastrados no banco, precisam estar vinculados a uma turma. Turmas só podem existir se existirem cursos; cursos só podem existir se existirem disciplinas que só podem existir se existirem departamentos de ensino. Assim, podemos observar que existem várias composições. Composição de alunos para turma, de turmas para curso, de cursos para disciplinas e de disciplinas para departamentos de ensino. Assim, teremos o seguinte cenário:

  • Composição da classe Alunos para a classe Turmas com cardinalidade de 1 para 1..*;
  • Composição da classe Turmas para a classe Cursos com cardinalidade de 1 para 1..*;
  • Composição da classe Cursos para a classe Disciplinas com cardinalidade de 1 para 1..*;
  • Composição da classe Disciplinas para a classe Dep_Ensinos com cardinalidade de 1 para 1..*;
  • Composição da classe Professores para a classe Dep_Ensinos com cardinalidade de 1 para 1..*;
  • Agregação da classe Tec_Adms para a classe Dep_Ensinos com cardinalidade de 0..1 para 1..* (a cardinalidade é opcional porque um técnico administrativo não pode ser alocado a dois departamentos simultaneamente);
  • Agregação da classe Tec_Adms para a classe Dep_Adms com cardinalidade de 0..1 para 1..* (a cardinalidade é opcional porque um técnico administrativo não pode ser alocado a dois departamentos simultaneamente);

Ilustração da modelagem de relacionamentos

Figura 11. Ilustração da modelagem de relacionamentos.

Com isto finalizamos os principais conceitos para modelagem de banco de dados na ferramenta Matisse Database Modeler. Por último e não menos importante para se modelar na ferramenta são os comentários. Para inserir comentários na ferramenta só precisa ir na barra de ferramentas e escolher o ícone de um bloco amarelo que fico ao lado do ícone de nova classe. Na medida que vai se criando a modelagem do banco automaticamente o modelo vai sendo mapeado, permitindo que automaticamente o banco de dados seja estruturado na ferramenta Matisse Enterprise Manager, como pode ser visualizado na Figura 12.

Ilustração do banco que foi projetado
pela ferramenta Matisse Enterprise Manager

Figura 12. Ilustração do banco que foi projetado pela ferramenta Matisse Enterprise Manager.

Uma outra vantagem da ferramenta de modelagem Matisse Database Modeler é que, no ato de salvar o seu modelo, automaticamente a ferramenta checa se seu modelo está correto para a notação UML. Outras vantagens são a possibilidade de imprimir o seu modelo, salvar como imagem e geração de código para a sua aplicação. Espero que todos tenham gostado deste post e até a próxima.