この答えは多くの参照とほとんど実用的なコードではないのではないかと思います。最後にこれを台無しにしてからしばらく経ちましたが...
ここで混合したい2つのテクノロジーは、「アクティブデータベース」と「時制データベース」だと思います。
1つ目はルールなどの評価に役立ち、2つ目は時間データを保存して特定のレコードが有効になったときに評価するのに役立ちます。これらはどちらもかなり大きな研究分野ですが、一時的な作業のほとんどはプレーンSQLで実行できます(データベースに十分な時間サポートがある場合)。SQLではアクティブな部分は難しいですが、PostgreSQLには少なくともこれをわずかに支援するルールがあります。他のデータベースについてはわかりませんが、それらのほとんどには、探しているものに変換できるルール/トリガー/制約のサポートがあります。
アクティブデータベースは、ルールを使用して格納するファクトの変更に対応できるデータベースです。これらのルールは実装固有の言語で指定されていますが、毎日のディスカッションでは、イベント-条件-アクションルール(ECAルール)が一般的です。アクティブデータベースシステムの概要については、アクティブデータベース管理システムのマニフェストとアクティブデータベースシステムの記事をお読みください。ECAルールの詳細については、論理イベントとECAルール(ページは逆順o_0)およびアクティブオブジェクト指向データベースシステムのイベントを確認してください。
イベント処理は、複合イベントを処理し、それらのアクションを適切にトリガーする方法を処理するルール処理の特殊なケースです。これに関する興味深い読み物は、アクティブデータベースの複合イベント:複合イベント検出器のセマンティクス、コンテキスト、および検出と構造です。複合イベント処理サイトおよびイベントストリーム処理と複合イベント処理のウィキペディアの記事も参照してください。
時制データベースは、時間、特に2つの特定の種類の時間を理解できるデータベースと見なすことができます。有効時間とトランザクション時間。レコードの有効時間は、そのレコードが有効である期間であり、レコードのトランザクション時間は、そのレコードがデータベースに存在する時間です。実用的な入門書として、SQLで時制データベースを作成する方法に関する本をお勧めします。RichardT。SnodgrassによるSQLでの時制データベースアプリケーションの開発。
そうでなければ、時制データベースについて知りたいと思うかもしれないすべては、かなり包括的なドキュメントであるデータベースシステムのSpringer百科事典の時制データベースエントリで読むことができます(私は「時制データベース」エントリから始めます)が、始めるにはもう少し速く、閲覧と読み取りがかなり簡単な時制データベース用語集と、その出版物の部分にその地域で最も注目すべき出版物へのリンクがある(または持っていた...)サイトのタイムセンターをチェックしてください。
したがって、これについてすべて理解したので、11ページの画像を複合イベントとして表現でき、複合イベント検出器の適切な必要なサブセットを実装していれば、そのように検出/評価できることがすぐにわかります。残りは、時間的側面を持つテーブルのエントリとして表現できます:)
マーティン・ファウラーは、時間とともに変化するものについて、時間を扱う多くのパターンを要約したパターンで、この多くを自分自身で取り上げています。
結局、私はおそらく時間情報のデータベーススキーマを作成し、アクティブな部分にDBルールを使用するか、アプリケーションにその部分を実装します(ただし、ドラゴンは存在します)。PostgreSQLを使用する場合、ルールメカニズムはドキュメントのルールシステムの部分で説明されています。
読むべきことはたくさんありますが、これをすべて完全に理解すれば、あなたのプロの純資産はかなり上がる可能性があります:)
また、グーグルの良い用語は、「時制データベース」、「アクティブデータベース」、「ECAルール」です。