okpy

Pythonエンジニア兼テックリーダーが、多くのプロジェクトとチーム運営から得た実践的な知識を共有するブログです。

データモデリングプロセスとは

データモデリングプロセスとは

データモデリングプロセスとは、ビジネス要件をデータベースで表現できるように抽象化し、構造化されたデータモデルを作成する一連のステップである。このプロセスは、データの整合性、再利用性、拡張性を確保し、信頼性の高い情報システムの構築を支援する。

かつて、小さな製造会社で新しい受発注システムを開発することになった。既存のエクセルベースの管理に限界を感じていたが、何から始めてよいかわからなかった。そこで導入されたのが「データモデリングプロセス」だった。このプロセスに従って業務を丁寧に分解し、視覚的にモデル化することで、業務担当者たちは初めて「データ」という言語でシステムの全体像を理解できるようになった。


1. 要件分析(Requirements Analysis)

  • 目的:業務の流れ、システムの役割、ユーザーのニーズなどを明確にし、どのようなデータが必要かを定義する。
  • 活動
    • 関係者(ユーザー、業務担当、エンジニアなど)とのヒアリング
    • 業務プロセス図やユースケース図の作成
    • データ項目の洗い出し
    • 業務ルールの文書化と承認

ある日、営業部の佐藤さんが「商品コードが店舗ごとに違って混乱している」と訴えた。それをきっかけに、商品と店舗の関係性がモデル上で可視化され、全社共通の商品マスターが生まれた。


2. 概念データモデル(Conceptual Data Model)の設計

  • 目的:ビジネスルールに従ったエンティティ、属性、リレーションシップを整理し、ER図などで視覚化する。
  • 成果物:ER図(Entity-Relationship Diagram)、エンティティ定義一覧
  • ツール:draw.io, ER/Studio, Lucidchart, dbdiagram.io など
  • 補足:概念モデルでは、システム的な要素(データ型やインデックス)は扱わず、業務的な実体同士の関係性を重視する。

概念モデルの初期設計では、「顧客」エンティティの下に「名前」「住所」「電話番号」だけが存在した。しかし現場の意見を取り入れ、「法人顧客」と「個人顧客」の区別が新たに加わり、モデルがより実用的になった。


3. 論理データモデル(Logical Data Model)の作成

  • 目的:概念モデルをベースに、正規化された形でテーブル構造を設計し、主キー・外部キー・データ型などを定義する。
  • 活動
    • 第1〜第3正規形への変換(必要に応じてBCNFなど)
    • データ項目の詳細定義(文字列、数値、日付など)
    • ユニーク制約やNull制約の検討
    • ビジネスロジックに基づいたエンティティ間の関係調整

正規化を進めすぎたことで、あるプロジェクトではJOINが複雑化し、画面表示に遅延が発生した。逆にその経験が「必要に応じて意図的に正規化を緩める」という判断基準を与えてくれた。


4. 物理データモデル(Physical Data Model)の作成

  • 目的:選定したDBMSの特性を踏まえ、実際に利用可能なテーブル・インデックス・パーティションなどを具体化する。
  • 活動
    • ストレージ容量、I/O、パフォーマンスを考慮した設計
    • インデックス設計、ビュー作成、トリガー設定など
    • SQL DDLの生成(CREATE TABLE文など)
    • シャーディング、レプリケーション設計などスケーラビリティの検討

開発者の中村さんは、実際のクエリを何千回もシミュレートし、最適なインデックス配置を試行錯誤した。その努力により、月末処理時間は約60%短縮された。


5. モデルの検証とフィードバック

  • 目的:作成したモデルがビジネス要件と整合性を保っているか、パフォーマンスや保守性の観点から問題がないかを確認する。
  • 活動
    • シミュレーションやプロトタイプによる検証
    • 開発チーム・業務担当者とのレビュー
    • 実際のクエリパターンによる性能テスト
    • モデル変更時の影響範囲の分析と対応

テスト段階で、ある注文処理が異常に遅くなることが発覚。モデルの結合構造を見直すことで、問題はすぐに解決された。小さな発見が、大きな成功につながる典型だった。


6. 文書化とバージョン管理

  • 目的:将来的な運用・保守を円滑に進めるため、全モデル情報を文書として整備し、変更履歴を記録する。
  • 成果物
    • モデル設計書、ER図、定義書(属性の意味、データ型、ユースケースなど)
    • Gitなどでのバージョン管理、変更履歴記録

モデル設計書がしっかりと管理されていたことで、新メンバーの田中さんはわずか3日で全体像を把握し、即戦力として活躍できた。


7. 運用・保守フェーズでのデータモデル活用

  • モデルは開発フェーズだけでなく、運用中のトラブルシューティングや新機能追加時のベースとなる
  • 実運用でのデータ成長に伴うスキーマの見直し、パフォーマンスチューニングへの活用
  • モデルの再利用や派生モデル作成の起点としても重要

ある日、ユーザー数が急増し、クエリの負荷が予想以上に上昇。データモデルのパーティション戦略が功を奏し、大規模障害を回避できた。


まとめ

データモデリングプロセスは単なる図の作成ではなく、システム開発の成功を左右する設計活動である。各ステップでビジネスと密接に連携し、品質の高いモデルを構築することが重要である。特に、後工程への影響を最小限に抑えるためにも、要件定義と初期段階のモデリングがプロジェクト全体の成否を決定づける鍵となる。

そして忘れてはならないのは、「人」がモデルを作るということ。モデリングとは、単にデータの枠組みを設計するだけでなく、業務の知恵と現場の声を反映させる“翻訳”作業である。成功するモデリングの背後には、常に人の対話と気づきがある。