Tema: relacion n:m
Ver Mensaje Individual
  #6 (permalink)  
Antiguo 29/03/2011, 08:19
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: relacion n:m

Cita:
Iniciado por jvcano Ver Mensaje
Si te he entendido bien, lo que necesitas es algo parecido a esto (la definicion de los campos no la pongo, para que uses la que tienes actualmente) :

Create Table `LIBRO`(
`IDLIBRO` Integer(9) Not Null AUTO_INCREMENT,
`NOMBRE` ,
`ALIAS` ,
`IMAGEN` ,
`SINOPSIS` ,
`VOLUMENES` ,
`FECHA_EDICION` ,
PRIMARY KEY (`IDLIBRO`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Create Table `EDITORIAL`(
`IDEDITORIAL` Integer(9) Not Null AUTO_INCREMENT,
`IDLIBRO` Integer(9),
`NOMBRE` ,
`ACRONIMO` ,
`ALIAS` ,
`PORTADA` ,
PRIMARY KEY (`IDEDITORIAL`)
KEY (`IDLIBRO`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Lo que he hecho es añadir en la tabla 'EDITORIAL' el identificador de la tabla 'LIBRO'.

De esta forma puedes:
  • Leer todos los libros que tienes (leyendo de la tabla LIBROS).
  • Leer todas las editoriales que tienes (leyendo de la tabla EDITORIAL).
  • Leer en que editoriales hay un determinado libro (leyendo de la tabla EDITORIAL mediante IDLIBRO).

Espero que te sirva.
Jvcano, eso es una relación 1:N entre libro y editorial.
Eso permite que un libro pueda estar en varias editoriales, pero una editorial sólo pueda tener un libro...

Lo que el necesita es:
Código MySQL:
Ver original
  1. CREATE TABLE  `LIBRO_EDITORIAL`(
  2.              `IDEDITORIAL` INT NOT NULL,
  3.              `IDLIBRO` INT NOT NULL
  4. PRIMARY KEY  (`IDEDITORIAL`, `IDLIBRO`)
  5. CONSTRAINT libro_editorial FOREIGN KEY `IDLIBRO` REFERENCES `LIBRO`(`IDLIBRO`) ON DELETE CASCADE ON UPDATE CASCADE,
  6. CONSTRAINT editorial_libro FOREIGN KEY `IDEDITORIAL` REFERENCES `EDITORIAL`(`IDEDITORIAL`) ON DELETE CASCADE ON UPDATE CASCADE,
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)