quarta-feira, 7 de novembro de 2012

Surrogate Key


Surrogate Key

A palavra Surrogate pode ser vista como um produto artificial sintético que é utilizado para substituir um produto natural; Surrogate = Substituta; Aplicando essa definição à modelagem dimensional pode-se dizer que uma chave sintética é uma chave artificial que é utilizada para substituir uma chave natural do ambiente transacional.

A Surrogate Key (campo numérico, incremental e sem significado) nasce da preocupação de não se ter uma base de dados informacional, vinculada e dependente de uma base transacional. Ou seja, possui como benefício imunizar o DW de mudanças de ambiente e de alterações operacionais. Ter a chave independente de todas as outras colunas isola possíveis mudanças de valores nos relacionamentos do banco de dados ou projeto do banco de dados (tornando a base de dados mais ágil) garantindo as singularidades.

Costumamos gerar a Surrogate Key baseada em uma coluna do tipo de dados numérico o qual varia o armazenamento de bytes de acordo com o valor armazenado. Ou seja, se um campo NUMERIC(10) for utilizado na definição de uma Surrogate Key o valor armazenado não será das dez posições indicadas na definição do campo, mas sim a do valor real armazenado com o limite de dez posições. No Oracle essa característica pode ser observada utilizando-se a função VSIZE.

Várias ferramentas de ETL possuem tarefas para a geração de Surrogates Key's , como SAS Data Integration Studio, SAP Data Services, IBM Data Stage e etc.

Soluções de BD's também podem prover a geração destas chaves como o tipo de Dados IDENTITY do SQL Server e a função SEQUENCE do Oracle.

Porque utilizar as Surrogate Key's:

·         Chaves transacionais podem ser reutilizadas;
·         Tratamento de histórico nas dimensões;
·         Economia de espaço;
·         Possibilitar a integração de bases de dados não integradas que possuam códigos transacionais coincidentes;
·         Possibilitar a criação de valores de “controle” sem implicar na sua inclusão no ambiente transacional. Exemplo: Cliente não cadastrado, Data em aberto, etc.;
·         Melhoria de performance nos joins entre tabelas.

Como deve ser uma Surrogate Key:

·         Deve ser um número inteiro;
·         Numeração seqüencial crescente;
·         Deve iniciar em 1 até o número necessário;
·         Não deve ter Significado implícito;
·         Não deve ser uma composição de chaves do transacional.

Sem comentários:

Enviar um comentário