В частности, я имею дело с типом 2 медленно изменяющимся размером и должен представлять временной интервал, на который была активна определенная запись, т.е. для у каждой записи у меня есть StartDate и EndDate. Мой вопрос заключается в том, следует ли использовать закрытый ([StartDate, EndDate]) или наполовину открытый ([StartDate, EndDate)) для представления этого, т.е. Включать ли последнюю дату в интервал или нет. Чтобы взять конкретный пример, скажем, запись 1 была активна с 1-го дня до 5-го дня, а с 6-го дня запись 2 стала активной. Я делаю EndDate для записи 1 равным 5 или 6?
В последнее время я пришел к мысли о том, что половина открытых интервалов лучше всего основана на, в частности, Dijkstra: Почему нумерация должна начинаться с нуля, а также соглашения для разбиения массива и функции range() в Python. Применяя это в контексте хранилища данных, я бы увидел преимущества соглашения с открытым интервалом наполовину:
- EndDate-StartDate дает время, в которое была активна запись.
- Проверка. Стартовая запись следующей записи будет равна EndDate предыдущей записи, которую легко проверить.
- Future Proofing: если позже я решит изменить мою гранулярность от ежедневного до более короткого, то дата переключения все еще остается точной. Если я использую закрытый интервал и сохраняю EndDate с отметкой времени полуночи, тогда мне придется отрегулировать эти записи для этого.
Поэтому мое предпочтение было бы использовать методологию с половинным интервалом. Однако, если было принято широко распространенное отраслевое соглашение об использовании метода закрытых интервалов, то я мог бы пошатнуться, чтобы скорее пойти с этим, особенно если он основан на практическом опыте внедрения таких систем, а не на моей абстрактной теоретике.
Заранее благодарим за любые идеи и комментарии.