-- Creación de la base de datos Biblioteca
CREATE DATABASE Biblioteca;

-- Para especificar la tabla a utilizar
USE Biblioteca;

-- Creación de la tabla Autores
CREATE TABLE Autores (
	id_autor INT AUTO_INCREMENT PRIMARY KEY,
	nombre VARCHAR (100),
	nacionalidad VARCHAR(50)
);

-- Creación de la tabla Libros
CREATE TABLE Libros(
	id_libro INT AUTO_INCREMENT PRIMARY KEY,
	titulo VARCHAR(200),
	anio_publicacion INT,
	genero VARCHAR(50)
);

-- Creación de la tabla LibrosAutores
CREATE TABLE LibrosAutores(
	id_libro INT,
	id_autor INT,
	PRIMARY KEY (id_libro, id_autor),
	FOREIGN KEY (id_libro) REFERENCES Libros(id_libro),
	FOREIGN KEY (id_autor) REFERENCES Autores(id_autor)
);

-- Creación de la tabla Usuarios
CREATE TABLE Usuarios (
	id_usuario INT AUTO_INCREMENT PRIMARY KEY,
	nombre_completo VARCHAR (100),
	nombre_usuario VARCHAR (50),
	telefono VARCHAR (20),
	email VARCHAR (250),
	contrasena VARCHAR (100),
	rol VARCHAR(100) DEFAULT 'Lector'
);

///
CREATE TABLE Usuarios (
	id_usuario INT AUTO_INCREMENT PRIMARY KEY,
	nombre_completo VARCHAR(100) NOT NULL,
	nombre_usuario VARCHAR(50) NOT NULL UNIQUE,
	telefono VARCHAR(20),
	email VARCHAR(250) NOT NULL UNIQUE,
	contrasena VARCHAR(100) NOT NULL,
	rol VARCHAR(100) DEFAULT 'Lector'
);

-- Creación de la tabla Préstamos
CREATE TABLE Prestamos(
	id_prestamo INT AUTO_INCREMENT PRIMARY KEY,
	id_libro INT,
	id_usuario INT,
	fecha_prestamo DATETIME,
	fecha_devolucion DATETIME,
	estado VARCHAR(50) DEFAULT 'En_Prestamo' CHECK (estado IN ('En_Prestamo', 'Devuelto')),
	FOREIGN KEY (id_libro) REFERENCES Libros(id_libro),
	FOREIGN KEY (id_usuario) REFERENCES Usuarios(id_usuario)
);

-- Creación de la tabla Login
CREATE TABLE Login(
	id_acceso INT AUTO_INCREMENT PRIMARY KEY,
	id_usuario INT,
	fecha_ingreso DATETIME,
	fecha_salida DATETIME,
	FOREIGN KEY (id_usuario) REFERENCES Usuarios(id_usuario)
);

