Вярвам, че разглеждането на времевия аспект на реалността, уловен във вашия модел на данни, трябва да започне с много ясно разграничение между валидно време и време за транзакция измерения; вашият примерен подход с главен изпълнителен директор „в даден момент“ със състояние „изпълнителен директор“, придружено само от едно общо състояние на времево измерение „кога“ може да е достатъчно добър, стига да го правите не вземайте под внимание множество източници на заснетите от вас „факти“ на фини времеви мащаби. В противен случай, ако се обърнете към споменатия във въпроса си въпрос за цените на акциите и техните взаимоотношения, като например между стойността на индекса 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