Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/09/2012, 12:44
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como crear 2 tablas con foreign key. Conectado campos que no son PRIMARY K

1) Una foreign key es, por definición, un campo o conjunto de campos cuyo valor se referencia a la clave primaria de otra tabla. En este contexto, no puedes crear una FK que no apunte a una PK.
2) MySQL provee una extensión a esta regla que consiste en que puedes apuntar una FK a un campo o conjunto de campos que no sean PK, en tanto ese campo (o conjunto) tenga definido un indice UNIQUE en su tabla. En los hechos, implica que ese campo referido, en su tabla, debe cumplir con uno de lo los requerimientos de una PK: tener un valor único en esa misma tabla.

Lo que estás haciendo mal es intentar hace run mal diseño de la base, por cuanto una FK indica una dependencia entre una tabla respecto de otra, y no es posible que la existencia de un cliente dependa de que exista la cuenta. En todo caso la cuenta pertenece al cliente y no al revés.

Por cierto: No tiene sentido ni utilidad relacionar en forma simétrica un cliente con su cuenta. Es decir: Si la cuenta pertenece al cliente, la cuenta lleva como FK el ID del cliente, pero el cliente no debe llevar como FK el ID de la cuenta, porque se generaría una relación circular, imposible de cumplir.

Si una cuenta tiene más de un titular, requiere una tabla adicional para administrar la relación N:N.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 26/09/2012 a las 12:56