Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/11/2012, 12:48
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: Llaves foraneas para agregar datos a una tabla



Lo siento, pero es un error común en el aprendizaje...


Has creado lo que se denomina "dependencia circular", lo que representa uno de los peores errores que se pueden cometer.

Explico: Una dependencia circular se produce cuando relacionas dos tablas entre si haciendolas interdepender. Esto hace que sea imposible ingresar un registro en la tabla A, si no existe previamente el registro en la B a causa de una FK. Pero tampoco puedes insertar un registro en la B porque posee una FK que depende de la A....
Esa relación jamás se debe construir, porque es imposible de cumplir.

Tu error está en realidad a nivel de definición del sistema: Una relación 1:1 como la que propones requiere que una única FK esté en una única tabla. No requiere que existan en ambas porque la unicidad se crea al declara UNIQUE ese campo.
¿En donde va la FK?
Es una decisión de diseño. Puede ir en cualquiera de las dos tablas, pero no en las dos. Lo que se hace normalmente es ver cuál sería la dependencia "natural" de las entidades.
En tu caso, una Sección siempre es evaluada por un único Evaluador, pero el Evaluador se puede inferir como variable (entre uno y otro examen podría ser reasignado), mientras que la sección siempre existe. Eso podría decir definir que la FK vaya en Sección, y no en Evaluador.

En realidad, el sistema no puede tener dos únicas tablas, porque un Evaluador no evalúa una sección sino el examen tomado a una sección en un momento determinado del tiempo. Por ende, el sistema en realidad requiere un diseño mayor, con entidades mejor definidas.
Pero no sé si eso es lo que tienes que hacer.
__________________
¿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; 15/11/2012 a las 12:55