Това може (и трябва) да бъде решено на ниво DB, ако искате да гарантирате целостта на данните по всяко време. Има различни начини, частично
UNIQUE INDEX
вероятно е най-простият и най-ефективен.
CREATE UNIQUE INDEX picture_homepage_uni ON picture (house_id) WHERE homepage;
Също така ще ускори заявките за извличане на снимки от началната страница като допълнителна полза.
Промяна на схема
Друг подход би бил да добавите колона homepage_id
към масата house
, сочейки към избрана картина. Автоматично може да бъде избрана само 1 снимка. Няма да имате нужда от picture.homepage
повече. Референтната цялост може да е малко трудна поради ограниченията на външния ключ и в двете посоки, но имам работещи решения като това.