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

vấn đề toàn vẹn quan hệ 'một-nhiều' cho các phạm vi thời gian

Và theo "dấu thời gian", bạn dường như muốn nói đến một khoảng thời gian nhất định .

ràng buộc loại trừ trên loại phạm vi , kết hợp với bình đẳng trên barid (sử dụng mô-đun bổ sung btree_gist ) sẽ là giải pháp hoàn hảo.

CREATE EXTENSION btree_gist;  -- needed once per database

CREATE TABLE foo (
  fooid  serial PRIMARY KEY
, barid  integer NOT NULL REFERENCES bar(barid) 
, bazid  integer NOT NULL REFERENCES baz(bazid)
, time_range tsrange NOT NULL           -- replaces startdate  & enddate 
, EXCLUDE USING gist (barid WITH =, time_range WITH &&)
);

Điều này yêu cầu Postgres 9.2 trở lên.

Có liên quan:

Sách hướng dẫn có ví dụ về mã phù hợp!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự cố với máy chủ rails

  2. Làm cách nào để di chuyển thuộc tính mô hình ActiveRecord từ json sang jsonb?

  3. Làm thế nào để sử dụng UUID làm khóa chính cho Thực thể Hibernate?

  4. Tại sao không thể tạo bảng phân vùng

  5. Nhận cá thể IPAddr từ biểu diễn json của nó