Ver Mensaje Individual
  #12 (permalink)  
Antiguo 17/12/2013, 11:22
Avatar de reborn
reborn
 
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: CakePHP - Cannot add or update a child row: a foreign key constraint fails

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Aquí es donde se produce la confusión.
Cuando dices "asignarle un perfil", estás hablando de asignar permisos, no de publicar un cuadro de datos compartibles.
En este caso, por tu descripción, es una red social, y el perfil lo crea el usuario para si mismo. Por ende, como usuario debe existir, y en ese caso el perfil está relacionado con el usuario en una relación 1:1.
Ahora bien, el caso de las cardinalidades 1:1 es un caso que se debe manejar con cuidado, porque puede generar ese tipo de errores de relaciones circulares.
Nunca se debe establecer una relación de FK circular. Eso por lo pronto. Pero en el caso de las 1:1, lo que se debe analizar es cual es la entidad de mayor jerarquía conceptual, y esa será la entidad "padre", por así decirlo.
Básicamente, en una red social, donde el usuario es la entidad fuerte, el perfil es una entidad débil y por tanto carece de PK propia, por lo que hereda la de la entidad fuerte de la que depende.
Para que lo visualices: Un usuario puede existir sin definir el perfil, pero un perfil no puede existir sin pertenecer a un usuario. Por consecuencia, "perfil" es una entidad débil dependiente de "user", y según el modelo relacional, no debe tener PK propia sino que hereda la del usuario.
En ese caso, la única de las dos tablas que posee FK es "perfil", y esta FK apunta ala PK de user.

¿Se entiende?


Detalle importante: Si el perfil es OPCIONAL, entonces no debe ser declarado como NOT NULL en el campo usado como FK de la tabla Perfil.
Perfecto. Me quedo clarisimo.
Perdon por la confusion pero no manejo lenguaje tan tecnico.

Igual las demas respuestas me abrieron el marote ajaja.
Me voy a poner a leer sobre fundamentos de bases de datos.