Rozważ prices
tabelę z tymi kolumnami:
id integer primary key
product_id integer -- foreign key
start_date date not null
end_date date not null
quantity integer
price numeric
Chciałbym, aby baza danych egzekwowała zasadę, że produkt może mieć tylko jedną cenę w określonej ilości w zakresie dat (via where <date> BETWEEN start_date AND end_date
).
Czy tego rodzaju ograniczenie oparte na zakresie jest wykonalne?
daterange
jest dokładnie tak samo, ponieważ ma wyłączną dolną granicę, ale łatwo to naprawić. Czy naprawdę powinienem migrować moje dane, aby użyćdaterange
typu kolumny (może to stanowić osobne pytanie, jeśli jest to lepsze), czy też jest to rozsądne?(product_id, start_date)
. Z datownikiem musiałby to być indeks on(product_id, lower(range_column))