To może (i powinno) być rozwiązane na poziomie bazy danych, jeśli chcesz zagwarantować integralność danych przez cały czas. Istnieją różne sposoby, częściowy
UNIQUE INDEX
prawdopodobnie najprostszy i najskuteczniejszy.
CREATE UNIQUE INDEX picture_homepage_uni ON picture (house_id) WHERE homepage;
Przyspieszy również zapytania, aby pobrać zdjęcia ze strony głównej jako dodatkowe korzyści.
Zmień schemat
Innym podejściem byłoby dodanie kolumny homepage_id
do tabeli house
, wskazując wybrany obraz. Automatycznie można wybrać tylko 1 zdjęcie. Nie potrzebujesz picture.homepage
nie więcej. Integralność referencyjna może być nieco trudna z powodu ograniczeń kluczy obcych w obu kierunkach, ale mam takie działające rozwiązania.