sql >> Databáze >  >> RDS >> PostgreSQL

Problém integrity vztahu „jeden k mnoha“ pro časové rozsahy

A „časovým razítkem“ zřejmě myslíte určité časové období .

omezení vyloučení na typ rozsahu , v kombinaci s rovností na barid (s využitím dodatečného modulu btree_gist ) by bylo perfektní řešení.

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 &&)
);

To vyžaduje Postgres 9.2 nebo později.

Související:

Příručka obsahuje příklad odpovídajícího kódu!



  1. Uložení USER_ID uživatele, který smazal záznam se spouštěčem v MySQL

  2. INSERT MySQL – Vyžadují názvy polí oddělování zadního zaškrtávacího/přízvuku?

  3. Chyba Oracle ORA-28759:selhání při otevření souboru při požadavku na balíček utl_http

  4. Jak nakonfigurovat MySQL tak, aby rozlišovala malá a velká písmena