O documento apresenta Fabrizio Mello e Guilherme Lacerda, especialistas em refatoração de banco de dados. Eles discutem o que é refatoração de banco de dados e como ela é importante para melhorar o design e a manutenção de dados ao longo do tempo, mantendo a semântica dos dados.
4. RReeffaaccttoorriinngg
”Processo de alteração de um sistema de software de
modo que o comportamento externo do código não
mude, mas que sua estrutura interna seja melhorada.”
”É uma forma disciplinada de aperfeiçoar código que
minimiza a introdução de falhas.”
(Martin Fowler 2004)
5. DDaattaabbaassee RReeffaaccttoorriinngg
“É quando uma simples mudança no
esquema de uma base de dados melhora a
sua concepção (projeto), embora mantendo
simultaneamente a sua semâtica".
(Scott W. Ambler 2006)
6. DDaattaabbaassee RReeffaaccttoorriinngg
“Mudança disciplinada na estrutura de uma
base de dados que não altera sua
semântica, porém melhora seu projeto e
minimiza a introdução de dados
inconsistentes".
(Fabrízio de Royes Mello 2009)
7. Refatoração ddee BBaannccoo ddee
DDaaddooss
Deterioração + Mudanças em Requisitos =
Necessidade de Refatoração
Mas não é tão simples como parece:
● além de manter comportamento também é preciso
manter informação (dados)
● acoplamento com diversas origens (apps, bds,
integrações, 3rd, ...)
9. Multi-AApppplliiccaattiioonn DDaattaabbaassee
Sua
Aplicação
Seu
Banco de
Dados
Outras Aplicações
que Você NÃO
Conhece
Outros
Banco de
Dados
Outras Aplicações
que Você Conhece
Outras Aplicações
que Você Conhece
Frameworks
de
Persistência
Outras Aplicações
que Você NÃO
Conhece
Arquivos
de Dados
Códigos
de Testes
13. RReeffaattoorraaççõõeess
● Adicionar restrição de integridade na tabela
SALES
● Na tabela “Customer” existe um campo “City” que
é um VARCHAR, então precisamos separar em
outra tabela, criando um período de transição
● Encerrar período de transição
15. CCoonnssiiddeerraaççõõeess ffiinnaaiiss
● Melhoria continua
● Aumentar simplicidade para facilitar entendimento
● Tornar modelos mais próximos do mundo real
● Criar modelos mais simples para facilitar:
● Manutenção e
● Evolução da aplicação
16.
17. RReeffeerrêênncciiaass
●Refactoring Improving the Desing of Existing Code (Martin Fowler)
●Refactoring Databases: Evolutionary Database Design (Scott
Ambler e Pramod Sadalage)
●http://martinfowler.com/books/refactoring.html
●http://agiledata.org/essays/databaseRefactoring.html
●http://www.agiledata.org/essays/databaseRefactoringSmells.html
●http://fabriziomello.github.io/blog/2013/06/10/database-refactoring/
18. MMuuiittoo Obbrriiggaaddoo!!
g u i l h e r me s l a c e rd a@g m a i l . c o m
@g u i l h e r me s l a c
f a b r i z i o me l l o@g m a i l . c o m
@f a b r i z i o me l l o
w w w . c o d i n g b y e x a m p l e . o rg
w w w . o rg a n i z a c a o v i s u a l . n e t