¿Por qué usar una clave primaria de incremento automático cuando existen otros campos únicos?

Estoy tomando un curso llamado "sistemas de bases de datos" y para nuestro proyecto de clase tengo que diseñar un sitio web.

Aquí hay un ejemplo de una tabla que creé:

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

El profesor me dijo que "uid" (identificación de usuario) era completamente inútil e innecesario y que debería haber usado el nombre de usuario como clave principal, ya que no hay dos usuarios que puedan tener el mismo nombre de usuario.

Le dije que era conveniente para mí usar una identificación de usuario porque cuando llamo a algo como domain.com/viewuser?id=5 solo verifico el parámetro con:is_numeric($_GET['id'])... no hace falta decir que no estaba convencido.

Como he visto user_id y otros atributos similares (thread_id, comment_id, entre otros) en muchos tutoriales y he visto el esquema de la base de datos de software popular (por ejemplo, vbulletin), debe haber muchas otras razones (más fuertes).

Entonces, mi pregunta es: ¿cómo justificaría la necesidad de una identificación de incremento automático no nulo como clave principal frente al uso de otro atributo como el nombre de usuario?

Respuestas a la pregunta(12)

Su respuesta a la pregunta