USE TicketFei; CREATE TABLE usuarios ( id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(255) NOT NULL, apellidoPaterno VARCHAR(255) NOT NULL, apellidoMaterno VARCHAR(255) NOT NULL, usuario VARCHAR(255) NOT NULL, contraseña VARCHAR(255) NOT NULL ); INSERT INTO usuarios (nombre, apellidoPaterno, apellidoMaterno, usuario, contraseña) VALUES ('Aaron', 'Bonilla', 'Gonzalez', 's22', '123'), ('Carlos', 'Palestina', 'Alducin', 's23', '123'), ('Miguel', 'Diaz', 'Villa', 's24', '123'); SELECT * FROM usuarios; DROP TABLE usuarios; -- concierto CREATE TABLE conciertos ( id_concierto INT AUTO_INCREMENT PRIMARY KEY, nombre_concierto VARCHAR(255) NOT NULL, artista VARCHAR(255) NOT NULL, fecha DATE NOT NULL, calle VARCHAR(255) NOT NULL, colonia VARCHAR(255) NOT NULL, numero_direccion VARCHAR(255) NOT NULL, codigo_postal VARCHAR(10) NOT NULL, estado VARCHAR(255) NOT NULL, capacidad_total INT NOT NULL ); INSERT INTO conciertos (nombre_concierto, artista, fecha, calle, colonia, numero_direccion, codigo_postal, estado, capacidad_total) VALUES ('Linux Fest', 'Junior H', '2025-06-15', 'Av. Xalapa', 'Obrero Campesina', 's/n', '91020', 'Veracruz', 5000); SELECT * FROM conciertos; DROP TABLE conciertos; -- Zona CREATE TABLE zonas ( id_zona INT AUTO_INCREMENT PRIMARY KEY, id_concierto INT NOT NULL, nombre_zona ENUM('General', 'Plata', 'Oro', 'VIP') NOT NULL, capacidad INT NOT NULL, precio DECIMAL(10,2) NOT NULL, FOREIGN KEY (id_concierto) REFERENCES conciertos(id_concierto) ON DELETE CASCADE ); INSERT INTO zonas (id_concierto, nombre_zona, capacidad, precio) VALUES (1, 'General', 20000, 800.00), (1, 'Plata', 15000, 1500.00), (1, 'Oro', 10000, 2500.00), (1, 'VIP', 5000, 5000.00); DROP TABLE zonas; -- Obtener todos los conciertos con sus zonas y precios SELECT c.id_concierto, c.nombre_concierto, c.artista, c.fecha, z.nombre_zona, z.capacidad, z.precio FROM conciertos c JOIN zonas z ON c.id_concierto = z.id_concierto; -- Consultar un concierto específico con sus zonas SELECT c.nombre_concierto, c.artista, c.fecha, z.nombre_zona, z.capacidad, z.precio FROM conciertos c JOIN zonas z ON c.id_concierto = z.id_concierto WHERE c.id_concierto = 1; -- Tabla Asientos CREATE TABLE asientos ( id_asiento INT AUTO_INCREMENT PRIMARY KEY, id_zona INT NOT NULL, numero_asiento INT NOT NULL, estado ENUM('disponible', 'ocupado') NOT NULL DEFAULT 'disponible', FOREIGN KEY (id_zona) REFERENCES zonas(id_zona) ON DELETE CASCADE, UNIQUE (id_zona, numero_asiento) -- Para evitar asientos duplicados en la misma zona ); DROP TABLE asientos; -- Tabla Boletos CREATE TABLE boletos ( id_boleto INT AUTO_INCREMENT PRIMARY KEY, id_concierto INT NOT NULL, id_zona INT NOT NULL, id_asiento INT NOT NULL, nombre_comprador VARCHAR(255) NOT NULL, precio DECIMAL(10,2) NOT NULL, fecha_concierto DATE NOT NULL, artista VARCHAR(255) NOT NULL, FOREIGN KEY (id_concierto) REFERENCES conciertos(id_concierto) ON DELETE CASCADE, FOREIGN KEY (id_zona) REFERENCES zonas(id_zona) ON DELETE CASCADE, FOREIGN KEY (id_asiento) REFERENCES asientos(id_asiento) ON DELETE CASCADE, UNIQUE (id_asiento) -- Evita que un asiento se venda dos veces ); DROP TABLE boletos;