As chaves substitutas (normalmente números inteiros) têm o valor agregado de tornar as relações da tabela mais rápidas e mais econômicas na velocidade de armazenamento e atualização (ainda melhor, chaves estrangeiras não precisam ser atualizadas ao usar chaves substitutas, em contraste com os campos das chaves comerciais, que mudam de vez em quando).
A chave primária de uma tabela deve ser usada para identificar exclusivamente a linha, principalmente para fins de junção. Tabela Pense em uma pessoa: os nomes podem mudar e não têm garantia de exclusividade.
Think Companies: você é uma empresa feliz da Merkin que faz negócios com outras empresas da Merkia. Você é esperto o suficiente para não usar o nome da empresa como chave primária; portanto, você usa o ID exclusivo da empresa do governo da Merkia em seus 10 caracteres alfanuméricos. Então a Merkia altera os IDs da empresa porque eles acharam que seria uma boa ideia. Tudo bem, você usa o recurso de atualizações em cascata do seu mecanismo de banco de dados, para uma alteração que não deve envolver você em primeiro lugar. Mais tarde, seus negócios se expandem e agora você trabalha com uma empresa na Freedonia. O ID da empresa freedoniana tem até 16 caracteres. Você precisa aumentar a chave primária de identificação da empresa (também os campos de chave estrangeira em Pedidos, Emissões, MoneyTransfers etc.), adicionando um campo País na chave primária (também nas chaves estrangeiras). Ai! Guerra civil na Freedonia, é s divididos em três países. O nome do país do seu associado deve ser alterado para o novo; atualizações em cascata para o resgate. BTW, qual é a sua chave primária? (Country, CompanyID) ou (CompanyID, Country)? O último ajuda a participar, o primeiro evita outro índice (ou talvez muitos, caso você deseje que seus pedidos sejam agrupados por país também).
Tudo isso não é prova, mas uma indicação de que uma chave substituta para identificar exclusivamente uma linha para todos os usos, incluindo operações de junção, é preferível a uma chave comercial.