2016-12-15 14 views
1

私の大学では、データウェアハウスモデルとETLプロセスを設計する必要があります。データウェアハウスの多対多関係のモデリング

  • コメントテキスト(文字列)
  • 積スコア({0、0.5、...、4.5、5})
  • :私のデータ・ウェアハウスは、製品についての意見/コメントを保存しなければ、各レコードは、からなるべき
  • コメント作成者(String)を
  • コメント日(日)
  • 製品の推奨({はい、いいえ})
  • コメントアップ票(INT)
  • コメントダウン票(INT)
  • 製品の長所(多くの文字列、例えば{価格、デザイン、耐久性、...})とそのカウント
  • 製品の短所(多くの文字列、例えば{大きすぎる、重すぎる、価格、...})と そのカウント
  • また、データウェアハウスで

製品についての情報を格納する必要がありますが:

  • 製品カテゴリ
  • 製品ブランド
  • 製品モデル

最初にデータウェアハウスモデルを作成したいのですが、多面的な関係であるため、製品の長所と短所を保存する際に問題があります。通常のリレーショナルデータベースでは、単に連想テーブルを作成するだけですが、ここではどのように進めるのか分かりません。結局、ファクトテーブルを正規化したくありません。

私は以下の図で示した3つのアプローチを検討しています。私は多対多の関係を取り除くためにブリッジテーブルの方法を使用しました(ただし、私は正しく分かりません)。パフォーマンスのクエリにどのような影響があるかわかりません。

ER Model

私は使用することができる第2のアプローチは、ブールカラム法です。 PROSテーブルとCONSテーブルでは、それぞれの可能な値に対して列を作成できますが、最大100の異なる賛否両論があります。可能な賛否両論の数も一定ではありません。コメントの作者は、新しい賛否両論(データソースでの動作)を列挙できますが、新しい列を追加することはできません(データウェアハウス内のデータを変更しないでください)。

私が考えているのは、PROSテーブルではプロを保つことですが、値はカンマやその他の区切り文字を使用して区切られます。 "価格、デザイン、色"。シンプルであるが、分析するのが難しいか、または&のダイスをスライスします。

この状況ではどのアプローチを使用しますか?フォームデータソースはすべてのコメントを取得し、最後の読み込み後に新しいコメントのみをロードしたいので、データウェアハウスにデータをロードするのに適していますか?

答えて

1

私が思うには、あなたの最初のオプションをあなたがここで述べたものに少し修正してもらえれば、それは私が理解するように最高だろう。

あなたが提供した画像では、Pros_Bridge_Detailテーブルが正常です。残りは変更する必要があります。

  • カウントだけを保持するpros_Bridgeテーブルを削除できます。実際にそのコラムをCOMMENTファクトテーブルに追加することができます。それは、多くの表で照会するのではなく、照会の方が効率的で簡単です。
  • あなたは、価格、デザイン、耐久性などのプロを与えるために多くの分野があると言いました。これらのものを別々の次元に入れましょう。
  • Pros_Bridge_Detailテーブルに新しい列を追加して、プロ製品タイプ(設計、耐久性など)を保持する新しく作成された次元のIDを保持します。 これで、プロ製品を追加すると、Pros_Bridge_Detailテーブルにはユーザーが提供するプロフェッショナルがあり、プロが新しいディメンションのIDを使用して提供されることに関する価値も保持されます。
  • また、Comment IDもPros_Bridge_Detailテーブルに保存することを忘れないでください。これは、あなたのコメントファクトテーブルへのリンク(FK)になります。

同じことを短所に行うこともできます。

私はちょうど説明したことを理解し、助けてくれることを願っています。何か問題がある場合はお知らせください。