do Scott W. Ambler, trata das tecnicas de refactoring empregadas em banco de dados (mais informacoes ao final). Selecionei deste livro 2 exemplos de Refatoracao em Banco de Dados: Replace Column e Merge Columns . Segue resumo. 1 Replace Column (pagina 126) Motivacao: O tipo da coluna deve ser alterado (ex.: numerico para alfanumerico). Exemplo: Para um dado sistema, a informacao que identifica um Usuario deve ser mantida no formato Alfanumerico. Atualmente, esta informacao e armazenada no BD no formato Numerico. Vejam na figura abaixo os schemas original, do periodo de transicao e o final. Mecanica de Alteracao: 1) Cria-se a nova coluna (CustomerID); 2) Torna-se a coluna que sera substituida (CustomerNumber) deprecated. Ou seja, a coluna e marcada para eliminacao. No exemplo, isto e representado atraves da indicacao {drop date = June 14 2007} a. Deprecate e um termo comum em Java utilizado para indicar que um metodo de uma classe esta defasado e, possivelmente, sera eliminado desta classe em uma proxima versao. 3) Cria-se uma trigger (SynchronizeCustomerIDNumber) para manter as informacoes das colunas sincronizadas. A trigger deve ser invocada para qualquer mudanca nas colunas. Esta trigger ja deve nascer deprecated. No exemplo, isto e representado atraves da indicacao {event = update | insert, drop date = June 14 2007}; 4) Converter os dados da coluna original para a nova coluna (CustomerNumber para CustomerID); 5) Durante o periodo de transicao, deve-se atualizar outras tabelas e os programas que acessam o dado alterado (refatorar os codigos e atualizar validacoes de dados). 6) Apos o periodo de transicao, elimina-se a coluna anterior (CustomerNumber) e a trigger. Figura 1. Exemplo de alteracoes em um schema utilizando a Tecnica de Refatoracao BD Replace Column. 2 Merge Columns (pagina 92) Motivacao: Existencia de colunas que guardam a mesma informacao (replicacao de informacao); Informacao quebrada em varias colunas; Colunas com informacoes similares que convergiram para uma mesma informacao. Exemplo: Para um dado sistema, o numero de telefone do Usuario deve ser mantido como uma informacao unica obtida da concatenacao de Codigo de Area e Local. Atualmente, e guardado no BD separando os codigos de Pais, Area e Local. Vejam na figura abaixo os schemas original, do periodo de transicao e o final. Mecanica de Alteracao: 1) Cria-se a nova coluna (PhoneNumber); 2) Marca-se as colunas anteriores como deprecated. No exemplo, isto e representado atraves da indicacao {drop date = December 14 2007} 3) Cria-se uma trigger (SynchronizePhoneNumber) para manter as informacoes das colunas sincronizadas. A trigger deve ser invocada para qualquer mudanca nas colunas. Esta trigger ja deve nascer deprecated. No exemplo, isto e representado atraves da indicacao {event = update | insert, drop date = December 14 2007}; 4) Converter os dados das colunas originais para a nova coluna (PhoneNumber = merge column); 5) Durante o periodo de transicao, deve-se atualizar outras tabelas e os programas que acessam o dado alterado (refatorar os codigos e atualizar validacoes de dados). 6) Apos o periodo de transicao, elimina-se as colunas anteriores (PhoneAreaCode e PhoneLocal) e a trigger. Figura 2. Exemplo de alteracoes em um schema utilizando a Tecnica