Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

relacion entre tablas

Estas en el tema de relacion entre tablas en el foro de Mysql en Foros del Web. Hola Mi problema es que no puedo relacionar dos tablas. En la tabla docente tengo una campo llamado cedula y lo tengo como llave primaria ...
  #1 (permalink)  
Antiguo 15/12/2011, 10:56
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 5 meses
Puntos: 0
Pregunta relacion entre tablas

Hola

Mi problema es que no puedo relacionar dos tablas.

En la tabla docente tengo una campo llamado cedula y lo tengo como llave primaria y unica, y en la tabla materias tengo una campo llamado cedula_doc que vendria siendo la cedula del docente de la tabla docente y tambien lo tengo con llave primaria.

El problema es que al momento de relacionar la tabla no me aparece el campo cedula_doc pero si id_materia.

A que se debe el problema?

Gracias
  #2 (permalink)  
Antiguo 15/12/2011, 12:02
Avatar de 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: relacion entre tablas

¿Podrías postear la consulta que haces?
Así como lo cuentas no se entiende nada y no tenemos idea de qué estas haciendo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 15/12/2011, 12:44
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: relacion entre tablas

hola gnzsoloyo gracias por responder.

El problema no es en la consulta sino en phpmyadmin , que no puedo relacionar la tabla.

Este es mi tabla docente:



Mi tabla Materia:




Aqui es donde no puedo hacer la relacion:



saludos

Última edición por propa; 15/12/2011 a las 12:52
  #4 (permalink)  
Antiguo 15/12/2011, 12:53
Avatar de 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: relacion entre tablas

Una relación entre Docente y Materia es una relación N:N entre las dos tablas. Siempre.
Esto es porque un Docente puede dictar más de una materia y una misma Materia peude ser dictada por más de un docente.
Por definición del modelo Entidad-Relación, toda relación N:N crea una tabla donde la PK está formada por ambas PK, una de de cada una de las tablas origen.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 15/12/2011, 13:09
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: relacion entre tablas

pero me surge una pregunta, si yo edito la cedula del docente se me actualiza en la tabla materias?
  #6 (permalink)  
Antiguo 15/12/2011, 13:26
Avatar de 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: relacion entre tablas

No necesariamente. Sólo si has incluido la cláusula ON UPDATE CASCADE, y esto si y sólo si lo haces en la tabla base, y sólo se produce en los registros relacionados entre ambas tablas.

Las relaciones de FK tienen por objeto asegurar la integridad referencial y la consistencia de los datos. No crear interacciones automáticas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 15/12/2011, 13:30
Avatar de 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: relacion entre tablas

Tu problema base es que quieres hacer una FK apuntando a un campo que no es PK (cedula), y una FK sólo puede apuntar a una PK o a una clave UNIQUE.
Por otro lado, si en tu modelo, la cédula del docente es única e irrepetible, elimina el ID y declara a ese capo como PK.
Una PK no tiene por qué ser numérica y autoincremental. Puede ser cualquier cosa en tanto se cumpla que:
1) Sólo contiene valores unicos, y 2) No puede ser NULL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 15/12/2011, 15:05
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: relacion entre tablas

gnzsoloyo, ya yo tengo cedula de la tabla docente como primaria, si ves las imagenes te daras cuenta, y el campo cedula_doc de la tabla materia tambien lo tengo como primario.
Mi problema se genera al momento de relacionar cedula con cedula_doc como ves en la tercera imagen, para seleccionar cedula_doc no me aparece, me aparece es el id_materia que tambien lo tengo como primario



una vez se me presento ese problema, pero no me acuerdo como lo solucione
  #9 (permalink)  
Antiguo 15/12/2011, 16:49
Avatar de 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: 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)
  #10 (permalink)  
Antiguo 15/12/2011, 17:51
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: relacion entre tablas

ok, tomare tu consejo.

osea la tabla docente_materia quedaria

id
cedula_docente
Nombre_materia

y la tabla materia quedaria:

id
Nombre_materia
grado

quedaria asi? que te parece si yo coloco mi bd aqui y me das tu opinion? gracias por tu ayuda
  #11 (permalink)  
Antiguo 15/12/2011, 17:57
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: relacion entre tablas

y otra pregunta aparte

por que cuando yo quiero asignarle pk a cedula_doc en la tabla materias me aparece este error



y si se lo asigno desde donde esta resaltado me deja

  #12 (permalink)  
Antiguo 15/12/2011, 21:01
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: relacion entre tablas

gnzsoloyo creo que te equivocastes de post jajaja
  #13 (permalink)  
Antiguo 16/12/2011, 03:52
Avatar de 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: relacion entre tablas

Lo siento. Tenía dos posts abiertos.

La primera frase sí era para ti: Tienes que borrar primero la PK anterior, ya que no pueden definirse dos PK en una misma tabla.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #14 (permalink)  
Antiguo 16/12/2011, 10:47
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: relacion entre tablas

ok gracias por tu ayuda.

volvere por aqui para que me den su opinion sobre mi bd

gracias
  #15 (permalink)  
Antiguo 16/12/2011, 12:37
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: relacion entre tablas

gnzsoloyo ahi postea mi bd para que me des tu opinion

http://www.forosdelweb.com/f86/opinion-sobre-bd-964739/

gracias

Etiquetas: relacion, tabla, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:01.