Perso, je construirais ma ta table ainsi :
'Salle','Jour','Heure','Matière','Professeur','Classe'
Pour savoir si ma salle est libre tel jour à telle heure, je lancerai une requette admettant pour paramètres la salle, le jour et l'heure afin de récupérer la classe censée l'occupé. Si le résultat n'est pas définit, alors je sais que la salle n'est pas occupée.
Autre solution : Il suffit de découper ta journée en intervals de 30 min de 8H à 19H et d'introduire un champ occupé. Il te suffit alors de lancer une requette avec les parametres Salle, Jour et Heure afin de récupérer la valeur du champ occupé (Le mieux étant d'utiliser un Boolean).