Cita:
Iniciado por reborn Ademas dice:
Yo relaciono perfil con usuario. Es logico q tiene q existir un usuario antes de asignarle un perfil... por lo q perfil tiene q relacionarse con el id del usuario, de lo contrario, no existiria...
Y volviendo al tema principal, el del error, era eso lo q me pasaba. La FK no tenia un valor y no podia ser relacionada
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.