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