データの整合性を常に保証したい場合は、DBレベルで解決できます(解決する必要があります)。さまざまな方法があります。UNIQUE INDEX
おそらく最も単純で最も効果的です。
CREATE UNIQUE INDEX picture_homepage_uni ON picture (house_id) WHERE homepage;
また、付随的なメリットとしてホームページの写真を取得するためのクエリを高速化します。
スキーマの変更
別のアプローチは、列homepage_id
を追加することです。 テーブルhouse
、選択した画像を指します。自動的に1枚の画像しか選択できません。 picture.homepage
は必要ありません もう。両方向の外部キー制約のため、参照整合性は少し注意が必要かもしれませんが、私にはそのような実用的なソリューションがあります。