Autor Tema: problema con una foreign key de una primary key compuesta ( MYSQL )  (Leído 13336 veces)

jga

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 31
    • Ver Perfil
Hola amigos , tengo un problema al relacionar dos tablas en mysql , el problema , no se si llamarlo asi es el siguiente :
tengo dos tablas , en una profesores tengo la primary key compuesta por el nombre , apellidos y el nombre del centro de trabajo , porque he elegido estos tres campos para crear una clave primaria compuesta? , porque el dni , que seria lo ideal no esta disponible como opcion , y como dos profesores de distintos centros se pueden llamar igual ( hay un par que se apellidan igual , por increible que parezca ) poniendo el centro tambien , ya es muy dificil , por no decir imposible , que en el mismo centro docente dos profesores se llamen y apelliden idenicamente .

en la segunda tabla tengo las asignaturas ,; cada profesor de ese centro tiene una especialidad , que no tiene otro profesor del centro ( podria haber varios profesores en el centro que tambien tienen esa especialidad en cuyo caso seria una relacion N:N y habria que crear otra tabla con la relacion y sus atributos , mas las claves primarias de las otras dos entidades ) y llego al qui de la cuestion despues del rollo , al intentar asignar las foreign key nombre apellidos y centro que aparecen en asignatura como foraneas de nombre ,apellidos y centro de la primaria de la tabla profesores solo me coge un campo como foranea pero los otros dos no .

pongamos que escribo la sentencia :
 alter table asignaturas add foreign key (nombre_prof,apellidos_prof,centro_prof) references profesores (nombre,apellidos,centro)

y no me da ningun error , la sentencia se valida como buena , pero al hacer :

describe asignaturas

ma aparece en el campo key : asignatura PRI , nombre MUL y apellidos y centro no tienen nada en el campo key .

y aqui despues de todo el rollo pesado este que acabo de soltar viene la pregunta final :

es esto correcto? quiero decir , lo he hecho bien y solo debe aparecer un campo MUL de las tres foraneas ,  para la clave primaria compuesta por tres campos de la otra tabla ?
es que segun el manual para una clave primaria compuesta , hacen falta los mismos campos para la clave foranea. tambien he intentado añadirlas una a una pero me da el error de cannot add constraint ....blablabla

espero no haber sido un pesado pero queria explicarme lo mas claramente posible , un abrazo fuerte y gracias.

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:problema con una foreign key de una primary key compuesta ( MYSQL )
« Respuesta #1 en: 08 de Abril 2015, 00:53 »
Hola, una clave primaria en la práctica profesional raramente es una clave compuesta, y menos por un nombre , apellidos y nombre de centro de trabajo.

Lo normal es que la clave primaria sea una columna única, por ejemplo idProfesores para la tabla profesores e idCentros para la tabla de centros. Si no tienes restricciones, esto sería lo que te recomendaría

Salu2

jga

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 31
    • Ver Perfil
Re:problema con una foreign key de una primary key compuesta ( MYSQL )
« Respuesta #2 en: 08 de Abril 2015, 08:07 »
Gracias de nuevo Ogramar , un abrazo fuerte.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".