¿Es malo usar el nombre de usuario como clave principal en el diseño de la base de datos?
-
22-07-2019 - |
Pregunta
Un amigo me dijo:
¿Qué clave única usas? Te espero no están guardando el nombre de usuario completo --- ¡Esto consumirá demasiado espacio en la mesa! Asigne un ID de usuario único a cada (único) userNAME y guarde este userID (debe estar INTEGRADO SIN FIRMAR auto_increment o BIGINT UNSIGNED autoincremento). No te olvides de crear una referencia
LLAVE EXTRANJERA (
userID
) REFERENCIASusertable
(userID
) en todas las tablas utilizando el ID de usuario.
¿Es correcta la afirmación anterior? ¿Por qué o por qué no?
Solución
Creo que tiene razón (por la razón equivocada) porque la clave primaria no puede cambiar, pero username
puede cambiar. Por lo tanto, debe usar userid
porque no cambiaría.
Otros consejos
Tiene razón por las razones equivocadas. El espacio de la tabla es secundario al hecho de que su aplicación podría exigir más adelante que los nombres de usuario se puedan cambiar o incluso dejar de ser únicos (podría imaginar una aplicación donde no se requieren nombres de usuario únicos, como Stack Overflow) y, por lo tanto, su aplicación necesitaría una refactorización importante y migración de datos en lugar de un ligero cambio en el otro caso (PK entero).