Na Parte 1 desta série de artigos, você aprendeu como usar o InfoSphere Data Architect versão 7.6 para modelar dados temporais básicos de período de negócios para o Sample Bank. Nesta continuação da série, você aprenderá como modificar um modelo de dados existente para modelar requisitos bitemporais, usando InfoSphere Data Architect versão 7.6. Modelagem bitemporal oferece muita flexibilidade em design de dados, dando a possibilidade de consultar dados de período do sistema e de período de negócios.
Agora que você modelou como controlar mudanças nos juros pela duração de um empréstimo, um novo requisito é definido. O Banco Central divulga uma notificação dizendo que os juros de referência serão alterados duas semanas antes de se tornarem efetivos. O departamento de empréstimo doméstico atualiza manualmente o sistema de empréstimo com a nova taxa de juros, bem como a data na qual a mudança será efetiva.
No entanto, o Banco Central especificou uma taxa de juros incorreta devido a um erro de cálculo, portanto a taxa especificada no Sample Bank também está incorreta agora. O resultado é que a cobrança da parcela gerada automaticamente para os clientes no começo do mês estava incorreta. Infelizmente, o Banco Central só informou o Sample Bank sobre o erro mais de duas semanas após as cobranças de parcela serem geradas. O erro foi corrigido no sistema do Sample Bank, mas cobranças incorretas foram geradas. Pouco antes de serem enviadas aos clientes, o Sample Bank enviou um comunicado a eles informando sobre o problema e especificando que a diferença seria reembolsada na cobrança emitida no mês seguinte.
Naturalmente, alguns solicitantes de crédito entraram em contato com o departamento de empréstimo doméstico com perguntas sobre as cobranças incorretas. O departamento deve poder consultar o sistema e descobrir a taxa de juros correta para o solicitante quando a cobrança foi gerada, para informar aos clientes de quanto será o reembolso na cobrança gerada no mês seguinte.
Para lidar com esse novo requisito, você irá modificar a tabela LOAN_INTEREST para controlar os dados de período do sistema e período de negócios, o que permite aos responsáveis pelo atendimento ao cliente consultar os dados quando necessário.
É possível modificar a tabela LOAN_INTEREST de uma das seguintes maneiras.
- Modificar o modelo de dados físico Loan_Model.dbm que você desenvolveu na parte 1.
- Realizar engenharia reversa no banco de dados para criar e modificar um novo modelo.
Observação: A seção a seguir irá descrever resumidamente como realizar engenharia reversa em um banco de dados, para que você possa alterar as origens de dados existentes. Caso deseje passar para a seção seguinte, clique aqui.
Realizar engenharia reversa no modelo de empréstimo a partir do banco de dados
Siga estas etapas para realizar engenharia reversa no banco de dados de empréstimo para criar um novo modelo de dados físico no Data Project Explorer.
- No menu principal, clique em File > New > Physical Data Model. O assistente New Physical Data Model abre.
- Na página Model File do assistente, especifique um nome de arquivo e selecione a opção Create from reverse engineering, como mostra a Figura 1, e clique em Next.
Figura 1. Página de opção Model File
- Na página Source, selecione a opção Database, como mostra a Figura 2, e clique em Next.
Figura 2. Página de opção Source
- Na página Select Connection, para criar uma nova conexão, clique no botão New ou selecione uma conexão existente, como mostra a Figura 3, e clique em Next.
Figura 3. Página Select Connection
- Na página Select Objects, selecione LOAN_SCHEMA como mostra a Figura 4, e clique em Next.
Figura 4. Página Select Objects
- Na página Database Elements, garanta que todas as caixas de seleção de elemento de banco de dados estão selecionadas, como mostra a Figura 5, e clique em Finish.
Figura 5. Página Database Elements
Inspecione o modelo de dados físico
Para visualizar o modelo de dados físico com outros olhos, você pode inspecioná-lo no Data Project Explorer. Observe as tabelas BORROWER, LOAN e LOAN_INTEREST no esquema LOAN_SCHEMA, como mostra a Figura 6.
Figura 6. Visualização do modelo de dados físico no Data Project Explorer
Ativando comportamento temporal do sistema em uma tabela
No modelo atual, as correções feitas nos registros com relação a juros e valor de parcelas na tabela LOAN_INTEREST não podem ser calculadas. Para poder controlar alterações no nível de registro nos juros de um empréstimo, é preciso incluir controle de período do sistema na tabela LOAN_INTEREST.
Faça o seguinte para incluir colunas de período do sistema na tabela.
- Selecione a tabela LOAN_INTEREST no Data Project Explorer. As propriedades da tabela são exibidas na visualização Properties.
- Clique na guia Columns para incluir colunas do período do sistema na tabela. Selecione a caixa de seleção System time period, como mostra a Figura 7.
Figura 7. Incluindo colunas de período do sistema na tabela LOAN_INTEREST
- Revise as seguintes alterações no modelo de dados físico.
- Controle de período do sistema não está ativado.
- Três novas colunas foram incluídas automaticamente: SYSTEM_START_TIME, SYSTEM _END_TIME e TRANS_ID.
- A tabela de históricos LOAN_INTEREST_HIST foi criada automaticamente, contendo as mesmas colunas que a tabela LOAN_INTEREST.
Figura 8. Visualização do Data Project Explorer do modelo de dados físico de empréstimo modificado
- Clique na guia Versioning da visualização de propriedades da tabela LOAN_INTEREST, mostrada na Figura 9, para ver que a nova tabela de históricos LOAN_INTEREST_HIST está vinculada à tabela LOAN_INTEREST.
Figura 9. Guia Versioning da tabela LOAN_INTEREST
Observação: A tabela de históricos é automaticamente atualizada sempre que a tabela temporal é atualizada, e qualquer modificação feita na tabela LOAN_HISTORY é automaticamente aplicada em sua tabela de históricos relacionada. A tabela de históricos é excluída automaticamente quando a versão é removida na tabela temporal. Caso deseje remover versão de uma tabela temporal de período do sistema, pode selecionar a opção Do not establish versioning relationship with a history table. - Como foi especificado que a tabela LOAN_INTEREST tem propriedades de período do sistema e período de negócios, ela é considerada uma tabela bitemporal. Para implementar suas alterações, você deve comparar o modelo atualizado com o banco de dados de origem, e gerar o script DDL que pode ser compartilhado com o administrador do banco de dados.
Propagar as alterações para o banco de dados
- Use o Editor de comparação para comparar e fundir suas alterações, e em seguida gere o DDL de delta. Clique com o botão direito no esquema LOAN_SCHEMA e selecione Compare With -> Original Source conforme exibido na Figura 10. Se o modelo de dados não tiver passado por engenharia reversa, selecione a opção Another Data Object durante a comparação e selecione o objeto LOAN_SCHEMA no Data Source Explorer.
Figura 10. Comparando um modelo com uma origem
- Na janela Filtering Criteria, mantenha as opções padrão e clique em OK para comparar o modelo com o banco de dados de origem.
- O Editor de comparação é aberto. Inspecione o resultado da comparação no Editor de comparação para ver as seguintes diferenças, também mostradas na Figura 11.
- A tabela LOAN_INTEREST_HIST é associada com a tabela temporal LOAN_INTEREST. Essa atualização não está presente no banco de dados.
- A tabela LOAN_INTEREST tem novas colunas de período do sistema, que não estão presentes no banco de dados.
Figura 11. Comparando um modelo com seu banco de dados de origem
- Especifique que deseja fundir as propriedades de período do sistema no banco de dados de origem. Selecione a linha temporalPeriods no Editor de comparação e clique no botão Copy from Left to Right, como mostrado na Figura 12.
Figura 12. Fundindo alterações no Editor de comparação
A tabela de históricos e tabelas de período do sistema são copiadas para o lado direito do Editor de comparação. - Clique no botão Generate Right Delta DDL, mostrado na Figura 13.
Figura 13. Gerando DDL de delta implementável no Editor de comparação
- Salve o DDL de delta para que possa compartilhá-lo com o administrador de seu banco de dados. O administrador do banco de dados irá implementar as alterações para você no servidor de banco de dados.
Inspecione o modelo bitemporal implementado no servidor de banco de dados
Após o administrador de banco de dados executar o DDL para implementar suas mudanças, você pode visualizá-las no Data Source Explorer.
- Expanda o esquema LOAN_SCHEMA para localizar a nova tabela LOAN_INTEREST_HIST, e verifique as alterações na tabela LOAN_INTEREST. O esquema atualizado é mostrado na Figura 14.
Figura 14. Verificando alterações no Data Source Explorer
- Ao inspecionar as propriedades da tabela LOAN_INTEREST, você vê que as propriedades bitemporais (período de tempo do sistema e período de tempo de negócios) estão ativadas, como mostra a Figura 15.
Figura 15. Verificando propriedades bitemporais da tabela LOAN_INTEREST
- Na guia Versioning, você verifica que a tabela LOAN_INTEREST_HIST está vinculada à tabela LOAN_INTEREST, como mostra a Figura 16.
Figura 16. Verificando a tabela de históricos da tabela LOAN_INTEREST
Neste artigo, você aprendeu a modelar propriedades bitemporais em tabelas. Com pouco esforço, você pôde incluir um período do sistema em uma tabela e criar uma tabela de históricos associada. Quando você comparou e fundiu as alterações, gerou um script DDL de delta para implementar as alterações no banco de dados de destino.
Com o InfoSphere Data Architect versão 7.6, é possível acelerar o design de dados temporais e o processo de implementação. A curva de aprendizado é reduzida por meio de uma interface simples que ajuda modeladores a entender recursos específicos de banco de dados. É fácil implementar as alterações temporais com um simples gerador de DDL de delta que coloca as alterações em um script simples, que executa no servidor de banco de dados.
Agradeço a Erin Wilson pelas sugestões valiosas e pela revisão desse artigo.
Aprender
- Use um feed RSS para solicitar notificação sobre os artigos futuros desta série. (Descubra mais sobre
feeds RSS do conteúdo do developerWorks.)
- Revise o artigo A Matter of Time: Temporal Data Management in DB2 for z/OS.
- Obtenha os recursos necessários na área do InfoSphere Data Architect no developerWorks.
- Faça o download
de uma versão de avaliação do InfoSphere Data Architect V7.6.0 e saiba como criar um modelo bitemporal eficientemente.
- Participe do fórum de discussão.
- Obtenha os recursos necessários na área de Information Management no developerWorks, para melhorar suas habilidades em uma grande variedade de produtos do IBM Information Management.
- Saiba mais sobre Information Management na zona do
Information Management no developerWorks. Encontre documentação técnica, artigos de instruções, treinamento, downloads, informações de produtos, e muito mais.
- Siga o developerWorks no Twitter.
- Acompanhe as demos on demand do developerWorks
que abrangem desde demos de instalação e configuração de produtos para iniciantes até funcionalidade avançada para desenvolvedores experientes.
Obter produtos e tecnologias
- Faça o download
de uma versão de avaliação do InfoSphere Data Architect V7.6.0 e saiba como criar um modelo bitemporal eficientemente.
- Crie seu próximo projeto de desenvolvimento com a versão de teste do software IBM, disponível para download diretamente no developerWorks, ou passe algumas horas no SOA Sandbox aprendendo a implementar Arquitetura Orientada a Serviços de modo eficiente.
Discutir
- Participar do fórum de discussão.
- Confira os
blogs do developerWorks
e participe da
Comunidade do developerWorks.

Balaji Kadambi é engenheiro de software consultor no laboratório da IBM em Bengaluru, Índia. Atualmente, ele faz parte da equipe de desenvolvimento de InfoSphere Data Architect e participou do desenvolvimento do recurso bitemporal no InfoSphere Data Architect V7.6.0. Suas áreas de interesse incluem Modelagem de dados e Bancos de dados. Balaji tem mais de 12 anos de experiência trabalhando no segmento de mercado de software comercial.

Rahul Jain é engenheiro de software da equipe no laboratório da IBM em Bengaluru, Índia. Atualmente, ele faz parte da equipe de desenvolvimento do InfoSphere Data Architect. Suas áreas de conhecimento incluem Modelagem de dados e tecnologias da plataforma Eclipse. Rahul é mestre em tecnologia da informação pelo IIIT, em Bengaluru, Índia.