На один час не может быть больше одной брони, иначе они пересекутся, с какой бы периодичностью бронь не была. Поэтому можно хранить какая бронь есть на каждый час, и проверять, что она не пересекается с запросом. Чтобы хранить бронь достаточно знать день начала и периодичность. Она занимает день, если разность между запросом и началом брони делится на периодичность