Por que usar uma chave primária de incremento automático quando existem outros campos exclusivos?

Estou fazendo um curso chamado "sistemas de banco de dados" e, para o nosso projeto de aula, tenho que criar um site.

Aqui está um exemplo de uma tabela que eu criei:

CREATE TABLE users
(
  uid INT NOT NULL AUTO_INCREMENT,
  username VARCHAR(60),
  passhash VARCHAR(255),
  email VARCHAR(60),
  rdate DATE,
  PRIMARY KEY(uid)
);

O professor me disse que "uid" (ID do usuário) era completamente inútil e desnecessário, e eu deveria ter usado o nome de usuário como chave primária, pois dois usuários não podem ter o mesmo nome de usuário.

Eu disse a ele que era conveniente para mim usar uma identificação de usuário, porque quando eu chamo algo como domain.com/viewuser?id=5, apenas verifico o parâmetro com:is_numeric($_GET['id'])... Escusado será dizer que ele não estava convencido.

Desde que eu vi user_id e outros atributos semelhantes (thread_id, comment_id, entre outros) em vários tutoriais e olhando o esquema de banco de dados de software popular (por exemplo, vbulletin), deve haver muitos outros motivos (mais fortes).

Então, minha pergunta é: como você justificaria a necessidade de um ID de incremento automático não nulo como chave primária versus usar outro atributo como o nome de usuário?

questionAnswers(12)

yourAnswerToTheQuestion