あるディメンションが別のディメンションから論理的に継承する場合、ディメンションは通常、ディメンションモデルでどのようにモデル化されますか?
たとえば、私がEmployee
ディメンションとDriver
ディメンションを持っていると仮定します。ここで、ドライバーには従業員のすべての属性がありますが、Truck Number
属性。これらの寸法はどのようにモデル化する必要がありますか?
従来のOLTPシステムでは、正規化と継承について心配する必要があるかもしれませんが、一般的なデータウェアハウスシステムでは、クエリ応答を高速化するために非正規化する必要があります。
この場合、クエリを実行する可能性のある従業員に関連するすべての列と、Employee_Dimension
と呼ぶ可能性のある追加の列を含むemployee_role
テーブルを設計します。 Driver
、Manager
などのエントリを使用して、ドライバーである従業員用にtruck_number
を入力した別の列を作成するか、列をNULL
ドライバーでない場合。もちろん、他の従業員の役割の情報を含めるために、さらに列を追加することもできます。
簡単に言うと、典型的なスタースキーマを構築している場合は、もちろんストレージスペースを犠牲にして、大量の非正規化を使用することで、より高速なクエリ結果を実現できます。
交換可能な寸法パターンを採用すると聞きました。同じSKで3つの次元を作成します。
1) **Employee** Base table with the common attributes
2) **Driver** table with driver specific attributes note the SK' needs to match the table above
3) **DriverEmployee** a view that joins the values from one and two.
次に、データについてレポートするときに、要件に最適な構造を選択します:従業員、ドライバー、DriverEmployee