Eu tenho várias tabelas nas quais os registros podem ser identificados exclusivamente com vários campos comerciais amplos. No passado, eu usei esses campos como um PK, com esses benefícios em mente:
- Simplicidade; não há campos estranhos e apenas um índice
- O agrupamento permite junções de mesclagem rápidas e filtros baseados em intervalo
No entanto, ouvi um argumento para criar uma IDENTITY INT
PK sintética e aplicar a chave comercial com uma UNIQUE
restrição separada . A vantagem é que o PK estreito gera índices secundários muito menores.
Se uma tabela não tiver outros índices além da PK, não vejo motivo para favorecer a segunda abordagem, embora em uma tabela grande provavelmente seja melhor supor que os índices possam ser necessários no futuro e, portanto, favorecer a PK sintética estreita . Estou faltando alguma consideração?
Aliás, não estou argumentando contra o uso de chaves sintéticas em data warehouses, apenas estou interessado em quando usar uma única PK ampla e quando usar uma PK estreita mais um amplo Reino Unido.