Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/06/2010, 09:24
Astantler
 
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