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