Vamos a hacer la siguiente BD y la vamos a implementar con Hibernate
Genero 1–N Libro N–N Autor
Genero: Nombre
Libro: Titulo, paginas
Autor: nombre
CREATE TABLE `biblioteca`.`genero` ( `idgenero` INT NOT NULL AUTO_INCREMENT, `nombre` VARCHAR(45) NULL, PRIMARY KEY (`idgenero`)); CREATE TABLE `biblioteca`.`libro` ( `idlibro` INT NOT NULL AUTO_INCREMENT, `idgenero` INT NULL, `titulo` VARCHAR(45) NULL, `paginas` INT NULL, PRIMARY KEY (`idlibro`)); CREATE TABLE `biblioteca`.`autor` ( `idautor` INT NOT NULL AUTO_INCREMENT, `nombre` VARCHAR(150) NULL, PRIMARY KEY (`idautor`)); CREATE TABLE `libro_autor` ( `idlibro_autor` int(11) NOT NULL AUTO_INCREMENT, `idlibro` int(11) DEFAULT NULL, `idautor` int(11) DEFAULT NULL, PRIMARY KEY (`idlibro_autor`), KEY `fk_libro_idx` (`idlibro`), KEY `fk_autor_idx` (`idautor`), CONSTRAINT `fk_autor` FOREIGN KEY (`idautor`) REFERENCES `autor` (`idautor`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_libro` FOREIGN KEY (`idlibro`) REFERENCES `libro` (`idlibro`) ON DELETE NO ACTION ON UPDATE NO ACTION ) ALTER TABLE `biblioteca`.`libro` ADD INDEX `fk_genero_idx` (`idgenero` ASC) ; ; ALTER TABLE `biblioteca`.`libro` ADD CONSTRAINT `fk_genero` FOREIGN KEY (`idgenero`) REFERENCES `biblioteca`.`genero` (`idgenero`) ON DELETE NO ACTION ON UPDATE NO ACTION;
Datos de prueba
INSERT INTO `biblioteca`.`genero` (`nombre`) VALUES ('Ficción'), ('No Ficción'), ('Ciencia Ficción'), ('Fantasía'), ('Biografía'); INSERT INTO `biblioteca`.`libro` (`idgenero`, `titulo`, `paginas`) VALUES (1, 'El Gran Gatsby', 180), (2, 'Sapiens: De animales a dioses', 443), (3, 'Dune', 412), (4, 'Harry Potter y la piedra filosofal', 309), (5, 'Steve Jobs', 656); INSERT INTO `biblioteca`.`autor` (`nombre`) VALUES ('F. Scott Fitzgerald'), ('Yuval Noah Harari'), ('Frank Herbert'), ('J.K. Rowling'), ('Walter Isaacson'); INSERT INTO `libro_autor` (`idlibro`, `idautor`) VALUES (1, 1), -- El Gran Gatsby por F. Scott Fitzgerald (2, 2), -- Sapiens: De animales a dioses por Yuval Noah Harari (3, 3), -- Dune por Frank Herbert (4, 4), -- Harry Potter y la piedra filosofal por J.K. Rowling (5, 5); -- Steve Jobs por Walter Isaacson