Nó có thể (và nên) được giải quyết ở cấp DB nếu bạn muốn đảm bảo tính toàn vẹn của dữ liệu mọi lúc. Có nhiều cách khác nhau, một phần
UNIQUE INDEX
có lẽ là đơn giản nhất và hiệu quả nhất.
CREATE UNIQUE INDEX picture_homepage_uni ON picture (house_id) WHERE homepage;
Cũng sẽ tăng tốc các truy vấn để truy xuất hình ảnh trang chủ như một lợi ích thế chấp.
Thay đổi giản đồ
Một cách tiếp cận khác sẽ là thêm một cột homepage_id
vào bảng house
, chỉ vào một bức ảnh đã chọn. Tự động, chỉ có thể chọn 1 ảnh. Bạn sẽ không cần picture.homepage
nữa không. Tính toàn vẹn tham chiếu có thể hơi phức tạp vì các ràng buộc khóa ngoại theo cả hai hướng, nhưng tôi có các giải pháp làm việc như vậy.