how to structure availability relationships
IMO you overcomplicate things. Just add an available DATE field to the candidate table. Then queries will be simpler and more performant.

SELECT * FROM candidate WHERE available &lt; NOW() ORDER BY available DESC;