【スタースキーマ】

スタースキーマ とは?

公開:
💡 データ分析のための星座図、真ん中に数字・周りに説明
📌 このページのポイント
スタースキーマの構造 ファクトテーブル 売上金額, 数量 商品ID, 日付ID, 顧客ID... (数億行) 日付 年, 月, 曜日, 祝日 商品 商品名, カテゴリ, メーカー 顧客 名前, 年齢, 地域 地域 都道府県, エリア プロモーション キャンペーン名, 種類 中心にファクト、周囲にディメンション = 星形
スタースキーマのイメージ
ひよこ ひよこ
スタースキーマって、星の形をしたデータベースなの?
ペンギン先生 ペンギン先生
テーブルの関係図を描くと星形に見えるからそう呼ばれるんだ。真ん中に「ファクトテーブル」という売上金額とか数量とかの数値データを入れるテーブルがあって、そこから放射状に「ディメンションテーブル」という商品名や日付、店舗情報などの属性テーブルがつながるんだよ
ひよこ ひよこ
なんで普通のテーブル設計じゃダメなの?
ペンギン先生 ペンギン先生
普通の正規化されたテーブル設計は、データの重複を減らすのが目的だよね。でも分析のときは「先月の東京エリアの商品カテゴリ別売上」みたいに、いろんな切り口でデータを集計したい。正規化しすぎるとJOINが多くなって遅くなるから、分析に特化したシンプルな構造にするんだよ
ひよこ ひよこ
ファクトテーブルディメンションテーブルって具体的にはどんな感じ?
ペンギン先生 ペンギン先生
例えばECサイトなら、ファクトテーブルには「注文ID、商品ID、顧客ID、日付ID、数量、金額」が入る。ディメンションテーブルは「商品マスタ(商品名、カテゴリ)」「顧客マスタ(名前、地域)」「日付マスタ(年、月、曜日)」みたいな感じだよ
ひよこ ひよこ
BIツールと相性がいいって聞いたけど、なんで?
ペンギン先生 ペンギン先生
BIツールは「この軸で絞って、あの軸で集計して」という操作が多いよね。スタースキーマならディメンションが軸になるから、ドラッグ&ドロップで分析軸を選ぶ操作とテーブル構造が直感的に一致するんだ。Tableauとかでピボット分析するときにぴったりなんだよ
ひよこ ひよこ
スノーフレークスキーマっていうのもあるの?
ペンギン先生 ペンギン先生
あるよ。スタースキーマのディメンションテーブルをさらに正規化して分割したのがスノーフレークスキーマだよ。例えば「商品」テーブルから「カテゴリ」テーブルを分離するイメージ。雪の結晶みたいに枝分かれするから雪片(Snowflake)と呼ばれるんだ
ひよこ ひよこ
どっちを使えばいいの?
ペンギン先生 ペンギン先生
基本はスタースキーマがおすすめだよ。クエリがシンプルで速いし、理解しやすいからね。スノーフレークスキーマはディスク容量を節約できるメリットがあるけど、最近はストレージが安いから、クエリ性能を優先してスタースキーマを選ぶケースが多いんだよ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「スタースキーマ」って出てきたら「ファクトテーブルを中心に星形に配置するDWHの設計パターン」と思えればだいたいOK!
📖 おまけ:英語の意味
「Star Schema」 = 星形スキーマ
💬 ER図を描くとファクトテーブルを中心にディメンションテーブルが放射状につながって、星(Star)のように見えるからこう呼ばれるんだよ
← 用語集にもどる