SQL - Problemilla con las foreign keys

 
Vista:
sin imagen de perfil
Val: 16
Ha aumentado su posición en 8 puestos en SQL (en relación al último mes)
Gráfica de SQL

Problemilla con las foreign keys

Publicado por raquel (7 intervenciones) el 24/05/2018 14:12:31
Hola chicos, estoy haciendo un ejercicio de una biblioteca, (he de advertir que soy novatilla en sql) y bueno me he topado con la creación de una tabla intermedia con dos foreign keys sin primary keys que me esta dando problemillas, yo tengo este código :

create table prestamo (Constraint IdLector Foreign Key (IdLector) References estudiante (IdLector) On delete cascade,
Constraint IdLibro Foreign Key (IdLibro) References Libro (IdLibro) on delete cascade, FechaInicio_Prestamo Date not null comment 'Fecha Inicio Prestamo',
FechaDevolucion_Prestamo Date not null comment 'Fecha Devolución', Devuelto_Prestamo Date not null comment 'Devuelto');


pero me sale un error diciendo quela columna IdLector no existe en la tabla.
Previamente he creado las tablas de estudiante donde esta IdLector y la de Libro con lo cual no entiendo muy bien a que se refiere el error... Os adjunto el grafico para que entendáis de que va la movida.
Muchas gracias!!
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Problemilla con las foreign keys

Publicado por leonardo_josue (1173 intervenciones) el 24/05/2018 16:20:54
Hola Raquel:

Debes de entender que una cosa son los CAMPOS de una tabla y otra las RESTRICCIONES o RELACIONES que tengas sobre esos campos...

El error es claro el campo ID_LECTOR NO EXISTE en la tabla PRESTAMOS y por lo tanto NO ES POSIBLE DEFINIR ESE CAMPO COMO UNA LLAVE FORÁNEA.

En otras palabra, lo primero que tienes que hacer en el CREATE TABLE es definir todos los campos que van a formar parte de esa tabla y al FINAL defines todos las RESTRICCIONES (llame primaria, campo único, indice, etc) y las relaciones (llaves foráneas) que hagan referencia a ese campo.

No sé con qué BD's estás trabajando, pero la sentencia quedaría más o menos así:

1
2
3
4
5
6
7
8
9
10
CREATE TABLE prestamo
(
IdLector                 INT NOT NULL COMMENT  'aquí defines el campo exactamente como lo tienes en la tabla estudiante',
IdLibro 	         INT NOT NULL COMMENT  'aquí defines el campo exactamente como lo tienes en la tabla Libro',
FechaInicio_Prestamo     DATE NOT NULL COMMENT 'Fecha Inicio Prestamo',
FechaDevolucion_Prestamo DATE NOT NULL COMMENT 'Fecha Devolución',
Devuelto_Prestamo        DATE NOT NULL COMMENT 'Devuelto'
CONSTRAINT IdLector      FOREIGN KEY (IdLector) REFERENCES estudiante (IdLector) ON DELETE CASCADE,
CONSTRAINT IdLibro       FOREIGN KEY (IdLibro) REFERENCES Libro (IdLibro) ON DELETE CASCADE
);

Adicionalmente, creo que a esta tabla le hace falta su propia llave primaria.

Entonces insisto, cuando hagas un CREATE TABLE, primero listas todos los campos que deben de formar parte de esa tabla y después agregas todas las restricciones y relaciones.

Haz la prueba y nos comentas.

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
sin imagen de perfil
Val: 16
Ha aumentado su posición en 8 puestos en SQL (en relación al último mes)
Gráfica de SQL

Problemilla con las foreign keys

Publicado por raquel (7 intervenciones) el 24/05/2018 18:26:59
Jolines pues tenias toda la razon me faltaban esos Id,,, lo he vuelto a hacer con esos id y ha funcionado a la perfeccion, millones de gracias, si es que se nota que soy novatilla ;)

Aunque ahora me surge otro problemilla, una vez creada la tabla prestamo, intento insertar los datos pero me sale este error que tampoco sé como solucionar,

#1452 - Cannot add or update a child row: a foreign key constraint fails (`biblioteca2`.`prestamo`, CONSTRAINT `IdLibro` FOREIGN KEY (`IdLibro`) REFERENCES `libro` (`IdLibro`) ON DELETE CASCADE)

Se supone que las relaciones están bien hechas.. se supone...
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
sin imagen de perfil
Val: 16
Ha aumentado su posición en 8 puestos en SQL (en relación al último mes)
Gráfica de SQL

Problemilla con las foreign keys

Publicado por raquel (7 intervenciones) el 24/05/2018 20:20:55
Os comento de nuevo (que pesada que soy jeje) ... creeeeo que lo he solucionado!!! he conseguido añadir 10 datos a la tabla prestamo!! no se si hacer la ola jajajajaja
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