DataBase Refactoring em FireBird



Documentos relacionados
Banco de Dados Avançados Banco de Dados Ativo

Comandos de Manipulação

Refactoring Visão Geral do Catálogo de Martin Fowler

Linguagem SQL Sub-linguagem DDL

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

Comandos DDL. id_modulo = id_m odulo

SQL - Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL

Modelagem Ágil. (Melhorando o aprendizado num projeto de desenvolvimento) Pimentel Medeiros

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL

CREATE TABLE AUTOR ( cod_autor int not null primary key, nome_autor varchar (60) )

PostgreSQL. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

A linguagem SQL

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

(1,n) venda. (1,1) realizacao. cliente. (0,n) (1,1) contem. produto. Laboratório de Banco de Dados Exercicios

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Structured Query Language (SQL) Aula Prática

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Gatilhos (Triggers) Prof. Márcio Bueno Elaborado por Maria Lígia B. Perkusich

CIÊNCIA E TECNOLOGIA DO RIO

Oracle 10g: SQL e PL/SQL

Banco de dados 1. Linguagem SQL DDL e DML. Professor: Victor Hugo L. Lopes

Pontifícia Universidade Católica do Rio Grande do Sul FACULDADE DE INFORMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO.

Projeto de Banco de Dados: Empresa X

Prof. Carlos Majer Aplicações Corporativas UNICID

AULA 8 CRIANDO UMA CLASSE EM PHP INTERAGINDO COM BANCO DE DADOS - COM RELACIONAMENTO ENTRE TABELAS

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

Regras de Negócios é com o Elefante!

Profº Aldo Rocha. Banco de Dados

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Técnicas de Database Refactoring para ambientes 24x7. Matheus de Oliveira

EXEMPLOS DE COMANDOS NO SQL SERVER

1. Domínio dos Atributos

Prof. Me. Marcos Echevarria

Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Banco de Dados II. Triggers e Functions. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas

PHP INTEGRAÇÃO COM MYSQL PARTE 1

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL. Hélder Antero Amaral Nunes

Programação SQL. Introdução

Tarefa Orientada 19 Triggers


Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1.

Integridade dos Dados

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Linguagem SQL. Comandos Básicos

trigger insert, delete, update

Treinamento PostgreSQL - Aula 03

SQL DDL Criando Tabelas e Restrições

Tarefa Orientada 18 Procedimentos armazenados

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

Evolução de Bancos de Dados em Métodos Ágeis

AULA 6 INTEGRIDADOS DOS DADOS - CRIANDO RESTRIÇÕES

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

Banco de Dados. Maurício Edgar Stivanello

MANIPULANDO BANCO DE DADOS NO POSTGRESQL SEM FAZER USO DE COMANDOS SQL

'%'! $!0" $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,"/)!)+,/)% *! +,"0''% * %$!*!$$ #!"%&%'%'%$! "94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31?

JDBC. Prof. Márcio Bueno

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

Introdução à linguagem SQL

Exercício 1 =========== -- criação dos tipos e das tabelas. CREATE TYPE PROFESSOR_TYPE AS OBJECT ( NOME VARCHAR2(15), DISCIPLINA VARCHAR2(15) ); /

BD Oracle. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

Sistema de Controle de Estoque

Linguagem SQL (Parte II)

TECNOLOGIA EM SISTEMAS PARA INTERNET PROJETO DE BANCO DE DADOS

Exercícios com o intuito de cobrar todos os assuntos vistos em sala, relativos à Modelagem Conceitual, SQL, PL e XML. 1ª ETAPA

Transações Seguras em Bancos de Dados (MySQL)

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL


SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela

AMBIENTE WEB PARA GERÊNCIA DE PROCESSO DE SOFTWARE BASEADO NO SCRUM

FUNCTION ) RETURNS INTEGER AS $$ DECLARE

SQL Procedural. Josino Rodrigues Neto

Tabelas. Banco de Dados I MySQL

Procedimentos armazenados

Regras de Integridade. Profa. Késsia Marchi

Projeto de Banco de Dados

SQL: Definição de tabelas, Modificações à Base de Dados

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

Fórum Internacional Software Livre 8.0. PEAR::MDB2_Schema. Igor Feghali

SQL. Autor: Renata Viegas

BANCO DE DADOS I. Exercícios

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language)

Banco de dados. Linguagens de Banco de Dados II. Wedson Quintanilha da Silva -

Banco de Dados. Marcio de Carvalho Victorino Exercícios SQL

Banco de Dados Oracle 10g: Introdução à Linguagem SQL

Sistemas de Informação

Introdução ao SQL. Aécio Costa

BANCO DE DADOS CONCEITOS BÁSICOS

Relatório. Projecto de Base de Dados Parte 2. Turno: quinta-feira, 11:30 Grupo 25: André Gonçalves Rui Barradas Hélton Miranda 68477

Fernando Albuquerque - fernando@cic.unb.br. Bancos de Dados. Fernando Albuquerque fernando@cic.unb.br

SQL DDL ALTERAÇÃO DA ESTRUTURA DE TABELAS - ALTER TABLE - ALTER TABLE NOME_TABELA ADD [COLUMN] NOME_COLUNA TIPO_COLUNA RESTRIÇÕES

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

