PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Einzigartige Kombination in einer Tabelle

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;

->sqlfiddle

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.