-- Inserción de Datos de Pruebas
-- Se realiza el INSERT de los registros de la tabla Autores
INSERT INTO Autores (nombre, nacionalidad)
VALUES
('Gabriel García Márquez', 'Colombiano'),
('J.K. Rowling', 'Británica'),
('Miguel de Cervantes', 'Español'),
('J.R.R. Tolkien', 'Británico'),
('Isabel Allende', 'Chilena'),
('George Orwell', 'Británico'),
('Jane Austen', 'Británica'),
('Mark Twain', 'Estadounidense'),
('F. Scott Fitzgerald', 'Estadounidense'),
('Mario Vargas Llosa', 'Peruano'),
('Jorge Luis Borges', 'Argentino'),
('Octavio Paz', 'Mexicano'),
('Pablo Neruda', 'Chileno'),
('Gabriela Mistral', 'Chilena'),
('Laura Esquivel', 'Mexicana'),
('Roberto Bolaño', 'Chileno'),
('Juan Rulfo', 'Mexicano'),
('Horacio Quiroga', 'Uruguayo'),
('Alejo Carpentier', 'Cubano'),
('Rubén Darío', 'Nicaraguense'),
('Carmen Lyra', 'Costarricense'),
('Carlos Luis Fallas', 'Costarricense'),
('Adolfo Bioy Casares', 'Argentino');`

-- Se realiza el INSERT de los registros de la tabla Libros
INSERT INTO Libros (titulo, anio_publicacion, genero)
VALUES
('Cien Años de Soledad', 1967, 'Novela'),
('Harry Potter y la piedra filosofal', 1997, 'Fantasía'),
('Don Quijote de la Mancha', 1605, 'Novela'),
('El Hobbit', 1937, 'Fantasía'),
('La Casa de los Espíritus', 1982, 'Novela'),
('1984', 1949, 'Distopía'),
('Orgullo y Prejuicio', 1813, 'Romance'),
('Las Aventuras de Tom Sawyer', 1876, 'Aventura'),
('El Gran Gatsby', 1925, 'Novela'),
('La Ciudad y los Perros', 1962, 'Novela'),
('Ficciones', 1944, 'Cuento'),
('El Laberinto de la Soledad', 1950, 'Ensayo'),
('Veinte Poemas de Amor y una Canción Desesperada', 1924, 'Poesía'),
('Desolación', 1922, 'Poesía'),
('Como Agua para Chocolate', 1989, 'Novela'),
('Los Detectives Salvajes', 1998, 'Novela'),
('Pedro Páramo', 1955, 'Novela'),
('Cuentos de la Selva', 1918, 'Ficción'),
('El Siglo de las Luces', 1962, 'Ficción'),
('Azul...', 1888, 'Poesía'),
('Cuentos de mi tía Panchita', 1920, 'Cuento'),
('Mamita Yunai', 1941, 'Novela'),
('Seis problemas para don Isidro Parodi', 1942, 'Cuento'),
('El amor en los tiempos del cólera', 1985, 'Novela');

-- Se realiza el INSERT de los registros de la tabla LibrosAutores
INSERT INTO LibrosAutores (id_libro, id_autor)
VALUES
(1, 1), -- 'Cien años de soledad' de Gabriel García Márquez
(2, 2), -- 'Harry Potter y la piedra filosofal' de J.K. Rowling
(3, 3), -- 'Don Quijote de la Mancha' de Miguel de Cervantes
(4, 4), -- 'El Hobbit' de J.R.R. Tolkien
(5, 5), -- 'La Casa de los Espíritus' de Isabel Allende
(6, 6), -- '1984' de George Orwell
(7, 7), -- 'Orgullo y Prejuicio' de Jane Austen
(8, 8), -- 'Las Aventuras de Tom Sawyer' de Mark Twain
(9, 9), -- 'El Gran Gatsby' de F. Scott Fitzgerald
(10, 10), -- 'La Ciudad y los Perros' de Mario Vargas Llosa
(11, 11), -- 'Ficciones' de Jorge Luis Borges
(12, 12), -- 'El Laberinto de la Soledad' de Octavio Paz
(13, 13), -- 'Veinte Poemas de Amor y una Canción Desesperada' de Pablo Neruda
(14, 14), -- 'Desolación' de Gabriela Mistral
(15, 15), -- 'Como Agua para Chocolate' de Laura Esquivel
(16, 16), -- 'Los Detectives Salvajes' de Roberto Bolaño
(17, 17), -- 'Pedro Páramo' de Juan Rulfo
(18, 18), -- 'Cuentos de la Selva' de Horacio Quiroga
(19, 19), -- 'El Siglo de las Luces' de Alejo Carpentier
(20, 20), -- 'Azul...' de Rubén Darío
(21, 21), -- 'Cuentos de mi tía Panchita' de Carmen Lyra
(22, 22), -- 'Mamita Yunai' de Carlos Luis Fallas
(23, 11), -- 'Seis problemas para don Isidro Parodi' de Jorge Luis Borges
(23, 23), -- 'Seis problemas para don Isidro Parodi' de Adolfo Bioy Casares
(24, 1); -- 'El amor en los tiempos del cólera' de Gabriel García Márquez

-- Se realiza el INSERT de los registros de la tabla Usuarios
INSERT INTO Usuarios (nombre_completo, nombre_usuario, telefono, email, contrasena, rol)
VALUES
('Administrador del Sistema', 'admin_biblio', '2222-1010', 'admin@bibliovirtual.cr', SHA2('Admin2026', 256), 'Administrador'),
('María Rodríguez Vargas', 'mrodriguez', '8888-1234', 'maria.rodriguez@example.com', SHA2('Clave1234', 256), 'Lector'),
('José Calderón Mora', 'jcalderon', '8777-5678', 'jose.calderon@example.com', SHA2('Clave5678', 256), 'Lector'),
('Andrea Solano Araya', 'asolano', '8666-9012', 'andrea.solano@example.com', SHA2('Clave9012', 256), 'Lector'),
('Daniel Jiménez Cruz', 'djimenez', '8555-3456', 'daniel.jimenez@example.com', SHA2('Clave3456', 256), 'Lector');

-- Nota en la parte escrita se debe explicar el uso de SHA para cifrar la contraseña

-- Se realiza el INSERT de los registros de la tabla Préstamos
INSERT INTO Prestamos (id_libro, id_usuario, fecha_prestamo, fecha_devolucion, estado)
VALUES
(1, 2, '2026-09-01 10:15:00', '2026-09-10 16:30:00', 'Devuelto'),
(21, 3, '2026-09-05 14:20:00', '2026-09-12 11:00:00', 'Devuelto'), 
(23, 4, '2026-08-25 13:00:00', '2026-09-02 10:00:00', 'Devuelto'),
(11, 5, '2026-09-08 15:00:00', '2026-09-16 09:30:00', 'Devuelto'),
(5, 2, '2026-09-15 09:00:00', NULL, 'En_Prestamo'),
(6, 3, '2026-09-20 08:45:00', NULL, 'En_Prestamo'),
(1, 4, '2026-09-18 17:10:00', NULL, 'En_Prestamo'),
(22, 5, '2026-09-22 12:30:00', NULL, 'En_Prestamo');

-- Se realiza el INSERT de los registros de la tabla Login
INSERT INTO Login (id_usuario, fecha_ingreso, fecha_salida)
VALUES
(1, '2026-09-30 08:00:00', '2026-09-30 12:00:00'),
(2, '2026-09-15 08:55:00', '2026-09-15 09:40:00'),
(3, '2026-09-20 08:40:00', '2026-09-20 09:15:00'),
(4, '2026-09-18 17:00:00', '2026-09-18 17:45:00'),
(5, '2026-09-22 12:25:00', '2026-09-22 13:10:00'),
(2, '2026-10-01 19:00:00', NULL);
Built with LogoFlowershow