【スタースキーマ】

スタースキーマ とは?

💡 データ分析のための星座図、真ん中に数字・周りに説明
📌 このページのポイント
スタースキーマの構造 ファクトテーブル 売上金額, 数量 商品ID, 日付ID, 顧客ID... (数億行) 日付 年, 月, 曜日, 祝日 商品 商品名, カテゴリ, メーカー 顧客 名前, 年齢, 地域 地域 都道府県, エリア プロモーション キャンペーン名, 種類 中心にファクト、周囲にディメンション = 星形
スタースキーマのイメージ
ひよこ ひよこ

スタースキーマって、星の形をしたデータベースなの?

ペンギン先生 ペンギン先生

テーブルの関係図を描くと星形に見えるからそう呼ばれるんだ。真ん中に「ファクトテーブル」という売上金額とか数量とかの数値データを入れるテーブルがあって、そこから放射状に「ディメンションテーブル」という商品名や日付、店舗情報などの属性テーブルがつながるんだよ

ひよこ ひよこ

なんで普通のテーブル設計じゃダメなの?

ペンギン先生 ペンギン先生

普通の正規化されたテーブル設計は、データの重複を減らすのが目的だよね。でも分析のときは「先月の東京エリアの商品カテゴリ別売上」みたいに、いろんな切り口でデータを集計したい。正規化しすぎるとJOINが多くなって遅くなるから、分析に特化したシンプルな構造にするんだよ

ひよこ ひよこ

ファクトテーブルディメンションテーブルって具体的にはどんな感じ?

ペンギン先生 ペンギン先生

例えばECサイトなら、ファクトテーブルには「注文ID、商品ID、顧客ID、日付ID、数量、金額」が入る。ディメンションテーブルは「商品マスタ(商品名、カテゴリ)」「顧客マスタ(名前、地域)」「日付マスタ(年、月、曜日)」みたいな感じだよ

ひよこ ひよこ

BIツールと相性がいいって聞いたけど、なんで?

ペンギン先生 ペンギン先生

BIツールは「この軸で絞って、あの軸で集計して」という操作が多いよね。スタースキーマならディメンションが軸になるから、ドラッグ&ドロップで分析軸を選ぶ操作とテーブル構造が直感的に一致するんだ。Tableauとかでピボット分析するときにぴったりなんだよ

ひよこ ひよこ

スノーフレークスキーマっていうのもあるの?

ペンギン先生 ペンギン先生

あるよ。スタースキーマのディメンションテーブルをさらに正規化して分割したのがスノーフレークスキーマだよ。例えば「商品」テーブルから「カテゴリ」テーブルを分離するイメージ。雪の結晶みたいに枝分かれするから雪片(Snowflake)と呼ばれるんだ

ひよこ ひよこ

どっちを使えばいいの?

ペンギン先生 ペンギン先生

基本はスタースキーマがおすすめだよ。クエリがシンプルで速いし、理解しやすいからね。スノーフレークスキーマはディスク容量を節約できるメリットがあるけど、最近はストレージが安いから、クエリ性能を優先してスタースキーマを選ぶケースが多いんだよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「スタースキーマ」って出てきたら「ファクトテーブルを中心に星形に配置するDWHの設計パターン」と思えればだいたいOK!
📖 おまけ:英語の意味
「Star Schema」 = 星形スキーマ
💬 ER図を描くとファクトテーブルを中心にディメンションテーブルが放射状につながって、星(Star)のように見えるからこう呼ばれるんだよ
← 用語集にもどる