Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida entre PK e FK

Professor, é realmente necessário definir como PK, todas os os campos vindos das dimensões em uma tabela de fato? Somente adicioná-los como chave estrangeira não seria válido?

1 resposta
solução!

Olá Guilherme, Tudo bem?

As primary keys e as foreign keys tem objetivos distintos, normalmente você sempre vai querer ter uma primary key em todas as suas tabelas. Em banco de dados este é um requisito para normalização de tabelas.

O objetivo de uma primary key é permitir identificar o registro de forma única, não existe outra primary key para este mesmo registro da mesma forma que nenhum outro registro possui esta primary key, isso permite que você garanta que aquilo que está sendo selecionado está correto.

As foreign keys tem como principal objetivo manter a consistência, você consegue usando elas garantir que os registros estão referenciando os registros corretos e evitar que novos registros sejam inseridos de forma errônea.

Se por exemplo você tem duas tabelas, uma de clientes e outra de contratos e na tabela de contratos você tem uma foreign key usando a primary key da tabela de clientes você pode ter certeza de duas coisas:

  • Todos os clientes mencionados na tabela de contratos existem - Caso contrário o banco de dados não permitira sua inclusão.
  • Todos os contratos que possuem um cliente podem ser rastreados de volta ao cliente.

Trazendo para o mundo do BI você pode desejar ter uma PK formada por mais de um campo quando deseja garantir a unicidade de um grupo de registros, quando por exemplo a PK natural de um registro não faz sentido em determinada transformação.