Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/11/2010, 04:23
albertrc
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 9 meses
Puntos: 1
ayuda con relacion ternaria o binaria

caja
id_caja
nombre_caja caja x1 , caja x2
descripcion_caja descripcion

color
id_color
color_caja negro,naranja,rojo,verde


unidad
id_unidad
unidad_caja 4,9,25,36


caja x1 descripcion 4 negro,naranja,rojo,verde
caja x1 descripcio 9 negro,naranja,rojo,verde
caja x1 descripcion 25 negro,naranja,rojo,verde
caja x1 descripcion 36 negro,naranja,rojo,verde

tengo redundancia de datos nombre_caja i descripcion_caja algunas vece pude que
se repitan

es mejor hacer una relacion M:N entre unidad i color i en la tabla unidad_color meter el nombre i descripcion

o crear una relacion ternacio M:N:R entre caja color i unidad


Código MySQL:
Ver original
  1. CREATE TABLE caja_color_unidad
  2. (
  3.     id_caja INT UNSIGNED NOT NULL,
  4.     id_color INT UNSIGNED NOT NULL,
  5.     id_unidad INT UNSIGNED NOT NULL,
  6.     CONSTRAINT pk_caja_color_unidad PRIMARY KEY (id_caja,id_color,id_unidad),
  7.     CONSTRAINT fk_caja_color_unidad_id_caja FOREIGN KEY (id_caja) REFERENCES caja(id_caja),
  8.     CONSTRAINT fk_caja_color_unidad_id_color FOREIGN KEY (id_color) REFERENCES caja(id_color),
  9.     CONSTRAINT fk_caja_color_unidad_id_unidad FOREIGN KEY (id_unidad) REFERENCES caja(id_unidad)

Código MySQL:
Ver original
  1. INSERT INTO caja_color_unidad (id_caja,id_color,id_unidad) VALUES ('1','1','4');
  2. INSERT INTO caja_color_unidad (id_caja,id_color,id_unidad) VALUES ('2','2','4');
  3. INSERT INTO caja_color_unidad (id_caja,id_color,id_unidad) VALUES ('3','3','4');
  4. INSERT INTO caja_color_unidad (id_caja,id_color,id_unidad) VALUES ('4','4','4');
  5.  
  6. INSERT INTO caja_color_unidad (id_caja,id_color,id_unidad) VALUES ('5','1','9');
  7. INSERT INTO caja_color_unidad (id_caja,id_color,id_unidad) VALUES ('6','2','9');
  8. INSERT INTO caja_color_unidad (id_caja,id_color,id_unidad) VALUES ('7','3','9');
  9. INSERT INTO caja_color_unidad (id_caja,id_color,id_unidad) VALUES ('8','4','9');
  10.  
  11. INSERT INTO caja_color_unidad (id_caja,id_color,id_unidad) VALUES ('9','1','25');
  12. INSERT INTO caja_color_unidad (id_caja,id_color,id_unidad) VALUES ('10','2','25');
  13. INSERT INTO caja_color_unidad (id_caja,id_color,id_unidad) VALUES ('11','3','25');
  14. INSERT INTO caja_color_unidad (id_caja,id_color,id_unidad) VALUES ('12','4','25');
  15.  
  16. INSERT INTO caja_color_unidad (id_caja,id_color,id_unitat) VALUES ('13','1','36');
  17. INSERT INTO caja_color_unidad (id_caja,id_color,id_unitat) VALUES ('14','2','36');
  18. INSERT INTO caja_color_unidad (id_caja,id_color,id_unitat) VALUES ('15','3','36');
  19. INSERT INTO caja_color_unidad (id_caja,id_color,id_unitat) VALUES ('16','4','36');

me sale el siguiente error

Código MySQL:
Ver original
  1. ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`caja`.`caja_color_unidad`, CONSTRAINT `caja_color_unidad_ibfk_3` FOREIGN KEY (`id_unidad`) REFERENCES `unidad` (`id_unidad`))

Última edición por albertrc; 22/11/2010 a las 04:30