Probé la subconsulta de @ Abdullah y, de hecho, obtuve lo contrario de lo que quería. Después de algunas pruebas, terminé con las consultas anidadas que me dan lo que estaba buscando:
select distinct entity_id from construction
where entity_id not in (
select entity_id from construction c left outer join available a on a.id = c.component_id
where a.id is null
);