私のストレージ データ モデルでは、次の関係が得られました。
root_tbl -- 1:n -- entry_tbl -- n:1 -- action_tbl
他にもいくつかのテーブルがありますが、これで基本をカバーできます。基本的に、ルート テーブルの 1 つの ID には、エントリ テーブルに複数のデータセットがあります。
サンプルデータ:
root_tbl:
ID_root ; Country ; FK_User ; FK_Product
1 ; UK ; 23 ; 31
2 ; NL ; 42 ; 01
entry_tbl:
ID_entry ; FK_root ; FK_Action ; Duration
1 ; 1 ; 42 ; 200ms
2 ; 1 ; 10 ; 94ms
3 ; 1 ; 9 ; 300ms
4 ; 2 ; 10 ; 322ms
5 ; 2 ; 30 ; 100ms
ここまでは順調です...このデータモデルを使用すると、アクション「10」で国として「英国」を含むレコードの数などを簡単に答えることができます。このデータをファクト テーブルに入れたいのですが、問題はこれら 3 つのテーブルの関係です。たとえば、国、ユーザー、または製品をカウントするたびに ID で個別の選択を行う必要があるよりも、entry_tbl のレコードをファクトとして使用します。
ファクト テーブルは多かれ少なかれ次のようになります (文字列を外部キーとして想像してください)。
fact_tbl:
ID ; FK_Action ; Duration ; Country ; User ; Product
1 ; 42 ; 200ms ; UK ; 23 ; 31
1 ; 10 ; 94ms ; UK ; 23 ; 31
1 ; 9 ; 300ms ; UK ; 23 ; 31
2 ; 10 ; 322ms ; NL ; 42 ; 01
2 ; 30 ; 100ms ; NL ; 42 ; 01
これは、冗長なデータがたくさんあることを意味します。
これらの解決策を回避する方法はありますか? ファクト テーブルには、300 ~ 500m の行が含まれます。
あなたが私の主張を理解してくれることを願っています。不明な点があればお気軽にお尋ねください
よろしくトーマス