Programación en castellano
Inicio > Foros > MySQL > Relacionar 2 tablas
-Foros de debate

MySQL
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

Relacionar 2 tablas
Enviado por sneider el día 15 de noviembre de 2007

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.

 
Re: Relacionar 2 tablas
Enviado por Gonzalo el día 20 de noviembre de 2007

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.

 


Tienda
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: juegos gratis | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | decoración web | gifs animados