Я пытаюсь смоделировать концепцию DateRange для приложения для создания отчетов. Некоторые диапазоны дат должны быть абсолютными, с 1 марта 2011 г. по 31 марта 2011 г. Другие диапазоны относятся к текущей дате, последним 30 дням, следующей неделе и т. д. Как лучше всего хранить эти данные в таблице SQL?
Очевидно, что для абсолютных диапазонов у меня могут быть значения BeginDate и EndDate. Для относительных диапазонов имеет смысл иметь InceptionDate и целочисленный столбец RelativeDays. Как мне включить обе эти идеи в одну таблицу без внедрения в нее контекста, т.е. упомянуть все четыре столбца и использовать логику XOR для заполнения 2 из 4.
Две возможные схемы, которые я отклонил из-за наличия контекстно-зависимых столбцов:
CREATE TABLE DateRange
(
BeginDate DATETIME NULL,
EndDate DATETIME NULL,
InceptionDate DATETIME NULL,
RelativeDays INT NULL
)
OR
CREATE TABLE DateRange
(
InceptionDate DATETIME NULL,
BeginDaysRelative INT NULL,
EndDaysRelative INT NULL
)
Спасибо за любой совет!