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) 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 ); 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;