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?