Ver Mensaje Individual
  #9 (permalink)  
Antiguo 15/12/2011, 16:49
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: 17 años
Puntos: 2658
Respuesta: relacion entre tablas

En realidad no tienes la cédula como PK. has hecho una tontería muy común: Has creado una PK con los dos campos, cuando uno de ellos es un auto_increment. Siento decirlo así.
Me explico:
El id_doc de por sí es único, por lo que no requeriría de ningún otro campo para ser PK. Como se incrementa automáticamente, cada INSERT crea un valor nuevo y no repetitivo.
Pero como lo estás combinando con la cédula, en realidad estás creando una PK que puede duplicar valores de cédulas.
Para que quede claro: Tu PK puede aceptar perfectamente esto:
Cita:
(1, 12345678)
(2, 12345678)
(3, 12345678)
(4, 12345678)
(4, 12345679)
(4, 12345670)
Es decir, que en tu caso se pueden repetir en diferentes registros el mismo numero de cédula, o repetir el id_doc, con diferentes cédulas. Eso es un error de diseño.

No te olvides que en una PK de dos campos, lo que es único es el par combinado.
Lo que yo te digo es que si la cédula ya es un identificador único, entonces lo que te conviene es eliminar el id_doc y dejar la cédula. A fin de cuentas, con ella es suficiente.

Finalmente, tu problema inicial es que como has definido la PK con dos campos, entonces la FK también debe tener dos campos, del mismo tipo, y en el mismo orden.

PD: Yo sigo insistiendo que hacer la relación entre dos tablas es una mala idea. Necesitas la tabla Docente_Materia para esa base. En tu modelo, un docente puede dar muchas materias, pero cada materia sólo puede ser dada por un único docente. O sea que no podrías abrir dos cursos para la misma asignatura, que cubrieran horarios solapados... Y ni hablar de contratar otro docente paa la misma asignatura.
Eso es una mala idea.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)