質問

どのようにSQLで時間的の多対多の関係を表しているのでしょうか?非一時的な状況下で一方が接続するジャンクションテーブルする(別名リンク/ブリッジ/マップ)を使用します両側ます。

ジャンクションテーブルの上にValidStartとValidEnd列を含むような単純な一時的な追跡を追加していますか?あなたがこれを行っている場合、あなたは何に問題を(もしあれば)を実行しましたか?関係のこの種の経時変化を追跡するためのより良い方法はありますか?

それがすべてで助けている場合、

、私の場合、私は、特にSQL 2008を使用していますし、一時的なデータはではありませんbitemporal の私が唯一の有効な時間を追跡していてます。

役に立ちましたか?

解決

私は、一時的なデータと時間的多対多の関係の両方を使用しています(現在はいくつかの年のための)プロジェクトに取り組んでいます。各テーブルには、ValidFromとValidUntil列を有する(記憶日付のみ)。

まず、ValidUntilが含ままたは有効範囲から除外されているかどうか、すなわち有効*列の意味を定義する必要があります。また、NULLの日付が有効であり、その意味は何であるかどうかを指定する必要があります。

次に、あなたは、それぞれ2及び3日付範囲を受信dbo.Overlaps2()とdbo.Overlaps3()として、機能のカップルを必要とし、日付範囲がそうでなければ重複し、0の場合1を返す。

その上で、私はdbo.Overlap3(...)= 1と多対多の関係のためのビューを定義します。

一つさらなる点は、2つの又は3関連テーブルの日付に基づいて有効な有効範囲を計算する関数のセットを持つことである。

は、最近、私は、ユーザーが利用可能なすべてのデータ、またはのみ現在有効なデータを表示できるように機能を追加する必要がありました。私は、接続を開くときに、ユーザーにSPIDを関連付け、ユーザーテーブルでこの設定を保存し、ビューの別のセット内のレコードをフィルタリングます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top