Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/09/2010, 02:28
Avatar de cristian_cena
cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 14 años, 10 meses
Puntos: 269
Error al crear tablas con claves foraneas en el phpmyadmin

Hola gente, tengo un problema al crear unas tablas.
La cuestion es que el phpmyadmin no quiere crear las tablas correspondientes a las categorias (por favor ver el código y la imagen adjunta que estan al final).

Ellas son: categoria1, categoria2 y categoria3.
Devolviéndome el siguiente error: #1072 - Key column 'id_categoria_productos' doesn't exist in table

Interpreto que algo pasa con las relaciones FK entre las categorias y la tabla 'categoria_productos'

Aclaro que las tablas 'categoria_productos' y 'productos' se crean correctamente
¿Alguien puede decirme porque sucede esto, acaso no puedo utilizar una clave primaria como relación para más de una tabla?

Aquí les dejo el código.

Código:
CREATE TABLE categoria_productos 
(

  id_categoria_productos INT NOT NULL ,

  categoria1 INT ,
  
  categoria2 INT ,

  categoria3 INT ,

  PRIMARY KEY (id_categoria_productos) 
)

TYPE = InnoDB;



CREATE TABLE productos (

  id_productos INT NOT NULL,

  codigo VARCHAR(255) ,

  nombre VARCHAR(255) ,

  descripcion TEXT ,

  imagen VARCHAR(255) ,

  imagen_miniatura VARCHAR(255) ,

  imagen_descriptiva VARCHAR(255) ,

  alto VARCHAR(255) ,

  ancho VARCHAR(255) ,

  peso VARCHAR(255) ,

  precio VARCHAR(255) ,

  categoria VARCHAR(255) ,

  publicar INT ,

  despublicar INT ,

  id_categoria_productos INT ,

  PRIMARY KEY (id_productos) ,

  INDEX (id_categoria_productos) ,

  FOREIGN KEY (id_categoria_productos) REFERENCES categoria_productos(id_categoria_productos)

)

TYPE = InnoDB;



CREATE  TABLE categoria1 
(

  id_categoria1 INT NOT NULL ,

  nombre VARCHAR(255) ,

  descripcion VARCHAR(255) ,

  publicar INT ,

  despublicar INT ,

  PRIMARY KEY (id_categoria1) ,

  INDEX (id_categoria_productos) ,

  FOREIGN KEY (id_categoria_productos) REFERENCES categoria_productos(id_categoria_productos)
)

TYPE = InnoDB;



CREATE  TABLE categoria2 
(

  id_categoria2 INT NOT NULL ,

  nombre VARCHAR(255) ,

  descripcion VARCHAR(255) ,

  publicar INT ,

  despublicar INT ,

  PRIMARY KEY (id_categoria2) ,

  INDEX (id_categoria_productos) ,

  FOREIGN KEY (id_categoria_productos) REFERENCES categoria_productos(id_categoria_productos)
)

TYPE = InnoDB;



CREATE  TABLE categoria3 
(

  id_categoria3 INT NOT NULL ,

  nombre VARCHAR(255) ,

  descripcion VARCHAR(255) ,

  publicar INT ,

  despublicar INT ,

  PRIMARY KEY (id_categoria3) ,

  INDEX (id_categoria_productos) ,

  FOREIGN KEY (id_categoria_productos) REFERENCES categoria_productos(id_categoria_productos)
)

TYPE = InnoDB;



CREATE  TABLE usuarios
(

  id_usuarios INT NOT NULL ,
   
  cortesia VARCHAR(255) ,

  nombre VARCHAR(255) ,

  apellidos VARCHAR(255) ,

  nombre_de_usuario VARCHAR(255) ,
  
  contrasena VARCHAR(255) ,

  correo VARCHAR(255) ,

  telefono VARCHAR(255) ,

  telefono_movil VARCHAR(255) ,

  domicilio VARCHAR(255) ,

  localidad VARCHAR(255) ,

  codigo postal INT ,

  sexo VARCHAR(255)  
)

TYPE = InnoDB;
Desde ya muchas gracias de antemano.

P/D: Adjunto una imagen del modelo ER. (es solo ilustrativa ya que use mysql workbench para modelar visualmente y no para exportar el código sql .)

http://www.mediafire.com/i/?5daxieccldsb67v

Última edición por cristian_cena; 30/09/2010 a las 02:46 Razón: Incluyo una imagen del modelo ER