Я считаю, что рассмотрение временного аспекта реальности, отраженного в вашей модели данных, должно начинаться с очень явного различия между действительным временем и временем транзакции измерениями;ваш пример подхода с генеральным директором «в определенный момент времени», имеющим «генеральный директор» состояние, сопровождаемое только одним общим состоянием временного измерения «Когда» может быть достаточно хорошим, если вы не учитываетемножество источников ваших захваченных «фактов» в точных временных масштабах.В противном случае, если вы перейдете к упомянутому в вашем вопросе вопросу о ценах на акции и их взаимосвязи, например, между значением индекса S & P 500 и ценами его составляющих, вы не сможете отделиться от этих двух измерений и зафиксировать их во внутренних данных .состояние : значение индекса S & P 500 имеет смысл только в отношении некоторого времени транзакции, так как вам нужно собирать составляющие цены в какой-то действительный момент времени и выполнять (не мгновенные) взвешивание и вычисления, чтобы получить значение индекса вкакой-то более поздний момент времени транзакции, который, по сути, является значением для прошедшего момента действительного времени.
Или, даже оставаясь в вашем примере, представьте, что какой-то полк соответствия обязывает вас проводить аудит в любое время каким был ваш ответ в какой-то момент в прошлом.Другими словами, ваш спецификатор времени
historicalDate(date: <time expression>)
является частным вариантом более общего случая
historicalDate(date: <valid time expression>,
asOf: <transaction time expression>)
, поэтому historicalDate(Today() - 1yr)
, на самом деле, historicalDate(Today() - 1yr, Now())
, но в принципе, может быть historicalDate(Today() - 1yr, Now() - 20days)
Работа с данными в двух местах не достаточно проста, чтобы дать краткий универсальный рецепт по укрощению его с помощью специальных языковых механизмов, таких как выражения для вычислений.Было бы неплохо почитать.Если меня спросят, какую книгу я могу порекомендовать на эту тему, мой ответ будет Управление временем в реляционных базах данных , в противном случае, если вы хотите провести исчерпывающее исследование, вы можете также рассмотреть классические Разработка приложений для работы с базами данных, ориентированных на времяв SQL и Временные данные и реляционная модель .
Возможно, кто-то еще может указать вам на подходы к обработке временного состояния данных вне механизма реляционной персистентности, но мой собственный опытограничивается только таким.