Itu dapat (dan harus) diselesaikan pada tingkat DB jika Anda ingin menjamin integritas data setiap saat. Ada berbagai cara, parsial
UNIQUE INDEX
mungkin yang paling sederhana dan paling efektif.
CREATE UNIQUE INDEX picture_homepage_uni ON picture (house_id) WHERE homepage;
Juga akan mempercepat kueri untuk mengambil gambar beranda sebagai manfaat tambahan.
Ubah skema
Pendekatan yang berbeda adalah dengan menambahkan kolom homepage_id
ke meja house
, sambil menunjuk ke gambar yang dipilih. Secara otomatis, hanya 1 gambar yang dapat dipilih. Anda tidak perlu picture.homepage
lagi. Integritas referensial mungkin sedikit rumit karena batasan kunci asing di kedua arah, tetapi saya memiliki solusi yang berfungsi seperti itu.