Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Duda sobre Tabla que contiene dos FK

Estas en el tema de Duda sobre Tabla que contiene dos FK en el foro de PostgreSQL en Foros del Web. Un saludo a tod@s las personas que se interesen por resolver mi duda, soy estudiente muy primeriza en esto de base de datos... estaba tratando ...
  #1 (permalink)  
Antiguo 22/07/2011, 00:35
 
Fecha de Ingreso: julio-2011
Mensajes: 2
Antigüedad: 12 años, 9 meses
Puntos: 0
Pregunta Duda sobre Tabla que contiene dos FK

Un saludo a tod@s las personas que se interesen por resolver mi duda,
soy estudiente muy primeriza en esto de base de datos... estaba tratando de hacer un programa en java en netbeans, el cual hace referencia a los prestamos de una biblioteca, pero me ha aparesido este error a la hora de ejecutarlo

En Netbeans...
ERROR: inserción o actualización en la tabla «prestamo» viola la llave foránea «fk_libro»
Detail: La llave (id_libro)=(8) no está presente en la tabla «libros»


mis tablas son estas....

/*Tabla estudiante*/
Código MySQL:
Ver original
  1. CREATE TABLE estudiante
  2. (
  3.   ide integer NOT NULL DEFAULT nextval('secuencia_id_estudiante'::regclass),
  4.   nombre character(70),
  5.   apellido character(70),
  6.   matricula integer,
  7.   telefono integer,
  8.   email character(70),
  9.   direccion character(200),
  10.   edad integer,
  11.   sanciones integer,
  12.   id_libro integer,
  13.   CONSTRAINT pk_id_estudiante PRIMARY KEY (ide),
  14.   CONSTRAINT fk_id_libro FOREIGN KEY (id_libro) // sera por esto???
  15.       REFERENCES libros (idl) MATCH SIMPLE
  16. )
  17.   OIDS=FALSE
  18. );
  19. ALTER TABLE estudiante OWNER TO postgres;


/*Tabla libros*/

Código MySQL:
Ver original
  1. CREATE TABLE libros
  2. (
  3.   idl integer NOT NULL DEFAULT nextval('secuencia_id_libro'::regclass),
  4.   nombre_libro character(70),
  5.   autor character(70),
  6.   editorial character(70),
  7.   num_pag integer,
  8.   disponibilidad character(20),
  9.   clave integer,
  10.   CONSTRAINT pk_id PRIMARY KEY (idl)
  11. )
  12.   OIDS=FALSE
  13. );
  14. ALTER TABLE libros OWNER TO postgres;


/*Tabla pretamo*/
Código MySQL:
Ver original
  1. CREATE TABLE prestamo
  2. (
  3.   idp integer NOT NULL DEFAULT nextval('secuencia_id_prestamo'::regclass),
  4.   id_libro integer,
  5.   id_est integer,
  6.   fecha date,
  7.   CONSTRAINT pk_prestamo PRIMARY KEY (idp),
  8.   CONSTRAINT fk_est FOREIGN KEY (id_est)
  9.       REFERENCES estudiante (ide) MATCH SIMPLE
  10.   CONSTRAINT fk_libro FOREIGN KEY (id_libro)
  11.       REFERENCES libros (idl) MATCH SIMPLE
  12. )
  13.   OIDS=FALSE
  14. );
  15. ALTER TABLE prestamo OWNER TO postgres;

Estoy intentando agregar el id de libro y el id de estudiante en la tabla de prestamo ¿como lo hago sin que me aparesca este error?

Bueno la verdad estoy muy confusa (como yo no se nada de esto pero aun asi es muy necesario para mi programa...) acaso no puede existir dos claves foraneas en una tabla o ke??
alguien me dice si esta bien mis tablas?? o acaso es culpa de mi programa de java???
¿Que deberia hacer para solucionar esto?


MILGRACIAS ADELANTADO PARA KIEN ME AYUDE!!!

Última edición por Shinku_05; 22/07/2011 a las 14:53
  #2 (permalink)  
Antiguo 22/07/2011, 21:22
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Duda sobre Tabla que contiene dos FK

Debes estar metiendo en la tabla prestamo un id en el campo idlibro que no existe.

revisalo.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 25/07/2011, 16:18
 
Fecha de Ingreso: julio-2011
Mensajes: 2
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Duda sobre Tabla que contiene dos FK

sep se supone que estoy metiendo algo que no existe, de eso ya me acavo de dar cuenta, y que borre la ultima columna de la tabla estudiante, por si acaso ya que de nada me servia.

Tabla estudiante:
Código SQL:
Ver original
  1. CREATE TABLE estudiante
  2. (
  3.   ide INTEGER NOT NULL DEFAULT NEXTVAL('secuencia_id_estudiante'::regclass),
  4.   nombre CHARACTER(70),
  5.   apellido CHARACTER(70),
  6.   matricula INTEGER,
  7.   telefono INTEGER,
  8.   email CHARACTER(70),
  9.   direccion CHARACTER(200),
  10.   edad INTEGER,
  11.   sanciones INTEGER,
  12.   CONSTRAINT pk_id_estudiante PRIMARY KEY (ide)
  13. )
  14. WITH (
  15.   OIDS=FALSE
  16. );
  17. ALTER TABLE estudiante OWNER TO postgres;

lo que me acabo de fijar es que en la tabla de prestamo cuando intento ingresar los datos de un libro y un estudiante que ya existen NO lo hace ya que los invierte de posicion y como he estado eliminando estudiantes y libros anteriormente para comprobar el metodo eliminar, que funciona bien, los numeros ya no son consecutivos, por ejemplo

(Estudiante) El 8 es Glen B (este es el maximo num)
(Libro) El 14 es Entrevista con el vampiro (no existen del 10 para abajo)
y cuando intento prestar este libro a este estudiante o me sale que no existe el estudiante o no existe el libro, en caso de que existiera el estudiante 14 y el libro 8 SI LO PONE en la tabla pero mesale alfinal un error parecido ha este en la consola de java:

ERROR: no existe la columna «id»
Position: 12


yo se que los estoy referenciando bien pero aun asi me salen alreves ycon este error
AKE SE DEBE?????
se puede solucionar ?
Como lo pondria?
  #4 (permalink)  
Antiguo 31/08/2011, 10:36
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Duda sobre Tabla que contiene dos FK

Creo que deberías poner el código de tus consultas ya el error de la columna ID te sale, es simplemente porque en ninguna de tus tablas tienes una columna que se llame ID, por lo menos en las que compartiste código.
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co

Etiquetas: dato, postgres, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:20.