sql >> Database >  >> RDS >> PostgreSQL

Unieke combinatie in een tafel

Het kan (en moet) worden opgelost op DB-niveau als u de gegevensintegriteit te allen tijde wilt garanderen. Er zijn verschillende manieren, een gedeeltelijk UNIQUE INDEX waarschijnlijk de eenvoudigste en meest effectieve.

CREATE UNIQUE INDEX picture_homepage_uni ON picture (house_id) WHERE homepage;

->sqlfiddle

Versnelt ook het zoeken naar afbeeldingen op de startpagina als bijkomend voordeel.

Schema wijzigen

Een andere benadering is het toevoegen van een kolom homepage_id naar de tafel house , wijzend naar een geselecteerde foto. Er kan automatisch slechts 1 foto worden geselecteerd. Je hebt picture.homepage niet nodig meer. Referentiële integriteit is misschien een beetje lastig vanwege de beperkingen van buitenlandse sleutels in beide richtingen, maar ik heb zulke werkende oplossingen.




  1. Wat drijft de natuurlijke resultaatvolgorde voor een ongeordend MySQL-verzoek?

  2. Hoe verwijder ik alle gebruikerstabellen?

  3. Hoe de dagnaam van een datum in Oracle te krijgen

  4. Supertype-subtype correct implementeren in MySQL