DataBase
                                      Refactoring
                                      em FireBird
             ...
Objetivo


Apresentar os conceitos e práticas de refactoring
  ágil de bancos de dados, que consiste em um
   método inter...
Qual o problema?
                                                  M odel em cascat
                                      ...
Solução Iterativa e Incremental

                  Iteração 01                                Iteração 02
                ...
Rápido FeedBack



            Constante
             inspeção
                 e
            adaptação.



              ...
O que é isso?
                                                   Refactorings

              “É uma forma disciplinada par...
O que é semâtica ?



             “É o estudo do significado lingüístico.
Interessa-se pelo que é expresso por sentenças ...
Por quê aplicar Refactorings?
●   Aceitar mudanças de escopo
●   Fornecer feedback rápido
●   Melhoria contínua
●   Aument...
Cenários Típicos
      (Inconsistências entre camadas)

          Notas                               Vendas

ID_NOTA (INT...
Cenários Típicos
     (Inconsistências entre domínios)
                                CLIENTES
                   ID     ...
Cenários Típicos
              (Inconsistências entre termos)
                              FORNECEDORES
ID_FORNECEDOR    ...
Cenários Típicos
(Arqueologia em Aplicações Legadas)

                        T001
  C001         C002                  C0...
Catálago de SUGESTÕES de
  Database Refactorings



                           13
Regra Geral



                 Período de Transição
Esquema     Ex: Backups, Criação de Campos,   Esquema
 Original      ...
Structural Refactorings
●   Drop Column
●   Drop Table
                           São mudanças na estrutura de uma
●   Dro...
Exemplo Structural Refactorings
    Split Column




                                  16
Data Quality Refactorings
●   Add Lookup Table
                                   É uma mudança que melhora e/ou garante a...
Exemplo Data Quality Refactorings

    Add Lookup Table




                                    18
Referential Integrity Refactorings
●   Add Foreign Key Constraint
●   Add Trigger for Calculated Column      É uma mudança...
Exemplo Referential Integrity
                Refactorings
Add Foreign Key Constraint




                               D...
Architectural Refactorings
●   Add Mirror Table
●   Encapsulate Table With View
●   Introduce Calculation Method
●   Intro...
Exemplo Architectural Refactorings
Migrate Method From Database




                                    22
Method Refactorings
●   Add Parameter
●   Consolidate Conditional Expression
●   Decompose Conditional
●   Extract Method
...
Exemplo
                                                     Consolidate Conditional Expression
Antes
CREATE OR REPLACE FU...
Aviso Importante:
              Organização de SQL
SELECT CAMPO1,CAMPO2,CAMPO2,CAMPO3,CAMPO4,SUM(CAMPO5) FROM
TABELA1 T1 I...
Questões no FireBird
●   Possilidade do uso de domínios
●   Possibilidade de alterar os charsets e collations
●   Uso de T...
Comparação entre bases
●   Ferramentas:
     –   IBOConsole - Para extração dos arquivos de metadata.
     –   VIM (VI Imp...
Obrigado!

visaoagil.wordpress.com


                          28
Upcoming SlideShare
Loading in...5
×

Database Refactoring- Manoel Pimentel

1,277

Published on

Published in: Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,277
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
37
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Database Refactoring- Manoel Pimentel"

  1. 1. DataBase Refactoring em FireBird Autor: Manoel Pimentel Medeiros É Engenheiro de Software, com 15 anos na área de TI, atualmente trabalha como Agile Coach para importantes empresas da área de serviço, indústria e bancária. Também é Diretor Editorial da Revista Visão Ágil e da InfoQ Brasil, Possui as certificações CSM e CSP da Scrum Alliance e foi um dos pioneiros na utilização e divulgação de métodos ágeis no Brasil. E já escreveu para importantes portais e revistas (nacionais e internacionais) ligados ao desenvolvimento de software. Informações em: visaoagil.wordpress.com
  2. 2. Objetivo Apresentar os conceitos e práticas de refactoring ágil de bancos de dados, que consiste em um método interativo e incremental para aplicar melhorias em banco de dados legados, ou criação de novos bancos dados em um típico projeto de desenvolvimento de software. 2
  3. 3. Qual o problema? M odel em cascat o a (waterfall) Planejamento, Análise e Modelagem (Vários Meses) Tabela Tabela Desenvolvimento (Vários Meses ou Vários Anos) Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Teste(Dias) Tabela Tabela Tabela Tabela Entrega Tabela Tabela Tabela Precisa alterar o Tabela Tabela Tabela Tabela modelo e agora? 3 Tabela Tabela
  4. 4. Solução Iterativa e Incremental Iteração 01 Iteração 02 (2 a 4 Semanas) Incremento (2 a 4 Semanas) Incremento (Planejamento, Modelagem, de Software (Planejamento, Modelagem, de Software Desenvolvimento, Testes) Desenvolvimento, Testes) Tabela Tabela Tabela Tabela Idéia Abrangente Tabela Tabela Tabela Tabela Iteração 03 Iteração 04 (2 a 4 Semanas) Incremento (2 a 4 Semanas) Incremento (Planejamento, Modelagem, de Software (Planejamento, Modelagem, de Software Desenvolvimento, Testes) Desenvolvimento, Testes) Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela 4
  5. 5. Rápido FeedBack Constante inspeção e adaptação. 5
  6. 6. O que é isso? Refactorings “É uma forma disciplinada para reestruturar código. A idéia básica é que você faz pequenas alterações ao seu código para melhorar a sua concepção, tornando-a mais fácil de entender e de modificar. Refactoring lhe permite evoluir o seu código ao longo do tempo, para ter uma abordagem iterativa e incremental de programação...” Martin Fowler - www.refactoring.com DataBase Refactorings “É quando uma simples mudança no esquema de uma base de dados melhora a sua concepção, embora mantendo simultaneamente a sua semântica”. 6 Scott W. Ambler - http://www.agiledata.org
  7. 7. O que é semâtica ? “É o estudo do significado lingüístico. Interessa-se pelo que é expresso por sentenças e outros objetos lingüísticos, não pelo arranjo de suas partes sintáticas ou pela sua pronúncia”. Resumo: o Conteúdo é mais importante que a forma! 7
  8. 8. Por quê aplicar Refactorings? ● Aceitar mudanças de escopo ● Fornecer feedback rápido ● Melhoria contínua ● Aumentar a simplicidade para facilitar o entendimento ● Tornar os modelos mais próximos do mundo real ● Ter modelos simples para facilitar a manutenção e a evolução de uma aplicação. 8
  9. 9. Cenários Típicos (Inconsistências entre camadas) Notas Vendas ID_NOTA (INTEGER) - idVenda (Integer) DATA (DATE) Mecanismo de - dataEmissao (Date) LOC_ENT (VARCHAR(80) Persistência - localEntrega (String) ID_CLIENTE (INTEGER) - cliente (Cliente) *Tabela *Classe 9
  10. 10. Cenários Típicos (Inconsistências entre domínios) CLIENTES ID NOME CPF 1 MANOEL PIMENTEL 679.679-679-67 2 EMANUEL PIMENTEL 123.123.123-12 3 VITÓRIA PIMENTEL 456.456.456-45 FUNCIONARIOS ID NOME CPF 1 MANOEL PIMENTEL 67967967967 2 EMANUEL PIMENTEL 12312312312 3 VITÓRIA PIMENTEL 45645645645 10
  11. 11. Cenários Típicos (Inconsistências entre termos) FORNECEDORES ID_FORNECEDOR NOME_FORNECEDOR RUA BAIRRO CIDADE ESTADO 1 MANOEL PIMENTEL Fulana de Tal CENTRO São Paulo SP 2 EMANUEL PIMENTEL Presitente Coisa CENTRO São Paulo SP 3 VITÓRIA PIMENTEL General Morto CENTRO São Paulo SP FABRICANTE ID NOME ENDERECO CIDADE UF 1 MANOEL PIMENTEL Fulana de Tal,Centro São Paulo SP 2 EMANUEL PIMENTEL Presitente Coisa,Centro São Paulo SP 3 VITÓRIA PIMENTEL General Morto,Centro São Paulo SP 11
  12. 12. Cenários Típicos (Arqueologia em Aplicações Legadas) T001 C001 C002 C003 C004 C005 1 MANOEL PIMENTEL Fulana de Tal,Centro São Paulo SP 2 EMANUEL PIMENTEL Presitente Coisa,Centro São Paulo SP 3 VITÓRIA PIMENTEL General Morto,Centro São Paulo SP 12
  13. 13. Catálago de SUGESTÕES de Database Refactorings 13
  14. 14. Regra Geral Período de Transição Esquema Ex: Backups, Criação de Campos, Esquema Original Cópias de Dados, Resultante Remoção de campos antigos 14
  15. 15. Structural Refactorings ● Drop Column ● Drop Table São mudanças na estrutura de uma ● Drop View tabela, na coluna ou view. ● Merge Columns ● Merge Tables ● Move Column ● Rename Column ● Rename Table ● Rename View ● Replace Column ● Split Column ● Split Table 15
  16. 16. Exemplo Structural Refactorings Split Column 16
  17. 17. Data Quality Refactorings ● Add Lookup Table É uma mudança que melhora e/ou garante a ● Apply Standard Codes coerência e uso dos valores ● Apply Standard Type armazenados no banco de dados. ● Consolidate Key Strategy ● Drop Column Constraint ● Drop Default Value ● Drop Non-Nullable Constraint ● Introduce Column Constraint ● Introduce Common Format ● Make Column Non-Nullable ● Move Data 17
  18. 18. Exemplo Data Quality Refactorings Add Lookup Table 18
  19. 19. Referential Integrity Refactorings ● Add Foreign Key Constraint ● Add Trigger for Calculated Column É uma mudança que assegura que existe uma ● Drop Foreign Key Constraint cadeia referenciada dentro ● Introduce Cascading Delete de um contexto, de forma que garanta as atualizações e remoções ● Introduce Hard Delete de maneira adequada. ● Introduce Soft Delete (Normalizações) ● Introduce Trigger for History 19
  20. 20. Exemplo Referential Integrity Refactorings Add Foreign Key Constraint Drop Foreign Key Constraint 20
  21. 21. Architectural Refactorings ● Add Mirror Table ● Encapsulate Table With View ● Introduce Calculation Method ● Introduce Index É uma mudança global que melhora o ● Introduce Read Only Table modo como as camadas externas interagem com uma base ● Migrate Method From Database de dados. ● Migrate Method to Database ● Replace Method(s) With View ● Replace View With Method(s) 21
  22. 22. Exemplo Architectural Refactorings Migrate Method From Database 22
  23. 23. Method Refactorings ● Add Parameter ● Consolidate Conditional Expression ● Decompose Conditional ● Extract Method ● Introduce Variable É uma mudança que melhora a qualidade ● Parameterize Methods de uma procedure ou função. ● Remove Parameter ● Rename Method ● Reorder Parameters ● Split Temporary Variable ● Substitute Algorithm 23
  24. 24. Exemplo Consolidate Conditional Expression Antes CREATE OR REPLACE FUNCTION GetAccount ( inAccountID IN NUMBER) RETURN NUMBER; AS averageBalance := 0; BEGIN IF inAccountID > 10000 THEN RETURN 0; END IF; Depois IF inAccountID = 123456 THEN CREATE OR REPLACE FUNCTION GetAccount RETURN 0; ( inAccountID IN NUMBER) END IF; RETURN NUMBER; IF inAcountID = 987654 THEN AS RETURN 0; averageBalance := 0; END IF; BEGIN -- Code to calculate the average balance IF inAccountID < 10000 || RETURN averageBalance; inAccountID = 123456 || inAcountID = 987654 END; THEN RETURN 0; END IF; -- Code to calculate the average balance RETURN averageBalance; END; 24
  25. 25. Aviso Importante: Organização de SQL SELECT CAMPO1,CAMPO2,CAMPO2,CAMPO3,CAMPO4,SUM(CAMPO5) FROM TABELA1 T1 INNER JOIN TABELA2 T2 ON T1.CAMPO1=T2.CAMPO1 WHERE T2.CAMPO2 LIKE 'A%'GROUP BY CAMPO1,CAMPO2,CAMPO2,CAMPO3,CAMPO4 ORDER BY CAMPO1 select CAMPO1, CAMPO2, CAMPO2, CAMPO3, CAMPO4, SUM(CAMPO5) from TABELA1 T1 inner join TABELA2 T2 on T1.CAMPO1=T2.CAMPO1 where T2.CAMPO2 LIKE 'A%' group by CAMPO1, CAMPO2, CAMPO2, CAMPO3, CAMPO4 order by 25 CAMPO1
  26. 26. Questões no FireBird ● Possilidade do uso de domínios ● Possibilidade de alterar os charsets e collations ● Uso de Tabelas Derivadas, Views, Functions, Procedures e Triggers ● Possibilidade de uso de Generators ● Ferramentas de apoio: – IBOConsole e IBUtils. 26
  27. 27. Comparação entre bases ● Ferramentas: – IBOConsole - Para extração dos arquivos de metadata. – VIM (VI Improved for Windows) – Para comparação entre arquivos 27
  28. 28. Obrigado! visaoagil.wordpress.com 28
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×