Io creerei le seguenti tabelle:
	codice:
	materie { id, nome }
studenti { id, nome }
sessioni { id, id_materia, data, ora, max utenti }
prenotazioni { id_studente, id_sessione }
 
Poi....
	
		
			
			
				Amministrazione deve poter visualizzare quanti studenti per materia/giorno/ora si sono iscritti
			
		 
	 
 
	codice:
	SELECT m.nome AS "materia", data, ora, max_utenti, tot_studenti_sessione
FROM sessioni s
JOIN materie m ON m.id = s.id_materia
JOIN (
  SELECT id_sessione, COUNT(*) AS tot_studenti_sessione
  FROM prenotazioni
  GROUP BY id_sessione 
) AS utenti_sessione su ON us.id_sessione = s.id
 
	codice:
	SELECT m.nome AS "materia", data, ora, stu.nome AS "studente"
FROM sessioni s
JOIN materie m ON m.id = s.id_materia
JOIN prenotazioni p ON p.id_sessione = s.id
JOIN studenti stu ON stu.id = p.id_studente
WHERE s.id = ...
 
	
		
			
			
				Lo studente deve poter vedere a che esami è iscritto e in quale orario.
			
		 
	 
 
	codice:
	SELECT stu.nome AS "studente", m.nome AS "materia", data, ora
FROM studenti stu
JOIN prenotazioni p on p.id_studente = stu.id
JOIN sessioni s ON s.id = p.id_sessione
JOIN materie m ON m.id = s.id_materia
where stu.id = ...