Transcrição:

DataBase Refactoring em FireBird Autor: Manoel Pimentel Medeiros É Engenheiro de Software, com mais de 15 anos na área de TI, atualmente trabalha com projetos Java pela Rhealeza(SP) e como Coach em metodologias pela Fratech Tecnologia(SP). É Diretor Editorial da Revista Visão Ágil, 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. Contato: visaoagil.wordpress.com

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

Qual o problema? Modelo em cascata (waterfall) Planejamento, Análise e Modelagem (Vários Meses) Desenvolvimento (Vários Meses ou Vários Anos) Teste(Dias) Precisa alterar o modelo e agora? Entrega 3

Solução Iterativa e Incremental Iteração 01 (2 a 4 Semanas) (Planejamento, Modelagem, Desenvolvimento, Testes) Incremento de Software Iteração 02 (2 a 4 Semanas) (Planejamento, Modelagem, Desenvolvimento, Testes) Incremento de Software Idéia Abrangente Iteração 03 (2 a 4 Semanas) (Planejamento, Modelagem, Desenvolvimento, Testes) Incremento de Software Iteração 04 (2 a 4 Semanas) (Planejamento, Modelagem, Desenvolvimento, Testes) Incremento de Software 4

Rápido FeedBack Constante inspeção e adaptação. 5

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. Scott W. Ambler - http://www.agiledata.org 6

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

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

Cenários Típicos (Inconsistências entre camadas) Notas ID_NOTA (INTEGER) DATA (DATE) LOC_ENT (VARCHAR(80) ID_CLIENTE (INTEGER) Mecanismo de Persistência Vendas - idvenda (Integer) - dataemissao (Date) - localentrega (String) - cliente (Cliente) * *Classe 9

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

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

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

Catálago de SUGESTÕES de Database Refactorings 13

Regra Geral Esquema Original Período de Transição Ex: Backups, Criação de Campos, Cópias de Dados, Remoção de campos antigos Esquema Resultante 14

Structural Refactorings Drop Column Drop Table Drop View Merge Columns Merge Tables Move Column Rename Column Rename Table Rename View Replace Column Split Column São mudanças na estrutura de uma tabela, na coluna ou view. Split Table 15

Exemplo Structural Refactorings Split Column 16

Data Quality Refactorings Add Lookup Table Apply Standard Codes Apply Standard Type 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 É uma mudança que melhora e/ou garante a coerência e uso dos valores armazenados no banco de dados. 17

Exemplo Data Quality Refactorings Add Lookup Table 18

Referential Integrity Refactorings Add Foreign Key Constraint Add Trigger for Calculated Column Drop Foreign Key Constraint Introduce Cascading Delete Introduce Hard Delete Introduce Soft Delete Introduce Trigger for History É uma mudança que assegura que existe uma cadeia referenciada dentro de um contexto, de forma que garanta as atualizações e remoções de maneira adequada. (Normalizações) 19

Exemplo Referential Integrity Refactorings Add Foreign Key Constraint Drop Foreign Key Constraint 20

Architectural Refactorings Add Mirror Table Encapsulate Table With View Introduce Calculation Method Introduce Index Introduce Read Only Table Migrate Method From Database Migrate Method to Database Replace Method(s) With View Replace View With Method(s) É uma mudança global que melhora o modo como as camadas externas interagem com uma base de dados. 21

Exemplo Architectural Refactorings Migrate Method From Database 22

Method Refactorings Add Parameter Consolidate Conditional Expression Decompose Conditional Extract Method Introduce Variable Parameterize Methods Remove Parameter Rename Method Reorder Parameters Split Temporary Variable Substitute Algorithm É uma mudança que melhora a qualidade de uma procedure ou função. 23

Exemplo Antes CREATE OR REPLACE FUNCTION GetAccount ( inaccountid IN NUMBER) RETURN NUMBER; AS averagebalance := 0; BEGIN IF inaccountid > 10000 THEN RETURN 0; END IF; IF inaccountid = 123456 THEN RETURN 0; END IF; IF inacountid = 987654 THEN RETURN 0; END IF; -- Code to calculate the average balance RETURN averagebalance; END; Consolidate Conditional Expression Depois CREATE OR REPLACE FUNCTION GetAccount ( inaccountid IN NUMBER) RETURN NUMBER; AS averagebalance := 0; BEGIN IF inaccountid < 10000 inaccountid = 123456 inacountid = 987654 THEN RETURN 0; END IF; -- Code to calculate the average balance RETURN averagebalance; END; 24

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 CAMPO1 25

Questões no FireBird Possilidade do uso de domínios Possibilidade de alterar os charsets e collations Uso de s Derivadas, Views, Functions, Procedures e Triggers Possibilidade de uso de Generators Ferramentas de apoio: IBOConsole e IBUtils. 26

Comparação entre bases Ferramentas: IBOConsole - Para extração dos arquivos de metadata. VIM (VI Improved for Windows) Para comparação entre arquivos 27

Obrigado! visaoagil.wordpress.com 28