Рассмотрим prices
таблицу с этими столбцами:
id integer primary key
product_id integer -- foreign key
start_date date not null
end_date date not null
quantity integer
price numeric
Я бы хотел, чтобы база данных применяла правило, согласно которому продукт может иметь только одну цену на определенное количество в диапазоне дат (через where <date> BETWEEN start_date AND end_date
).
Возможно ли такое ограничение на основе диапазона?
daterange
это точно такой же , так как это эксклюзивная нижняя граница, но это легко исправить. Должен ли я действительно переносить свои данные для использованияdaterange
типа столбца (можно ли сделать это отдельным вопросом, если так лучше) или это целесообразно с двумя столбцами?(product_id, start_date)
. С диапазоном дат это должно быть индексом на(product_id, lower(range_column))