Jの衝動書き日記

さらりーまんSEの日記でございます。

第8回 きれいなデータを作るためのモデリングポイント

この内容は、以前、日経システムで特集で組まれていた内容の箇条書きメモである。この筆者は、第7回の参考資料で上げた本の人と同じだったと思う。

データモデリングの8カ条

データの重複を防ぐ

  •  One Fact in One Place
    • モデルの正規化を適切に行う

    •  異音同義語の存在を見抜き、適切に正規化する

  • 移行データは期間限定で捨てる

    • コードの新旧を継続して持つということは辞める

  • 重複データは作成元を明確にする

    • 正規化を崩す場合は、正のデータがどれなのかを明確にする

    • 追加・削除・変更などは同じトランザクション内で実施する

    • 問題発生時には、すぐに再作成できる仕組みを用意する

データの誤りを防ぐ

  • 掛け持ちデータを作らない
    • 一つの属性に複数の意味を持たせない
    • 外部連携の電文等、データ形式が不定形になる場合でも、データの形式を定義するメタデータを用意する
  •  NULL値を使ってはいけない
    • データの登録時など、NULL登録しなければいけないような属性はモデリングとして不正確
    • データのライフサイクルにあわせて登録するようなデータモデルを用意する
    • 一つのエンティティに対して、異なるタイミングで追加される項目が混在していると起こる
  • 主キーだけで統合しない
    • 主キーが同じだからと言って安易にエンティティを統合しない
      • 発生タイミングが異なるとNULL値が発生する
    • トランザクションが特定のエンティティに集中することを防ぐ

データの抜けを防ぐ

  • 分析用データは正規化しない
    • トランザクション発生時のデータとして保存しておくことが適切なことが多い
    •  受注詳細の商品名や顧客名等、トランザクション発生時と、現在のマスタ上では異なる可能性が高い
  • マスターの断面管理を実践する
    • 最新のマスタデータだけを保持するのではなく、変更履歴を保持する

トランザクションの分類コード

トランザクションデータを分析するときに便利な11種類の分類コード。最初からマスタデータにつけるのではなく、別途後付にする。

マスタデータを階層構造でとらえて分析するための分類コード

  • 商品ブランド
  • 商品階層
  • 取引先グループ
  • 販売チャネル
  • 勘定科目
  • 組織

意味の異なる値を正しく識別して分析するための分類コード

  • 単位(個、ダース、コンテナなど)
  • 国/地域(日本、米国など)
  • 性別
  • 通貨
  • 言語

 

参考文献

日経システム 2011年 08号 特集 きれいなデータの作り方より