2010-01-27 7 views

Respuesta

8

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?

+0

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. –

+1

@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 ... –

+0

"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_. –

4

Desde el punto de vista del cliente, usted apuesta. No quiero que mi nombre de usuario sea DWong1145.

7

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.

+0

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 ... –

5

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.

2

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.

+0

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. –

Cuestiones relacionadas