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

[SOLUCIONADO] ¿¿ForeingKey??

Estas en el tema de ¿¿ForeingKey?? en el foro de Mysql en Foros del Web. Buenas, comento el problema, tengo una clase Articulo y una clase Volumen que las tengo planteadas de la siguiente manera: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver ...
  #1 (permalink)  
Antiguo 25/04/2013, 15:29
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 4 meses
Puntos: 22
¿¿ForeingKey??

Buenas,

comento el problema, tengo una clase Articulo y una clase Volumen

que las tengo planteadas de la siguiente manera:

Código MySQL:
Ver original
  1. CREATE TABLE volumenes (
  2. `idVolumen`INT auto_increment,
  3. `nombreVolumen` VARCHAR(50),
  4. PRIMARY KEY (`idVolumen`));


Código MySQL:
Ver original
  1. CREATE TABLE articulos (`idArticulo` INT NOT NULL auto_increment,
  2. `tituloArticulo` VARCHAR(50),
  3. `resumenArticulo` VARCHAR(500),
  4. `coautoresArticulo` VARCHAR(500),  
  5. `imagenArticulo` VARCHAR(50),
  6. `pdfArticulo` VARCHAR(200),
  7. `idVolumen` INT,
  8. PRIMARY KEY (`idArticulo`),
  9. FOREIGN KEY (`idVolumen`) REFERENCES volumenes(`idVolumen`) ON DELETE CASCADE);

El problema es que un Volumen puede tener muchos Articulos... por lo que la idea mas comun seria asignar la foreign key como tengo hecho, ¡pero!! puede ser que un Articulo no tenga ningun volumen entonces a la hora de crear un Articulo nuevo en la base de datos me surge un error

Código ERROR:
Ver original
  1. Cannot add or update a child row: a foreign key constraint fails

Es obligatorio hacer esta referencia? o simplemente puedo crear una lista de articulos y me despreocupo... cual seria la forma correcta de hacerlo??

Un saludo y gracias.
  #2 (permalink)  
Antiguo 25/04/2013, 17:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ¿¿ForeingKey??

Para que ese problema se produzca, las tablas no deben ser como las pones. La fK debe estar siendo NOT NULL.
Pero más allá de eso, necesitaríamos entender una cosa: ¿Qué es un "volumen"? Porque no queda clara la razón de esa relación y en qué consiste el vínculo.
Da la impresión de que hubiese algún error de interpretación de las dependencias.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 27/04/2013, 03:43
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 4 meses
Puntos: 22
Respuesta: ¿¿ForeingKey??

1 volumen es un conjunto de articulos

1 volumen puede tener 1...N articulos

1 articulo puede tener 0...1 volumenes


Supongo que podria dejar el campo a NULL y la idVolumen en la tabla volumenes, permitir que sea nula?? estaría bien asi??

Un saludo

Etiquetas: Ninguno
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 11:35.