SQL - error en foreign key

   
Vista:

error en foreign key

Publicado por andresin (3 intervenciones) el 01/02/2015 20:58:09
Buenas tardes! Soy estudiante de ASIR y tengo un problema con la creación de tablas para una base de datos que nos han mandado de trabajo para el fin de semana. Ya creé 3 tablas y a la hora de hacer las dos últimas, me da error, en teoría relacionados con las foreign keys (ambas dos tablas que pretendo crear y no consigo, llevan varias). El caso es que revisé minuciosamente campo por campo las tablas referenciadas a ver si encontraba algo que no coincidiese y no he encontrado nada. Todos las foreign keys referenciadas se encuentran en otras tablas donde son primary keys. Este es el script:

create table ventas(nif varchar(10) not null,
articulo varchar(20) not null,
cod_fabricante int not null,
peso int not null,
categoria varchar(10) not null,
fecha_venta date not null,
unidades_vendidas int,

primary key(nif, articulo, cod_fabricante, peso, categoria,
fecha_venta),

foreign key (cod_fabricante) references fabricantes(cod_fabricante),

foreign key(articulo) references articulos(articulo)
on delete cascade on update cascade,

foreign key(cod_fabricante) references articulos(cod_fabricante)
on delete cascade on update cascade,

foreign key(peso) references articulos(peso)
on delete cascade on update cascade,

foreign key(categoria) references articulos(categoria)
on delete cascade on update cascade);


create table pedidos(nif varchar(10),articulo varchar(20) not null,
cod_fabricante int not null, peso int not null, categoria varchar(10) not null,
fecha_pedido date not null, unidades_pedidas int,

primary key(nif, articulo, cod_fabricante, peso, categoria, fecha_pedido),

foreign key(nif) references tiendas(nif),

foreign key(articulo) references articulos(articulo)
on delete cascade on update cascade,

foreign key(cod_fabricante) references articulos(cod_fabricante)
on delete cascade on update cascade,

foreign key(peso) references articulos(peso)
on delete cascade on update cascade,

foreign key(categoria) references articulos(categoria)
on delete cascade on update cascade);

Probé a meter las foreign keys una a una en cada tabla, y las que me dan error son las dos últimas (peso y categoría). Las demás entran, en las dos tablas que intento crear.
Agradeceria un poco de ayuda. Gracias de antemano!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

error en foreign key

Publicado por Isaias (691 intervenciones) el 03/02/2015 20:34:15
¿En que base de datos, que motor?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

error en foreign key

Publicado por andresSV (3 intervenciones) el 03/02/2015 20:55:09
MySQL, en InnoDB
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

error en foreign key

Publicado por leonardo_josue (880 intervenciones) el 03/02/2015 21:37:52
Hola andresSV

Postea también el script de tu tabla artículos, que es la que está marcando el problema.

También puedes intentar hacer las referencias desde un IDE de desarrollo, como WORKBENCH... es más factible que evites errores que haciéndolo "a mano"

Saludos
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

error en foreign key

Publicado por andresSV (3 intervenciones) el 03/02/2015 21:54:54
Posteo la de ARTÍCULOS y ya puestos las otras dos, en el orden en el que las he ido creando:

create database tienda; use tienda;

create table fabricantes(cod_fabricante int primary key,
nombre varchar(15), pais varchar(15));

create table tiendas(nif varchar(10) primary key,
nombre varchar(20), direccion varchar(20) not null,
poblacion varchar(20), provincia varchar(20), cod_postal int);

create table articulos(articulo varchar(20) not null,
cod_fabricante int not null, peso int not null,
categoria varchar(10) not null, precio_venta float,
precio_costo float, existencias int,
primary key(articulo, cod_fabricante, peso, categoria),
foreign key (cod_fabricante) references fabricantes(cod_fabricante));


Gracias!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar