Ver Mensaje Individual
  #3  
Antiguo 02-05-2006
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Reputación: 21
salvica Va por buen camino
Ante todo, gracias por responder delphi.com.ar

Eso es lo que pone en mysql.com, pero como digo en el hilo, necesito introducir más datos y ese ejemplo solo vale para uno , de todas formas lo estoy resolviendo contando las posiciones de los padres y metiendolos "a pelo" desde un fichero de texto (no sé si dirá algo el "profe" ).

Otra cosa (que viene a ser lo mismo)
Cuando creo trés o más tablas relacionadas entre sí ¿no deben llevar TODAS ellas las claves foráneas de sus padres? ¿O solo la de su inmediato?

Por ejemplo: tres tablas:
- Distribuidores (el abuelo de todas)
- Artículos (depende de distribuidores)
- Productos (depende de artículos y de distribuidores)
Código Delphi [-]

CREATE TABLE IF NOT EXISTS `distribuidores` (
       `id_empresa`     INT            NOT NULL AUTO_INCREMENT,
       `cif_empresa`    CHAR(11)       NOT NULL,
       `nombre`         VARCHAR(50)    NOT NULL DEFAULT "",
       `direccion`      VARCHAR(80)    NOT NULL DEFAULT "",
       `localidad`      VARCHAR(80)    NOT NULL DEFAULT "",
       `provincia`      VARCHAR(30)    NOT NULL DEFAULT "",
       `telefono`       INT(10)        ZEROFILL UNSIGNED NOT NULL DEFAULT 0,
       `tipo_articulo`  VARCHAR(80)    NOT NULL DEFAULT "",
       `tiempo_demora`  INT(3)         UNSIGNED NOT NULL DEFAULT 0,
       PRIMARY KEY (`id_empresa`)
) 
ENGINE=InnoDB;


CREATE TABLE IF NOT EXISTS `articulos` (
       `id_articulo`    INT            NOT NULL AUTO_INCREMENT,
       `id_empresa`     INT            NOT NULL,
       `nombre`         VARCHAR(50)    NOT NULL DEFAULT "",
       PRIMARY KEY (`id_articulo`), 
             INDEX (`id_empresa`),
       FOREIGN KEY (`id_empresa`) REFERENCES `distribuidores` (`id_empresa`) 
       ON DELETE CASCADE
       ON UPDATE CASCADE
) 
ENGINE=InnoDB;


CREATE TABLE IF NOT EXISTS `productos` (
       `id_producto`    INT            NOT NULL AUTO_INCREMENT,
       `id_articulo`    INT            NOT NULL,
       `id_empresa`     INT            NOT NULL,
       `nombre`         VARCHAR(50)    NOT NULL DEFAULT "",
       `precio`         FLOAT           NOT NULL DEFAULT 0.0,
       PRIMARY KEY (`id_producto`), 
             INDEX (`id_empresa`, `id_articulo`),
       FOREIGN KEY (`id_articulo`) REFERENCES `articulos`      (`id_articulo`) 
       FOREIGN KEY (`id_empresa`)  REFERENCES `distribuidores` (`id_empresa`) 
       ON DELETE CASCADE
       ON UPDATE CASCADE
) 
ENGINE=InnoDB;
En el ejemplo, la tercera tabla (productos) me dice que no puede crearla
¿Puedes indicarme como se hace? (en teoría o en práctica, como quieras)

Saludos y gracias de nuevo
Salvica

Última edición por salvica fecha: 02-05-2006 a las 15:19:02.
Responder Con Cita