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?
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?
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:
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.