Det kan (og bør) løses på DB-niveau, hvis du til enhver tid vil garantere dataintegritet. Der er forskellige måder, en delvis
UNIQUE INDEX
sandsynligvis den enkleste og mest effektive.
CREATE UNIQUE INDEX picture_homepage_uni ON picture (house_id) WHERE homepage;
Vil også fremskynde forespørgsler for at hente hjemmesidebillederne som sikkerhedsstillelse.
Skift skema
En anden tilgang ville være at tilføje en kolonne homepage_id
til tabellen house
, og peger på et valgt billede. Automatisk kan kun 1 billede vælges. Du behøver ikke picture.homepage
mere. Referenceintegritet kan være en smule vanskelig på grund af fremmednøglebegrænsninger i begge retninger, men jeg har sådanne fungerende løsninger.