Bad Smells (mal cheiros) em Bancos de Dados
-
Upload
fabrizio-mello -
Category
Documents
-
view
519 -
download
18
description
Transcript of Bad Smells (mal cheiros) em Bancos de Dados
![Page 1: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/1.jpg)
Bad Smells (mal cheiros) em Bancos de Dados
timbiraA empresa brasileira de PostgreSQL
TDC2013, Porto Alegre, 2013-10-26
![Page 2: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/2.jpg)
Palestrante timbira
• Fabrízio de Royes Mello• Desenvolvedor PostgreSQL• Líder do PostgreSQL Brasil• Pós-Graduando Uniritter (Agile)• @fabriziomello• http://fabriziomello.blogspot.com
• Timbira• Consultor/Mentor/Coach• A empresa brasileira de PostgreSQL• Consultoria• Desenvolvimento• Suporte 24x7• Treinamento
Timbira - A empresa brasileira de PostgreSQL 2 / 39
![Page 3: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/3.jpg)
Sobre este material timbira
• esta apresentação está disponível em:http://www.timbira.com.br/material
• esta apresentação está sob licença Creative CommonsAtribuição 3.0 Brasil :http://www.creativecommons.org/licenses/by/3.0/br
• Embora este material tenha sido elaborado com todaprecaução, os autores não assumem quaisquerresponsabilidades por erros, omissões ou danos resultantes dautilização das informações aqui contidas.
• Se você encontrar qualquer erro, por favor reporte-o [email protected]
![Page 4: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/4.jpg)
Resumo timbira
1 Prelúdio
2 Introdução
3 Bad Smells
4 Considerações Finais
Timbira - A empresa brasileira de PostgreSQL 1 / 39
![Page 5: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/5.jpg)
Como tudo começou na minha vida... timbira
• 1993 - Basic• 1994 - CLIPPER (e um pouco de C)• 1996 - C e Pascal• 1998 - SQL - mudou minha vida ;-)• 1999 - Teoria Relacional• ...• 2004 - Web (PHP, HTML, CSS, Javascript)• ...• 2009 - Database Refactoring• ...• 2013 - Bad Smells em Bancos de Dados
Timbira - A empresa brasileira de PostgreSQL 2 / 39
![Page 6: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/6.jpg)
Resumo timbira
1 Prelúdio
2 Introdução
3 Bad Smells
4 Considerações Finais
Timbira - A empresa brasileira de PostgreSQL 3 / 39
![Page 7: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/7.jpg)
Bancos de Dados timbira
Tendem a se deteriorar ao longo do tempo. Alguns motivos:
• crescimento volume de dados/transações;• aumento natural de usuários que o utilizam;• dificuldades na evolução do schema;• estratégias de manutenção.
Timbira - A empresa brasileira de PostgreSQL 4 / 39
![Page 8: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/8.jpg)
Refatoração em Bancos de Dados timbira
Deterioração + Mudanças em Requisitos =Necessidade de Refatoração.
Mas não é tão simples assim:
• além de manter comportamento também é preciso manterinformação (dados);
• acoplamento com diversas origens (apps, bds, integrações,3rd, ...)
Timbira - A empresa brasileira de PostgreSQL 5 / 39
![Page 9: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/9.jpg)
Refatoração em Bancos de Dados timbira
Deterioração + Mudanças em Requisitos =Necessidade de Refatoração.
Mas não é tão simples assim:
• além de manter comportamento também é preciso manterinformação (dados);
• acoplamento com diversas origens (apps, bds, integrações,3rd, ...)
Timbira - A empresa brasileira de PostgreSQL 5 / 39
![Page 10: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/10.jpg)
Resumo timbira
1 Prelúdio
2 Introdução
3 Bad Smells
4 Considerações Finais
Timbira - A empresa brasileira de PostgreSQL 6 / 39
![Page 11: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/11.jpg)
Code Smell timbira
É uma categoria comum de problema no código fonte que indicaa necessidade de refatoração. (Martin Fowler)
Timbira - A empresa brasileira de PostgreSQL 7 / 39
![Page 12: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/12.jpg)
Database Smell timbira
Similarmente aos Code Smells existem problemas comuns embancos de dados que indicam uma potencial necessidade derefatoração. (Scott Ambler)
Timbira - A empresa brasileira de PostgreSQL 8 / 39
![Page 13: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/13.jpg)
Database Smell timbira
Multi-purpose columnSe uma coluna for utilizada para vários fins, é provável que existaum código extra para garantir que a mesma seja usadacorretamente e, muitas vezes, verificando valores de uma ou maiscolunas.
Timbira - A empresa brasileira de PostgreSQL 9 / 39
![Page 14: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/14.jpg)
Multi-purpose column timbira
CREATE TABLE pessoa (id SERIAL PRIMARY KEY,tipo CHAR(1) CHECK (tipo IN (’F’, ’J’)),nome VARCHAR(100) NOT NULL,data DATE
);
• Se tipo = ’F’ então DATA = nascimento• Se tipo = ’J’ então DATA = inicio atividades
Timbira - A empresa brasileira de PostgreSQL 10 / 39
![Page 15: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/15.jpg)
Multi-purpose column timbira
CREATE TABLE pessoa (id SERIAL PRIMARY KEY,tipo CHAR(1) CHECK (tipo IN (’F’, ’J’)),nome VARCHAR(100) NOT NULL,data DATE
);
• Se tipo = ’F’ então DATA = nascimento• Se tipo = ’J’ então DATA = inicio atividades
Timbira - A empresa brasileira de PostgreSQL 10 / 39
![Page 16: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/16.jpg)
Multi-purpose column timbira
Sugestão(ões) Database Refactoring:• Split Column• Move Column
Timbira - A empresa brasileira de PostgreSQL 11 / 39
![Page 17: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/17.jpg)
Database Smell timbira
Multi-purpose tableQuando uma tabela é utilizada para armazenar vários tipos deentidades provavelmente existe uma falha de projeto.
Timbira - A empresa brasileira de PostgreSQL 12 / 39
![Page 18: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/18.jpg)
Multi-purpose table timbira
CREATE TABLE pessoa (id SERIAL PRIMARY KEY,tipo CHAR(1) CHECK (tipo IN (’F’, ’J’)),nome VARCHAR(100) NOT NULL,nome_fantasia VARCHAR(100),cnpj CHAR(14),cpf CHAR(11),rg CHAR(10),data DATE
);
• Se tipo = ’F’ então NOME = nome,• Se tipo = ’J’ então NOME = razão social• Se tipo = ’F’ então CNPJ e NOME_FANTASIA = NULL• Se tipo = ’J’ então CPF e RG = NULL
Timbira - A empresa brasileira de PostgreSQL 13 / 39
![Page 19: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/19.jpg)
Multi-purpose table timbira
CREATE TABLE pessoa (id SERIAL PRIMARY KEY,tipo CHAR(1) CHECK (tipo IN (’F’, ’J’)),nome VARCHAR(100) NOT NULL,nome_fantasia VARCHAR(100),cnpj CHAR(14),cpf CHAR(11),rg CHAR(10),data DATE
);
• Se tipo = ’F’ então NOME = nome,• Se tipo = ’J’ então NOME = razão social• Se tipo = ’F’ então CNPJ e NOME_FANTASIA = NULL• Se tipo = ’J’ então CPF e RG = NULL
Timbira - A empresa brasileira de PostgreSQL 13 / 39
![Page 20: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/20.jpg)
Multi-purpose table timbira
Sugestão(ões) Database Refactoring:• Split Column• Move Column• Split Table
Timbira - A empresa brasileira de PostgreSQL 14 / 39
![Page 21: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/21.jpg)
Database Smell timbira
Redundant dataÉ um problema sério em bases de dados porque quando o dado éarmazenado em vários locais, ocorre uma oportunidade deinconsistência.
Timbira - A empresa brasileira de PostgreSQL 15 / 39
![Page 22: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/22.jpg)
Redundant data timbira
CREATE TABLE sys.usuario (id SERIAL PRIMARY KEY,nome VARCHAR(100) NOT NULL,endereco VARCHAR(100),numero INTEGER,complemento VARCHAR(40)
);
CREATE TABLE rh.funcionario (id SERIAL PRIMARY KEY,nome VARCHAR(100) NOT NULL,endereco VARCHAR(100),numero INTEGER,complemento VARCHAR(40)
);
Timbira - A empresa brasileira de PostgreSQL 16 / 39
![Page 23: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/23.jpg)
Redundant data timbira
Sugestão(ões) Database Refactoring:• Merge Tables• Move Data• Drop Column
Timbira - A empresa brasileira de PostgreSQL 17 / 39
![Page 24: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/24.jpg)
Database Smell timbira
Tables with too many columnsQuando uma tabela tem muitas colunas é indicativo de falta decoesão, pois está armazenando dados de várias entidades.
Timbira - A empresa brasileira de PostgreSQL 18 / 39
![Page 25: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/25.jpg)
Tables with too many columns timbira
CREATE TABLE pessoa (id SERIAL PRIMARY KEY,nome VARCHAR(100) NOT NULL,end_entrega VARCHAR(200),end_cobranca VARCHAR(200),end_residenc VARCHAR(200),end_profiss VARCHAR(200),fone_celular VARCHAR(20),fone_casa VARCHAR(20),fone_fax VARCHAR(20),fone_contato VARCHAR(20)
);
Timbira - A empresa brasileira de PostgreSQL 19 / 39
![Page 26: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/26.jpg)
Tables with too many columns timbira
CREATE TABLE parametro (parametro1 VARCHAR(100),parametro2 VARCHAR(100),parametro3 VARCHAR(100),parametro4 VARCHAR(100),parametro5 VARCHAR(100),parametro6 VARCHAR(100),...parametroN VARCHAR(100)
);
Timbira - A empresa brasileira de PostgreSQL 20 / 39
![Page 27: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/27.jpg)
Tables with too many columns timbira
Sugestão(ões) Database Refactoring:• Split Table• Move Column
Timbira - A empresa brasileira de PostgreSQL 21 / 39
![Page 28: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/28.jpg)
Database Smell timbira
Tables with too many rowsTabelas muito grandes podem nos levar a problemas deperformance.O custo (memória e tempo) para buscar ou alterar dados em umatabela varia de acordo com o número de linhas.
Timbira - A empresa brasileira de PostgreSQL 22 / 39
![Page 29: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/29.jpg)
Tables with too many rows timbira
CREATE TABLE measurement (city_id int not null,logdate date not null,peaktemp int,unitsales int
);
CREATE TABLE measurement_y2006m02 ( ) INHERITS (measurement);CREATE TABLE measurement_y2006m03 ( ) INHERITS (measurement);...CREATE TABLE measurement_y2007m11 ( ) INHERITS (measurement);CREATE TABLE measurement_y2007m12 ( ) INHERITS (measurement);CREATE TABLE measurement_y2008m01 ( ) INHERITS (measurement);
Timbira - A empresa brasileira de PostgreSQL 23 / 39
![Page 30: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/30.jpg)
Tables with too many rows timbira
Sugestão(ões) Database Refactoring:• Split Table• Move Rows• Move Column
Timbira - A empresa brasileira de PostgreSQL 24 / 39
![Page 31: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/31.jpg)
Database Smell timbira
Smart columnsColuna onde em diferentes posições do dado representam conceitosdiferentes.
Timbira - A empresa brasileira de PostgreSQL 25 / 39
![Page 32: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/32.jpg)
Smart columns timbira
CREATE TABLE processo (numero CHAR(10) PRIMARY KEY,...
);
CREATE TABLE debito (processamento CHAR(15) PRIMARY KEY...
);
• numero = 4 digitos ano + 6 digitos sequencial• processamento = 4 digitos ano + 6 digitos sequencial + 2
digitos parcela + 2 digitos total parcelas + 1 digito verificador
Timbira - A empresa brasileira de PostgreSQL 26 / 39
![Page 33: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/33.jpg)
Smart columns timbira
CREATE TABLE processo (numero CHAR(10) PRIMARY KEY,...
);
CREATE TABLE debito (processamento CHAR(15) PRIMARY KEY...
);
• numero = 4 digitos ano + 6 digitos sequencial• processamento = 4 digitos ano + 6 digitos sequencial + 2
digitos parcela + 2 digitos total parcelas + 1 digito verificador
Timbira - A empresa brasileira de PostgreSQL 26 / 39
![Page 34: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/34.jpg)
Smart columns timbira
Sugestão(ões) Database Refactoring:• Split Column
Timbira - A empresa brasileira de PostgreSQL 27 / 39
![Page 35: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/35.jpg)
Database Smell timbira
Phantom foreign-keyQuando uma coluna em uma tabela pode receber um valor quedependendo de outra coluna estabelece relacionamento de chaveestrangeira com outra tabela.
Timbira - A empresa brasileira de PostgreSQL 28 / 39
![Page 36: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/36.jpg)
Phantom foreign-key timbira
CREATE TABLE tabela (...tipo INTEGER,codigo INTEGER,...
);
• Se TIPO = 1 entao CODIGO é ref. TABELA1• Se TIPO = 2 entao CODIGO é ref. TABELA2• Se TIPO = 3 entao CODIGO é ref. TABELA3• ...
Timbira - A empresa brasileira de PostgreSQL 29 / 39
![Page 37: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/37.jpg)
Phantom foreign-key timbira
CREATE TABLE tabela (...tipo INTEGER,codigo INTEGER,...
);
• Se TIPO = 1 entao CODIGO é ref. TABELA1• Se TIPO = 2 entao CODIGO é ref. TABELA2• Se TIPO = 3 entao CODIGO é ref. TABELA3• ...
Timbira - A empresa brasileira de PostgreSQL 29 / 39
![Page 38: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/38.jpg)
Phantom foreign-key timbira
Sugestão(ões) Database Refactoring:• Introduce new table• Introduce table constraint• Move Column
Timbira - A empresa brasileira de PostgreSQL 30 / 39
![Page 39: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/39.jpg)
Database Smell timbira
Wrong data typeTipos de dados possuem uma assinatura, que descreve asvalidações mínimas para seu uso.
Timbira - A empresa brasileira de PostgreSQL 31 / 39
![Page 40: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/40.jpg)
Wrong data type timbira
CREATE TABLE pessoa (id SERIAL PRIMARY KEY,nome VARCHAR(100) NOT NULL,cnpj CHAR(14),cpf CHAR(11),rg CHAR(10)
);
CREATE TABLE atributo_dinamico (nome VARCHAR(100),tipo INTEGER,valor TEXT
);
• CNPJ, CPF e RG não são números?• VALOR é um campo "flex"
Timbira - A empresa brasileira de PostgreSQL 32 / 39
![Page 41: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/41.jpg)
Wrong data type timbira
CREATE TABLE pessoa (id SERIAL PRIMARY KEY,nome VARCHAR(100) NOT NULL,cnpj CHAR(14),cpf CHAR(11),rg CHAR(10)
);
CREATE TABLE atributo_dinamico (nome VARCHAR(100),tipo INTEGER,valor TEXT
);
• CNPJ, CPF e RG não são números?• VALOR é um campo "flex"
Timbira - A empresa brasileira de PostgreSQL 32 / 39
![Page 42: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/42.jpg)
Wrong data type timbira
Sugestão(ões) Database Refactoring:• Replace column
Timbira - A empresa brasileira de PostgreSQL 33 / 39
![Page 43: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/43.jpg)
Database Smell timbira
Smells detectados pela minha experiência (não estão naliteratura):
• Phantom foreign-key• Wrong data type• Trigger Spaghetti
Timbira - A empresa brasileira de PostgreSQL 34 / 39
![Page 44: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/44.jpg)
Database Smell timbira
Fear of changeDentre os database smells citados, devemos ter atenção especial aeste, pois pode ser considerado o pior de todos, pois:
• inibe a inovação,• reduz a efetividade,• produz ainda mais bagunça e• ao longo do tempo a situação fica cada vez pior.
"Lempre-se do valor Coragem do XP!!!!"
Timbira - A empresa brasileira de PostgreSQL 35 / 39
![Page 45: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/45.jpg)
Resumo timbira
1 Prelúdio
2 Introdução
3 Bad Smells
4 Considerações Finais
Timbira - A empresa brasileira de PostgreSQL 36 / 39
![Page 46: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/46.jpg)
Considerações Finais timbira
• Coragem para evoluir• Taxonomia dos Database Smells• Ferramenta para detecção
Timbira - A empresa brasileira de PostgreSQL 37 / 39
![Page 47: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/47.jpg)
Referências timbira
• Refactoring Improving the Desing of Existing Code (MartinFowler)
• Refactoring Databases: Evolutionary Database Design (ScottAmbler e Pramod Sadalage)
• http://martinfowler.com/books/refactoring.html• http:
//agiledata.org/essays/databaseRefactoring.html• http://www.agiledata.org/essays/
databaseRefactoringSmells.html
Timbira - A empresa brasileira de PostgreSQL 38 / 39
![Page 48: Bad Smells (mal cheiros) em Bancos de Dados](https://reader031.fdocumentos.tips/reader031/viewer/2022020717/55625416d8b42a1b4b8b4fd9/html5/thumbnails/48.jpg)
Perguntas timbira
?
Fabrízio de Royes Mello@fabriziomello
[email protected]://www.timbira.com.br
http://slideshare.net/fabriziomello
Timbira - A empresa brasileira de PostgreSQL 39 / 39