Chave primaria: Natural ou Artificial (banco relacional)

Galera,

Estou modelando um banco de dados relacional e como não tenho essa pratica fiquei com uma duvida sobre as chaves das tabelas. Particularmente ja trabalhei (como desenvolvedor) com ambas situações, e para ser sincero prefiro usar chave natural por ficar mais claro (natural) o identificador unico da tabela. Mas sei que chave natural tem seus problemas (tendencia a chaves compostas, risco do negocio mudar e ter que alterar a chave…) da mesma forma que usar um identificador artificial também tem suas particularidades. Queria saber a opnião de outras pessoas com relação a esse assunto, ou seja, qual o melhor custo beneficio. Vou criar um banco que tende a ser muito grande (muitas tabelas e dados) e a aplicação vai usar um framework de ORM. Como exemplo classico, para o caso da chave artificial eu teria para uma tabela ‘Pessoa’ um campo ‘id’ do tipo ‘int’ sequencial, com uma unique key no campo ‘cpf’. Para o mesmo exemplo usando o formato natural, eu não teria o campo ‘id’ e tornaria o campo ‘cpf’ chave. Qual a opnião de vocês considerando varias variaveis como performance, clareza, consistencia…?

Grato.

Eu tenho a opinão de que qualquer coisa que usuários vejam, eles vão querer ou precsar mudar (cadastrar um cpf errado por exemplo).

Por isso sempre utilizo ids artificiais e quando faz sentido, uma unique key em algum outro campo.
Tenho experimentado não ao invés de gerar esse id artificial no banco, gerar na aplicação, mas aí são outros quinhentos.

@AbelBueno obrigado pelo retorno, vou seguir essa linha.