Es kann (und sollte) auf DB-Ebene gelöst werden, wenn Sie die Datenintegrität jederzeit gewährleisten möchten. Es gibt verschiedene Möglichkeiten, einen partial
UNIQUE INDEX
wahrscheinlich die einfachste und effektivste.
CREATE UNIQUE INDEX picture_homepage_uni ON picture (house_id) WHERE homepage;
Beschleunigt auch Abfragen zum Abrufen der Homepage-Bilder als zusätzlichen Vorteil.
Schema ändern
Ein anderer Ansatz wäre, eine Spalte homepage_id
hinzuzufügen zum Tisch house
, zeigt auf ein ausgewähltes Bild. Automatisch kann nur 1 Bild ausgewählt werden. Sie würden picture.homepage
nicht benötigen mehr. Die referenzielle Integrität könnte aufgrund von Fremdschlüsselbeschränkungen in beide Richtungen etwas schwierig sein, aber ich habe funktionierende Lösungen wie diese.