Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

¿Se pueden referenciar dos campos de una tabla a un campo de otra tabla?

Estas en el tema de ¿Se pueden referenciar dos campos de una tabla a un campo de otra tabla? en el foro de Mysql en Foros del Web. Hola a todos, tengo un pequeño problema al intentar referenciar dos tablas, os comento a ver si alguien detecta algo que estoy haciendo mal: - ...
  #1 (permalink)  
Antiguo 23/10/2011, 02:28
Avatar de TheScript  
Fecha de Ingreso: septiembre-2011
Ubicación: Spain
Mensajes: 164
Antigüedad: 12 años, 7 meses
Puntos: 30
¿Se pueden referenciar dos campos de una tabla a un campo de otra tabla?

Hola a todos, tengo un pequeño problema al intentar referenciar dos tablas, os comento a ver si alguien detecta algo que estoy haciendo mal:

- Tabla usuarios:
Cita:
id_perfil || int (11) || Autoincrement || (Marcado como indice de columna)
id_usuario || int (11) || (Marcado como indice de columna)
... mas datos ....
- Tabla amistades:
Cita:
id_usuario_a || int (11) || (Marcado como indice de columna)
id_usuario_b || int (11) || (Marcado también como indice de columna)
estado || int ||
El problema es que con MySql Administrator intento aplicar una referencia:

Que id_usuario_a REFERENCIE a id_usuario
Que id_usuario_b REFERENCIE a id_usuario

Y me salta el siguiente error:

Cita:
MySql Error number 1500
¿No puedo apuntar los dos al mismo campo?

No se que puede estar pasando, en otras tablas lo he referenciado perfectamente, con la diferencia de que en las demás tablas referencio a la vez id_perfil y id_usuario, en vez de dos veces id_usuario....

Si alguien me puede orientar un poquillo lo agradecería. Un saludo!
  #2 (permalink)  
Antiguo 23/10/2011, 05:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ¿Se pueden referenciar dos campos de una tabla a un campo de otra tabla?

Por lo que dices en la tabla Usuarios tienes una clave primaria de doble campo (id_perfil, id_usuario), lo que no tiene mucho sentido, porque un usuario sólo requeriría de su propio ID para ser identificable. El perfil es un accesorio al usuairo, y no parte de su identidad.
Pero el problema central es que si esa tabla tiene efectivamente una PK de dos campos, no puedes referirte a ella a través de un sólo campo de otra tabla, porque una FK es un campo o conjunto de campos que apuntan a la clave primaria de otra tabla, contra la que validan sus respetvos valores.
La regla es simple, además, si una PK está compuesta por más de un campo, la FK además de estar compuesta por la misma cantidad de campos, deben ser todos del mismo tipo, y en el mismo orden.

Verifica eso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campos, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:50.