PROYECTO (id_proyecto, nombre, zona_proyecto, fecha_inc) CP: (id_proyecto) VNN: (nombre) VOLUNTARIO (alias, correo, fecha_nac, barrio, telefono) CP: (alias) VNN: (correo) ACTIVIDAD (id_actividad, titulo, material, plazas, punto, fecha_hora, id_proyecto) CP: (id_actividad) VNN: (titulo, id_proyecto) CA: (id_proyecto) -> PROYECTO (id_proyecto) PARTICIPACION (alias, id_actividad, fecha_insp, estado) CP: (alias, id_actividad) VNN: (estado) CA1: (alias) -> VOLUNTARIO (alias) CA2: (id_actividad) -> ACTIVIDAD (id_actividad) CREATE TABLE Proyecto ( id_proyecto INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(40) NOT NULL, zona VARCHAR(100), fecha_inc DATE ); CREATE TABLE Voluntario ( alias VARCHAR(30) PRIMARY KEY, correo VARCHAR(50) NOT NULL UNIQUE, fecha_nac DATE, barrio VARCHAR(60) ); CREATE TABLE Actividad ( id_actividad INT AUTO_INCREMENT PRIMARY KEY, titulo VARCHAR(150) NOT NULL, material VARCHAR(40), plazas INT, punto VARCHAR(100), fecha_hora DATETIME, id_proyecto INT NOT NULL, FOREIGN KEY (id_proyecto) REFERENCES Proyecto(id_proyecto) ON UPDATE CASCADE ON DELETE RESTRICT ); CREATE TABLE Participacion ( alias VARCHAR(30), id_actividad INT, fecha_insp DATE, estado ENUM ('pendiente', 'confirmada', 'anulada'), PRIMARY KEY(alias, id_actividad), FOREIGN KEY (id_actividad) REFERENCES Actividad(id_actividad) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (alias) REFERENCES Voluntario(alias) ON UPDATE CASCADE ON DELETE CASCADE ); ALTER TABLE Voluntario ADD telefono INT; ALTER TABLE Actividad DROP COLUMN material; ALTER TABLE Proyecto CHANGE zona zona_proyecto VARCHAR(100); INSERT INTO Proyecto (nombre, zona_proyecto, fecha_inc) VALUES ('Limpieza de playas', 'Costa de Valencia', '2024-05-01'); INSERT INTO Voluntario (alias, correo, fecha_nac, barrio, telefono) VALUES ('EcoWarrior', 'eco@mail.com', '1995-03-15', 'El Carmen', 600000000); INSERT INTO Actividad (titulo, plazas, punto, fecha_hora, id_proyecto) VALUES ('Limpieza el Perelló', 25, 'Torre 1', '2024-06-15 10:00:00', 1); INSERT INTO Participacion (alias, id_actividad, fecha_insp, estado) VALUES ('EcoWarrior', 1, '2024-05-20', 'confirmada'); SELECT p.alias, a.titulo, p.estado FROM Participacion p JOIN Actividad a ON p.id_actividad = a.id_actividad; SELECT a.titulo, COUNT(p.alias) AS inscritos FROM Actividad a LEFT JOIN Participacion p ON a.id_actividad = p.id_actividad GROUP BY a.titulo;