Relacionar 2 tablas
Buenas. Tengo un problema que no logro resolver. Resulta que tengo estas 2 tablas :
CREATE TABLE `modelos_empresa` (
`id_mod_emp` int(8) NOT NULL UNIQUE,
`id_empresa` int(5) NOT NULL,
`id_modelo` int(5) NOT NULL,
`fecha_alta` date NOT NULL default '0000-00-00',
`fecha_baja` date NOT NULL default '0000-00-00',
`responsable` varchar(30) NOT NULL default '',
PRIMARY KEY (`id_empresa`,`id_modelo`)
INDEX (`id_empresa`),
FOREIGN KEY (`id_empresa`),
REFERENCES sociedades(`id_soci`)
ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `modelos` (
`id_mod` int(5) NOT NULL auto_increment,
`num_modelo` varchar(5) NOT NULL default '',
PRIMARY KEY (`id_mod`),
FOREIGN KEY (`id_mod`)
REFERENCES modelos_empresa(`id_modelo`)
ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Pues bien, la tabla MODELOS_EMPRESA me deja crearla en la base de datos, pero la tabla MODELOS no me deja crearla. Parece ser que no puedo relacionar el campo "id_mod" de MODELOS con "id_modelo" de MODELOS_EMPRESAS porque la primary key de esta ultima tabla es compuesta (id_empresa,id_modelo).
Como podria relacionar estas 2 tablas? Sin esto no puedo avanzar. Gracias.
CREATE TABLE `modelos_empresa` (
`id_mod_emp` int(8) NOT NULL UNIQUE,
`id_empresa` int(5) NOT NULL,
`id_modelo` int(5) NOT NULL,
`fecha_alta` date NOT NULL default '0000-00-00',
`fecha_baja` date NOT NULL default '0000-00-00',
`responsable` varchar(30) NOT NULL default '',
PRIMARY KEY (`id_empresa`,`id_modelo`)
INDEX (`id_empresa`),
FOREIGN KEY (`id_empresa`),
REFERENCES sociedades(`id_soci`)
ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `modelos` (
`id_mod` int(5) NOT NULL auto_increment,
`num_modelo` varchar(5) NOT NULL default '',
PRIMARY KEY (`id_mod`),
FOREIGN KEY (`id_mod`)
REFERENCES modelos_empresa(`id_modelo`)
ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Pues bien, la tabla MODELOS_EMPRESA me deja crearla en la base de datos, pero la tabla MODELOS no me deja crearla. Parece ser que no puedo relacionar el campo "id_mod" de MODELOS con "id_modelo" de MODELOS_EMPRESAS porque la primary key de esta ultima tabla es compuesta (id_empresa,id_modelo).
Como podria relacionar estas 2 tablas? Sin esto no puedo avanzar. Gracias.
La condición necesaria y suficiente para declarar una clave foránea es que el campo referenciado debe ser CLAVE PRIMARIA de la tqabla orÃgen, cosa que no se cumple en el modelo que estás intentando armar.
Por otro lado, el problema fundamental es que estás intentando crear tablas con lo que parecen ser fallas de normalización demasiado grandes para usar tablas relacionales.
Por caso: ¿A dónde se dirige el componente la FK "id_empresa"? Si es una FK debe estar la otra tabla, por lo que el problema es de más de 2 tablas. Al menos 3. Al menos me parece que el DER relacional no está muy claro.
Por otro lado, el problema fundamental es que estás intentando crear tablas con lo que parecen ser fallas de normalización demasiado grandes para usar tablas relacionales.
Por caso: ¿A dónde se dirige el componente la FK "id_empresa"? Si es una FK debe estar la otra tabla, por lo que el problema es de más de 2 tablas. Al menos 3. Al menos me parece que el DER relacional no está muy claro.
