OLAPキューブのモデリングに少し苦労しています。
私の例えはこれです:私は学生のリストを持っています。それぞれに1つの主要な研究対象があり、0人以上の未成年者が合計5人までいます。
生データは次のようになります。
Student ID | Major | Minor 1 | Minor 2 | Minor 3 | Minor 4 | Minor 5
-----------------------------------------------------------------------------
12345 English French Null Null Null Null
23456 French Engineering Null Null Null Null
34567 Math French Biology Physics Null Null
45678 Physics Null Null Null Null Null
56789 French Math Physics Chemistry Null Null
67890 Math French English Biology Null Null
ご覧のとおり、科目はすべて一般的です。一部の学生にとっては、一部は専攻であり、その他は未成年です(未成年者がいる場合)。これは、dimSujectディメンションがあることを意味します。
私はこれを次のようにマッピングできます:
factStudent-> dimSubject
学生の数であるメジャーをドロップして、各専攻の学生数を含む専攻のリストを表示できるようにします。
私がやりたいのは、dimMinorをドロップできるようにすることです。これにより、メジャーが各マイナーのカウントにドリルダウンされます。 dimSubjectは、メジャーかマイナーかに関係なく、取得されているすべてのサブジェクトの一意の参照です。学生への参照と主題への参照を格納するための中間のfactMinorテーブルを検討しましたが、これは粒度を維持しますか?また、中間ファクトをドリルダウンのディメンションとして使用する方法もわかりませんでした。
ファクトテーブルを次の形式に正規化します。
StudentId Level Subject
34567 Major Math
34567 Minor 1 French
34567 Minor 2 Biology
etc.
レベルをディメンションとして追加します。