Conceitos de BI: O que são Surrogate Keys? Uso e aplicação
Autor: Allyson Alves | Publicado: 2013-12-06T18:30:00-02:00




Goedemorgen!




Hoje iremos detalhar outro conceito de BI muito comum: Surrogate Keys (SK).&nbsp;



Muitos tem dúvidas sobre o que é de fato (tecnicamente), qual objetivo e como se aplica em um modelo de banco de dados. Hoje iremos responder a estas perguntas.









O que é? Qual objetivo?



A imagem ao lado traduz uma boa parte do que é:&nbsp;Integridade. Sabemos que existem dois tipos de chaves quando falamos de banco de dados relacionais. São eles:&nbsp;






Change Estrangeira (Foreign Key - FK)
Chave Primária (Primary Key - PK)





Cada um deles tem seu objetivo no modelo relacional ou modelo dimensional. Em ambos modelos tem objetivos parecidos, entretanto os modelos em si são bem diferentes e, claro, o comportamento da informação também.

O objetivo da PK é ser único na tabela e ser também uma chave para manter a integridade (de CERTA forma !) o que depende muito do DBA.

O objetivo da FK é fazer referência a PK de outras tabelas e também garantir a integridade.&nbsp;

A Notícia é que depois de fazer vários projetos de BI, &nbsp;raramente eu vejo um banco de origem com esses pontos. Infelizmente essa é a realidade.

No DW, o objetivo é manter a integridade e criar as SK's para não depender das chaves provenientes do legado. Com base nas bases de dados existentes de clientes, elas são terríveis na maioria. Possuem registros duplicados, não tem integridade nenhuma e o pior: Suas chaves muitas vezes são alfanuméricos e horríveis de se manejar. Exemplo: A chave do registro da tabela de clientes, se chama ch_cliente. Para o registro do cliente 'Gisele' a chave é "gis123ch554". &nbsp;Sim, isso ocorre.


Tendo esse cenário em mente, devemos aplicar SK em nosso modelo e assim garantir a integridade e performance.&nbsp;

Como garanto a integridade e performance?

Como temos no exemplo acima, a chave é um alfanumérico. Para garantir dois itens importantes como estes, a sk deve ser:



Sempre e somente numérica;
Sequencial;


Sendo numérica você irá garantir que todas as ligações feitas entre dimensões e fatos, serão velozes. Sendo sequencial irá garantir que é uma chave primária e íntegra do seu modelo. Exemplo de modelo:&nbsp;Modelo de Dados Dimensional





Como aplicar?



Simples. A sk como descrito acima, garante integridade e performance. Para garantir integridade, os dados não podem estar duplicados, ou seja, não podem existir dados redundantes. Se existirem, as informações para a tomada de decisão não serão reais e podem influenciar no caminho a ser tomado em seu negócio.&nbsp;



Para isso, são chaves primárias também. Então, como aplicar?



Uma vez que tenha os dados para a dimensão de Produtos, por exemplo, e há verificado que estão distintos aplicaque-os no modelo. Isso se resume em fazer a inserção de dados na dimensão de produtos atribuindo uma chave sequencial para a carga do campo de SK. Assim, como você garantiu que os dados para a carga da dimensão de produtos &nbsp;está certinha, terá uma chave íntegra, númerica, sequencial e chave primária ao mesmo tempo.



Se tiver problemas na carga, é porque você não garantiu corretamente. Cheque novamente.





Caso tenha comentários ou deseja compartilhar algo, deixe seu comentário.



Abraço.