Lösung a) sieht gut aus.
Lösung b) auch.
Damit die geänderten Daten nicht aus einer View herausfallen, gibt es bei manchen SQL Datenbanken die Check Option, die man zum Zeitpunkt der Viewdefinition angibt (siehe auch https://blog.jooq.org/awesome-sql-trick-constraints-on-views/).
Antwort
Select rechner
from verteilung
where paket in ('Paket 1','Paket 2','Paket 3','Paket 4')
group by rechner
having count(*) = 4;