2 つの異なる出所を持つデータがあります。一部は顧客からのもので、一部は別のベンダーからのものです。現在、このデータを物理的に "マージ" して、ほぼ 100 列、数万行の巨大なテーブルを作成し、2 つの次元を形式的に分離していません。したがって、実際にはこのテーブルをあまり使用できません。
この混乱を適切な、しかし小さなスター スキーマに再設計します。
2 つの次元は明らかです。たとえば、時間もその 1 つです。
顧客提供のデータは、多くの事実値を提供します。各ベンダーは、同じディメンションに適合する追加のファクト値を提供する場合と提供しない場合があります。
このファクト データはすべて同じ粒度です。すべてのベンダーから情報を取得することはあまりないため、「スパース」と呼ぶことができます。
これが私のジレンマです。
この 1 つのファクト テーブル (いくつかの null を含む) は、さまざまなソースから入力されたものですか?
それとも、このn +1 個のファクト テーブル (1 つは顧客から入力され、他は各ベンダーから入力されたもの) ですか?
それぞれのデザインには長所と短所があります。「マージ」または「個別にロード」の選択について、セカンドオピニオンが必要です。
顧客は、収益、コスト、カウント、重量、およびトランザクションの終了について知っているその他の情報を提供します。
ベンダー 1 は、一部のトランザクションに関する追加の詳細 (重量、コスト、期間) を提供します。他のトランザクションは、ベンダー 1 からの価値はありません。
ベンダー 2 は、トランザクションの一部について追加の詳細 (ボリューム、期間、長さ、外貨レート) を提供します。他のトランザクションは、ベンダー 2 にとって価値がありません。
一部のトランザクションには、両方のベンダーが含まれます。いくつかのトランザクションには、どちらのベンダーもありません。
ヌルを持つ 1 つのテーブル? 3つのテーブル?