Я считаю, что рассмотрение временного аспекта реальности, отраженного в вашей модели данных, должно начинаться с очень четкого различия между действительным временем и время транзакции; ваш пример подхода с генеральным директором «в определенный момент времени», имеющим состояние «генеральный директор», сопровождаемое только одним общим состоянием временного измерения когда», может быть достаточно хорошим, пока вы это делаете не рассматривайте несколько источников ваших захваченных «фактов» в мелких масштабах времени. В противном случае, если вы обратитесь к упомянутому в вашем вопросе вопросу о ценах акций и их взаимосвязях, например, между значением индекса 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 и Временные данные и реляционная модель.
Возможно, кто-то еще может указать вам на подходы к обработке состояния временных данных вне реляционного механизма персистентности, но мой собственный опыт ограничен только такими.
person
Gene Belitski
schedule
26.02.2012
(historicalDate (Today() - 10 years)) { .. }
иreturn company.CEO
. - person Ramon Snir   schedule 26.02.2012