To může (a mělo by) být vyřešeno na úrovni DB, pokud chcete vždy zaručit integritu dat. Existují různé způsoby, částečný
UNIQUE INDEX
pravděpodobně nejjednodušší a nejúčinnější.
CREATE UNIQUE INDEX picture_homepage_uni ON picture (house_id) WHERE homepage;
Také urychlí dotazy k načtení obrázků na domovské stránce jako doplňkovou výhodu.
Změnit schéma
Jiný přístup by bylo přidat sloupec homepage_id
do tabulky house
, ukazující na vybraný obrázek. Automaticky lze vybrat pouze 1 snímek. Nepotřebovali byste picture.homepage
nic víc. Referenční integrita může být trochu komplikovaná kvůli omezením cizích klíčů v obou směrech, ale mám taková fungující řešení.