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
![EEK!](http://www.clubdelphi.com/foros/images/smilies/eek.gif)
, 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"
![Big Grin](http://www.clubdelphi.com/foros/images/smilies/biggrin.gif)
).
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)
![Wink](http://www.clubdelphi.com/foros/images/smilies/wink.gif)
- 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
![Confused](http://www.clubdelphi.com/foros/images/smilies/confused.gif)
¿Puedes indicarme como se hace? (en teoría o en práctica, como quieras)
Saludos y gracias de nuevo
Salvica