PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Sự kết hợp độc đáo trong một bảng

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;

-> sqlfiddle

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đầu bếp và hậu cần; làm cách nào để chỉ định mật khẩu?

  2. Chuyển django RawQuerySet thành Queryset

  3. Làm cách nào để PostgreSQL chèn một hàng vào bảng khi bị xóa khỏi bảng khác?

  4. Python:Truy xuất kết quả truy vấn PostgreSQL dưới dạng giá trị JSON được định dạng

  5. Không thể xác định tên nhà cung cấp cho nhà máy của nhà cung cấp thuộc loại 'Npgsql.NpgsqlFactory'