プログラマ38の日記

主にプログラムメモです。

DWH: データモデリング (3.ヘッダと明細の構成のファクトは1つのファクトに結合する。)

この記事は、前回書いたデータモデリングの9つのことの3つ目です。

 

crmprogrammer38.hatenablog.com

 

ヘッダテーブルと明細テーブルの構成でトランザクションを構成する場合は多いと思います。

そういう時は、ヘッダテーブルと明細テーブルを結合して1つのファクトにします。

[ファクトを結合する前]

f:id:crmprogrammer38:20170222203116p:plain

[ファクトを結合した後]

f:id:crmprogrammer38:20170222203529p:plain

こんな感じで、スタースキーマになりました。

ですが、赤字の箇所の項目に注目して欲しい。

結合する前はヘッダに持っていた数値項目を、明細単位に展開すると集計した際におかしくなります。

なので、明細単位に展開する際にヘッダテーブルのみに持っている数値項目をどう明細に持たせるかの検討が必要です。

上の場合、ヘッダに値引額があって、明細テーブルの合計金額に対してまとめて値引をしていますが、ファクトを結合した後では、値引額を明細単位で分割しています。(分割ロジックは均等割りであったり、金額の割合に応じて割ったりなどになると思います)