Sé que las claves primarias sustitutas generalmente se recomiendan sobre las claves primarias naturales, pero ¿hay algún argumento a favor de las claves primarias sustitutas cuando se trata de nombres de usuario?¿Los nombres de usuario son candidatos válidos para una clave principal?
Respuesta
Si no desea obtener nombres de usuario duplicados, cree un UNIQUE constraint
.
¿Qué pasa si DWong1145
quiere cambiar su nombre de usuario? ¿Va a hacer que todas las relaciones de la base de datos sean UPDATE CASCADE
?
Desde el punto de vista del cliente, usted apuesta. No quiero que mi nombre de usuario sea DWong1145.
NO, debe utilizar el nombre de usuario como una única clave/constante. El nombre de usuario se puede cambiar, solo y por ejemplo: puede ser una marca comercial y el propietario le solicita que lo suelte.
Suena un poco escueto;) * Aunque * eres * correcto. Odio los sistemas en los que no puede cambiar su nombre de usuario, sin embargo, el OP dijo en los comentarios que no quiere que se modifique, así que ... –
Es un buen candidato en cierto sentido, sin embargo, debe considerar si realmente desea hacerlo. Por ejemplo, tiene un usuario con un nombre de usuario determinado, luego el usuario se "borra" (o se marca como eliminado). Por lo tanto, no hay ninguna razón para no permitir crear otro usuario con el mismo nombre de usuario, pero ya está "tomado", ya que es una clave principal.
Una gran desventaja de tener una cadena como clave principal, independientemente de si es un nombre de usuario u otra cosa, es que todas las columnas de clave externa que hacen referencia a la tabla también deben ser cadenas, que es más lenta y desperdicia más espacio.
no tiene por qué ser más lento. un buen motor de base de datos podría preconfigurar cualquier valor de cadena. Además de eso, el uso de claves naturales probablemente eliminará la necesidad de muchas uniones en la aplicación, por lo que las consultas serán más rápidas. Acepto que las llaves naturales generalmente consumen más espacio pero, honestamente, el espacio es barato y abundante. –
- 1. ¿Cuáles son los caracteres válidos para los nombres de macro?
- 2. ¿Cuáles son los nombres de tabla válidos en SQLite?
- 3. ¿Qué son los caracteres válidos en un nombre de servicio (clave) de Windows?
- 4. cómo obtener los nombres de las columnas de la clave principal para una tabla determinada?
- 5. ¿Cuáles son los valores válidos para un campo URL django?
- 6. Nombres de configuración regional válidos
- 7. ¿Cuáles son los valores válidos para http Pragma
- 8. ¿Qué caracteres son válidos en una URL?
- 9. ¿Qué caracteres son válidos/inválidos en un nombre de clave JSON?
- 10. ¿Puedo establecer ignore_dup_key para una clave principal?
- 11. regex para nombres de usuario
- 12. ¿Los beneficios de SFIO sobre STDIO aún son válidos?
- 13. ¿Cuáles son los valores válidos de devolución del módulo Perl?
- 14. candidatos operador incorporados
- 15. Los metadatos de la tienda "CurrentBind" no son válidos. Error
- 16. ¿Cuáles son los caracteres válidos para un nombre de método Java?
- 17. ¿RedBean necesita una clave principal "id"?
- 18. PHP/MySQL - Los caracteres seguros para mostrar los nombres/nombres de usuario/contraseñas, con DOP
- 19. Pasar argumentos de palabras clave a una función cuando los nombres de las variables locales son los mismos que los nombres de los parámetros de funciones
- 20. SQL Server - Caracteres no válidos en los nombres de los parámetros
- 21. Los datos del formulario con codificación URL no son válidos
- 22. Tablas sin clave principal
- 23. Clasificación de clave principal
- 24. ¿Los espacios de nombres son malos para el rendimiento? (PHP)
- 25. FluentNHibernate Muchos-a-uno, donde Referencias clave externa no está a la clave principal y los nombres de columna son diferentes
- 26. IIS 7.0/Visual Studio 2010 - los datos de configuración relacionados para la página no son válidos
- 27. Bases de datos NoSQL: ¿son buenos candidatos para el procesamiento/agregación y acumulación de registros?
- 28. wkhtmltopdf: ¿Qué tamaños de papel son válidos?
- 29. Cambio de clave principal
- 30. ¿Para qué son los espacios de nombres XML?
Mi pregunta es en el contexto de un sistema de autenticación que no lo hará permitir cambios de nombre de usuario Debería haber mencionado eso. –
@Emanuil - para citar a Jeff Goldblum en Jurassic Park, "La vida encuentra un camino". si necesita cambiar sus nombres de usuario algún día, puede estar arrepintiéndose de este momento en este momento ... –
"La información no debe usarse como clave;' datos 'puede"; 'data' no necesita ser modificado, como si siempre fuera entendido por un programa. ¿Qué sucede si llamo a SO y solicito cambiar mi usuario _id_? No puedo hacer eso, pero sí puedo cambiar mi nombre de usuario_. –