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

Problema FK y PK Compuesta

Estas en el tema de Problema FK y PK Compuesta en el foro de Mysql en Foros del Web. Hola a Todos: Vuelvo de nuevo a molestar por estos lados. Lo que pasa es que tengo un problema, que por mas que investigue no ...
  #1 (permalink)  
Antiguo 23/06/2010, 09:24
 
Fecha de Ingreso: mayo-2010
Mensajes: 21
Antigüedad: 14 años, 6 meses
Puntos: 0
Problema FK y PK Compuesta

Hola a Todos:


Vuelvo de nuevo a molestar por estos lados. Lo que pasa es que tengo un problema, que por mas que investigue no consigo solucionar. Tengo un caso especial donde hay una tabla, con dos atributos, ambos son PK (Una PK Compuesta), en donde, a cada atributo le llega una relacion de una tabla distinta. Para ser mas grafico, adjunto el pedazo del Modelo E-R:

[URL="http://yfrog.com/f/jp71424888j/"]http://yfrog.com/f/jp71424888j/[/URL]


Despues de crear las tablas, y las FK, resulta que, cuando miro en phpMyAdmin, me muestra solo UNA FK, la otra se pierde. Si invierto el Orden de Creacion de la FK, me crea la primera que encuentra y la otra simplemente la Ignora. Hace un año mas o menos, trabaje con una tabla asi en Oracle XE, y las relaciones se dieron sin problemas, entonces, que puede ser?

Adjunto la Captura de Pantalla para que ustedes lo vean:


[URL="http://yfrog.com/j5estructuraij"]http://yfrog.com/j5estructuraij[/URL]


Adjunto El Codigo de las Tres tablas y las FK's

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS Haciendas(
  2.     Codigo_Hacienda SMALLINT(4) NOT NULL AUTO_INCREMENT,
  3.     Nombre_Hacienda VARCHAR(25) NOT NULL,
  4.     Propietario VARCHAR(40) NOT NULL,
  5.     Encargado VARCHAR(40) NOT NULL,
  6.     Asistente_Tecnico INT(12) NOT NULL,
  7.     Ubicacion SMALLINT(5) NOT NULL,
  8.     Altura SMALLINT(4) NOT NULL,
  9.     Hect_Utilizadas MEDIUMINT(7) NOT NULL,
  10.     Pastura TINYINT(2) NOT NULL,
  11.     Tipo_Sistema TINYINT(2) NOT NULL,
  12.     Canal_Distribucion TINYINT(1) NOT NULL,
  13.     Distribuidor SMALLINT(5) NOT NULL,
  14.     Email VARCHAR(25),
  15.     Observaciones MEDIUMTEXT,
  16.     PRIMARY KEY (Codigo_Hacienda)
  17. ) ENGINE=InnoDB, COMMENT='Tabla De Registro De Haciendas';
  18.  
  19. CREATE TABLE IF NOT EXISTS Animal(
  20.     Codigo_Animal SMALLINT(4) NOT NULL AUTO_INCREMENT,
  21.     Nombre_Animal VARCHAR(15),
  22.     Tipo_Animal TINYINT(1) NOT NULL,
  23.     Fecha_Nacimiento DATE NOT NULL,
  24.     Padre SMALLINT(4) NOT NULL,
  25.     Madre SMALLINT(4) NOT NULL,
  26.     Peso_Nacimiento SMALLINT(4),
  27.     Condicion_Racial VARCHAR(40),
  28.     Categorizacion VARCHAR(50),
  29.     Inseminador INT(12),
  30.     PRIMARY KEY (Codigo_Animal)
  31. ) ENGINE=InnoDB, COMMENT='Tabla De Animales No Nacidos en la Hacienda';
  32.  
  33.  
  34. CREATE TABLE IF NOT EXISTS Animales_Por_Hacienda(
  35.     Cod_Hacienda_APH SMALLINT(4) NOT NULL,
  36.     Cod_Animal_APH SMALLINT(4) NOT NULL,
  37.     PRIMARY KEY (Cod_Hacienda_APH, Cod_Animal_APH)
  38. ) ENGINE=InnoDB, COMMENT='Tabla De Animales Por Hacienda';
  39.  
  40. -- FK's Tabla: Animales_Por_Hacienda
  41.  
  42. ALTER TABLE Animales_Por_Hacienda ADD CONSTRAINT Fk_CodHacienda_APH FOREIGN KEY (Cod_Hacienda_APH) REFERENCES Haciendas (Codigo_Hacienda);
  43. ALTER TABLE Animales_Por_Hacienda ADD CONSTRAINT Fk_CodAnimal_APH FOREIGN KEY (Cod_Animal_APH) REFERENCES Animal (Codigo_Animal);

Agradezco Su Ayuda De Antemano.

Muchas Gracias
  #2 (permalink)  
Antiguo 23/06/2010, 11:27
Avatar de 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: Problema FK y PK Compuesta

El script no tiene ningún error de ninguna clase.
SI lo hago correr sobre una base creada ad-hoc las tablas se crean perfectamente, con las respectivas FK.

La única posibilidad que veo yo, donde puede producirse un error es si estás trabajando con tablas base que ya tengan datos cargados, y donde la tabla Animales_Por_Hacienda tenga un registro que no cumpla con la restricción de FK.
Fuera de eso, no deberías tener problemas...
__________________
¿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 23/06/2010, 11:42
 
Fecha de Ingreso: mayo-2010
Mensajes: 21
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Problema FK y PK Compuesta

gnzsoloyo, es curioso entonces, porque la BD completa no tiene absolutamente ningun registro, no le he ingresado datos a ninguna tabla, y sinembargo sucede esto, y despues de estar analizando todo el codigo, llego a la misma conclusion que tu: no hay ningun problema.

Que puedo hacer en este caso? No puedo cambiar esa tabla, tiene que quedar asi, pero es algo con lo que he lidiado un par de veces, con el mismo resultado, siempre sucede lo mismo.

En este momento Cuento con MySQL 5.1.46 y phpMyAdmin 3.3.2...
  #4 (permalink)  
Antiguo 23/06/2010, 12: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: 17 años
Puntos: 2658
Respuesta: Problema FK y PK Compuesta

¿Probaste ejecutando una a una las cinco sentencias en la ventana de SQL?

AL menos las dos últimas, para ver si está devolviendo algún mensaje de error.
Por mi parte, probé el script en una base sobre MySQL 5.0.67 sin problemas, tanto de a una como en script, y en ambas formas funcionó bien.
Lo único que me queda por pensar es algún bug de la 5.1.46.
__________________
¿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 23/06/2010, 12:38
 
Fecha de Ingreso: mayo-2010
Mensajes: 21
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Problema FK y PK Compuesta

Efectivamente, gnzsoloyo, Una a una, y cero errores, "La ejecucion ha sido exitosa". Pero, la FK no se ve en ningun lado, y lo peor es que tengo otra tabla que tiene este mismo esquema, y pasa exactamente lo mismo. No se que voy a hacer.

Como ultima opcion, voy a intentar ingresarle datos a los Dominios (Haciendas y Animal), y verificar si la FK efectivamente no esta, o es phpMyAdmin la que la esta omitiendo... No veo de Otra.

Mas sinembargo, muchas gracias por tu ayuda!

Etiquetas: compuesta
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 05:56.