Ver Mensaje Individual
  #6 (permalink)  
Antiguo 17/12/2013, 10:12
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: 16 años, 5 meses
Puntos: 2658
Respuesta: CakePHP - Cannot add or update a child row: a foreign key constraint fails

Bueno, or lo pronto estás tratando de aprender a relacionar tablas, basandote en un manual de MySQL donde el autor sescribe para quienes ya entienden y manejan los fundamentos del modelo Entodad-Relación y saben cómo diseñar una base de datos relacional...

El asunto se te va a complicar porque hay muchos conceptos que evidentemente no conoces.
Por lo pronto, antes de llegar a establecer qué tabla lleva la FK, debes entender cómo es la relación entre las entidades de tu sistema.
Resumiendo, tienes:
1) Usuarios.
2) Perfiles.
3) Posts.
Ero estos tres elementos sólo nos dice eso: Que hay usuarios, perfiles y posts, pero no explican las relaciones entre ellos.
Esas relaciónes se ven cuando expresas el comportamiento y las vinculaciones con las reglas del negocio:
- "Un usuario debe tener un perfil".
- "Un mismo perfil es aplicable a uno o más usuarios".
- "Un usuario puede tener cero o N posts".
- "Cada post sólopuede pertenecer a un único usuario".
- "Cada post tiene un tema inicial".
- "Cada tema iniciado tiene un posts asociado."

Esto es un ejemplo.
En este punto se puede ver que cada una de las tablas se puede relacionar en un vinculo de uno a uno (1:1), de uno a muchos (1:N) o de muchos a muchos (N:N).
Esa es la relación que se debe mirar para saber donde va la FK y de dónde viene la PK: La FK va donde la cardinalidad de la relación es N. Siempre.
en el caso de las relaciones N:N, eso se construye creando una tabla adicional, desde la cual la relación vuelve a ser 1:N respecto de la tabla referida.

En este sentido, los usuarios tienen perfiles, pero sólo un perfil cada uno.Pero hay N perfiles posibles, entonces la relación Usuario - > perfil es N:1, y por tanto la FK de Perfil va en el usuario, pero no al revés-
¿Se va entendiendo?

por eso tu tabla de perfiles (y la de posts) está mal construida.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)