Ver Mensaje Individual
  #4 (permalink)  
Antiguo 22/02/2013, 06:34
Nymeria84
 
Fecha de Ingreso: febrero-2013
Mensajes: 25
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Problema con indice unico en mysql

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Perfectamente posible, aunque tienes que tener en cuenta que deberás reemplazar todo uso de ese ID como FK en las tablas donde se use como tal.

También, aunque en ese caso estarías creando una clave candidata, con lo que uno se termina preguntando para qué tienes la otra...

Es algo redundante tener dos claves posibles, aunque no es necesariamente ilógico (habría que ver el sistema en general).

Lo que si te puedo decir, es que si tienes un username, sea como sea que lo llames, y un username es único por usuario, la PK como AI es total y absolutamente innecesaria.
En tu caso no me queda claro si id_user es el username y login es el password, o qué es cada una de esas columnas, por lo que sí te puedo decir es que es un error diseñar un índice UNIQUE donde juntes username y password (si eso estás pensando), por cuanto en ese caso un mismo usuario podría tener más de una clave (N claves) y eso es un error grave de seguridad y diseño.

Personalmente soy enemigo de usar IDs autoincrementales, porque a la larga terminan dando más problemas que las "soluciones" que pueden representar.
Respecto a la creación de un indice UNIQUE, simplemente puedes recurrir al manual de referencia: [URL="http://dev.mysql.com/doc/refman/5.6/en/create-index.html"]CREATE INDEX[/URL]

¿Podrías explicar un poco mejor el uso de los campos que mencionas?

Muchas gracias por vuestra rápida respuesta.

gnzsoloyo el problema es que la base de datos ya estaba hecha y el proyecto empezado, corre prisa, y reestructurar todo se que sería lo mejor, pero es un tiempo que ahora no tengo, y que cuando la cantidad de datos aun sea mayor, va a costar más, pero bueno.

Haber creo que no me he explicado bien. Existiria una tabla de clientes y otra de usuarios.

en la tabla de clientes hay un id_cliente autoincremental como clave primaria.
por otro lado esta el id_usuario que seria el id de la tabla usuarios, para que cada cliente pertenezca a un usuario de la otra tabla. Y el campo login es un username de cliente. La password es otro campo a parte.

Entonces el login de cliente es unico por usuario.