feat: Script de la base de datos
This commit is contained in:
parent
c64eb50a75
commit
d49273abbf
|
@ -0,0 +1,89 @@
|
|||
-- Creación de la base de datos
|
||||
CREATE DATABASE IF NOT EXISTS boletos_db;
|
||||
USE boletos_db;
|
||||
|
||||
-- Tabla de salas
|
||||
CREATE TABLE IF NOT EXISTS salas (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nombre VARCHAR(100) NOT NULL,
|
||||
filas INT NOT NULL,
|
||||
asientos_por_fila INT NOT NULL
|
||||
);
|
||||
|
||||
-- Tabla de boletos
|
||||
CREATE TABLE IF NOT EXISTS boletos (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
id_sala INT NOT NULL,
|
||||
fila INT NOT NULL,
|
||||
numero INT NOT NULL,
|
||||
precio DECIMAL(10,2) NOT NULL,
|
||||
estado ENUM('disponible', 'vendido') DEFAULT 'disponible',
|
||||
FOREIGN KEY (id_sala) REFERENCES salas(id),
|
||||
UNIQUE KEY unique_asiento (id_sala, fila, numero)
|
||||
);
|
||||
|
||||
-- Tabla de ventas
|
||||
CREATE TABLE IF NOT EXISTS ventas (
|
||||
id VARCHAR(36) PRIMARY KEY,
|
||||
fecha DATETIME NOT NULL,
|
||||
nombre_cliente VARCHAR(100) NOT NULL,
|
||||
total DECIMAL(10,2) NOT NULL
|
||||
);
|
||||
|
||||
select * from ventas;
|
||||
|
||||
select * from venta_boletos;
|
||||
|
||||
select * from boletos;
|
||||
|
||||
-- Tabla relacional venta-boletos
|
||||
CREATE TABLE IF NOT EXISTS venta_boletos (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
id_venta VARCHAR(36) NOT NULL,
|
||||
id_boleto INT NOT NULL,
|
||||
FOREIGN KEY (id_venta) REFERENCES ventas(id),
|
||||
FOREIGN KEY (id_boleto) REFERENCES boletos(id),
|
||||
UNIQUE KEY unique_venta_boleto (id_venta, id_boleto)
|
||||
);
|
||||
|
||||
-- Insertar una sala de ejemplo
|
||||
INSERT INTO salas (id, nombre, filas, asientos_por_fila)
|
||||
VALUES (1, 'Sala Principal', 10, 15);
|
||||
|
||||
-- Procedimiento para inicializar boletos
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE InicializaBoletos(IN sala_id INT, IN precio DECIMAL(10,2))
|
||||
BEGIN
|
||||
DECLARE i INT DEFAULT 1;
|
||||
DECLARE j INT DEFAULT 1;
|
||||
DECLARE total_filas INT DEFAULT 0;
|
||||
DECLARE total_asientos INT DEFAULT 0;
|
||||
|
||||
-- Obtener dimensiones de la sala
|
||||
SELECT filas, asientos_por_fila INTO total_filas, total_asientos
|
||||
FROM salas WHERE id = sala_id;
|
||||
|
||||
-- Depuración: Verificar valores obtenidos
|
||||
SELECT CONCAT('Filas:', total_filas, ' Asientos:', total_asientos) AS Debug_Info;
|
||||
|
||||
-- Si no se encuentran filas/asientos, salir del procedimiento
|
||||
IF total_filas = 0 OR total_asientos = 0 THEN
|
||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Sala no encontrada o sin dimensiones definidas';
|
||||
END IF;
|
||||
|
||||
-- Eliminar boletos existentes de la sala
|
||||
DELETE FROM boletos WHERE id_sala = sala_id;
|
||||
|
||||
-- Crear nuevos boletos
|
||||
SET i = 1;
|
||||
WHILE i <= total_filas DO
|
||||
SET j = 1;
|
||||
WHILE j <= total_asientos DO
|
||||
INSERT INTO boletos (id_sala, fila, numero, precio, estado)
|
||||
VALUES (sala_id, i, j, precio, 'disponible');
|
||||
SET j = j + 1;
|
||||
END WHILE;
|
||||
SET i = i + 1;
|
||||
END WHILE;
|
||||
END //
|
||||
DELIMITER ;
|
Loading…
Reference in New Issue