sql >> Base de Datos >  >> RDS >> PostgreSQL

Combinación única en una mesa

Puede (y debe) resolverse a nivel de base de datos si desea garantizar la integridad de los datos en todo momento. Hay varias formas, una parcial UNIQUE INDEX probablemente sea el más simple y efectivo.

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

->sqlfiddle

También acelerará las consultas para recuperar las imágenes de la página de inicio como beneficio colateral.

Cambiar esquema

Un enfoque diferente sería agregar una columna homepage_id a la mesa house , apuntando a una imagen seleccionada. Automáticamente, solo se puede seleccionar 1 imagen. No necesitarías picture.homepage más. La integridad referencial puede ser un poco complicada debido a las restricciones de clave externa en ambas direcciones, pero tengo soluciones que funcionan como esa.