diff --git a/bd.sql b/bd.sql
new file mode 100644
index 0000000..fe44ff0
--- /dev/null
+++ b/bd.sql
@@ -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 ;
\ No newline at end of file