Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Qual é a melhor prática para chaves primárias em tabelas?


Sigo algumas regras:
  1. As chaves primárias devem ser tão pequenas quanto necessário. Prefira um tipo numérico porque os tipos numéricos são armazenados em um formato muito mais compacto do que os formatos de caracteres. Isso ocorre porque a maioria das chaves primárias serão chaves estrangeiras em outra tabela, bem como usadas em vários índices. Quanto menor sua chave, menor o índice, menos páginas no cache você usará.
  2. As chaves primárias nunca devem ser alteradas. Atualizar uma chave primária deve estar sempre fora de questão. Isso ocorre porque é mais provável que seja usado em vários índices e usado como uma chave estrangeira. A atualização de uma única chave primária pode causar o efeito cascata das alterações.
  3. NÃO use "sua chave primária do problema" como sua chave primária do modelo lógico. Por exemplo, número do passaporte, número do seguro social ou número do contrato do funcionário, pois essas "chaves naturais" podem mudar em situações do mundo real. Certifique-se de adicionar restrições UNIQUE quando necessário para impor consistência.

Em substituto vs chave natural, refiro-me às regras acima. Se a chave natural for pequena e nunca mudar, ela pode ser usada como chave primária. Se a chave natural for grande ou provavelmente mudar, eu uso chaves substitutas. Se não houver chave primária, eu ainda faço uma chave substituta porque a experiência mostra que você sempre adicionará tabelas ao seu esquema e desejará colocar uma chave primária no lugar.