5

SQL でバイテンポラル データベースを実装する場合、通常は次のタイムスタンプを使用することをお勧めします。

  • 有効開始
  • 有効終了
  • トランザクション開始
  • 取引終了

以前にこのアプローチを数回使用したことがありますが、TransactionEnd を除外して 3 つのタイムスタンプしか持たないことが、実装として正しくない理由を常に疑問に思っていました。ここで、トランザクションの時間範囲は、TransactionStart から次の TransactionStart までです。

データベースのサイズを制限する 3 つのタイムスタンプを使用するだけでなく、強力な議論はありますか?

4

2 に答える 2

1

1D テンポラル データベースでタイムスタンプを 2 つではなく 1 つだけ使用する例:

私は店を持っており、ユーザー X がいつ私の店にいたかを記録したいと考えています。

開始時間と終了時間のあるモデルを使用する場合、この情報は次のように記録できます。

X,1,2
X,3,4

つまり、ユーザー X は 1 と 2 の間と 3 と 4 の間に私の店にいました。これは明確で、シンプルで簡潔です。

タイムスタンプとして start-time のみを使用してデータをモデル化すると、次のようになります。

X,1
X,2
X,3
X,4

しかし、このデータをどのように解釈できますか? (1,2) からの X と (3,4) からの X ? または(2,3)からのXと(1,4)からのX?または (1,2)、(2,3)、(3,4) からの X? (4,inf) からの X は有効ですか?

このデータを理解するには、データまたはコードに制約/ロジック/情報を追加する必要があります。間隔が重複していないか、オブジェクトごとに ID を追加している可能性があります。このソリューションはすべて、すべての場合に機能するとは限りません。メンテナンスの難しさ、その他の問題。

例:すべてのアイテムにid(この場合はa、b)を追加すると、次のようになります:

X,a,1
X,a,2
X,b,3
X,b,4

データを 2 行 3 列に格納する代わりに、データは 4 行 3 列に格納されます。このモデルを使用してもメリットがないだけでなく、このモデルは次のように縮小できます。

X,a, 1,2 
X,b, 3,4

さらに削減

X, 1,2
X, 3,4
于 2015-04-16T09:40:46.087 に答える