データモデリングは、コンピュータ科学において、
データモデルを作成するプロセスです。このプロセスでは、特定のデータモデリング方法論を適用し、
データ構造を形式的に記述します。
データモデリングで用いられる
データモデルには、いくつかの種類があります。
階層型データモデル: データを階層構造で表現します。
ネットワーク型データモデル: 複雑なデータ間の関係をネットワーク状に表現します。
関係モデル: データを表(テーブル)と列で表現します。
オブジェクト関係モデル: 関係モデルに
オブジェクト指向の概念を取り入れたものです。
オブジェクトモデル: データをオブジェクトとして表現します。
データモデリングのプロセス
データモデリングでは、まずデータを構造化し、組織化します。その後、データベース管理システム(DBMS)を使用して実装することが一般的です。
データモデリングの過程では、データの定義と組織化に加え、構造化されたデータに対する制約を明確にします。これにより、データの整合性を保ち、正確な情報管理が可能になります。
データモデルは、構造化されたデータを記述するもので、主にRDBMS(関係データベース管理システム)のようなデータ管理システムで使用されます。一方、ワードプロセッサで作成された文書、メール、画像、音楽、動画などの非構造化データについては記述しません。
ANSI(米国規格協会)では、データモデルを3つの視点から捉えることを推奨しています。
概念スキーマ: モデリング対象となる領域の意味的な側面を記述します。実体クラス(概念)と関連から構成されます。
論理スキーマ: 概念スキーマをデータ処理技術を使って表現したものです。関係モデルでは表や列、オブジェクト指向ではクラスやXML要素などを使用します。
物理スキーマ: データの物理的な保存方法を記述します。
パーティション、
CPU、表スペースなどの要素を含みます。
これらの3つのモデルは、それぞれ独立しており、相互に影響を与えることなく変更することが可能です。ただし、スキーマ全体の一貫性は保つ必要があります。
ソフトウェア開発プロジェクトの初期段階では、概念
データモデルの設計が非常に重要です。概念
データモデルは、その後の開発段階で論理
データモデルに詳細化され、さらに物理
データモデルに変換される場合があります。
ただし、場合によっては、概念
データモデルを直接実装することも可能です。それぞれのモデルの構造は、互いに整合性を保つ必要があります。
データモデルは、対象とする領域の
データ構造を記述し、その領域自体の構造を定義します。つまり、
データモデルは、対象領域のための人工言語の文法を規定します。
データモデルは、実体クラス(事物の種類)の集合を表現します。組織は、これらの実体クラスについて、情報、属性、関連を保持・管理します。
データモデルは、データをコンピュータシステムで表現する方法とはあまり関係なく、データを組織化して記述します。
データモデルによって表現される実体は、有形物の実体である場合がありますが、堅牢な
データモデルでは、抽象的な実体を同定することが多くあります。たとえば、「人物」という実体クラスは、組織と相互作用するすべての人物を表すことができます。このような抽象的な実体クラスは、特定の役割を表す「売り手」や「従業員」よりも適している場合があります。
データモデルを設計する際には、トランザクションデータと参照用データを区別することが重要です。トランザクションデータは、一つ以上の参照用データを参照するデータです。
汎用
データモデルは、従来の
データモデルを汎用化したもので、標準化された関係型と関連する種類を定義します。汎用
データモデルを定義することは、自然言語を定義することに似ています。例えば、「分類関係」や「全体-部分関係」のような関係型を定義します。
汎用
データモデルでは、拡張性のあるリストにより、あらゆる事物を分類し、オブジェクトの全体-部分関係を指定できます。これにより、従来の
データモデルの固定的なスコープを克服し、より柔軟な表現を可能にします。
従来の
データモデルでは、同じ領域を複数の人がモデル化すると、異なるモデルが作成されやすく、共同作業での困難やデータ交換・統合の障害となります。汎用
データモデルは、こうした問題を解決し、より統一されたデータモデリングを可能にします。
汎用的なツールを作成する際には、抽象的なモデルが適しています。このモデルは、「事物」と「事物タイプ」の変形版から構成され、すべての実際のデータがこれらの
インスタンスとして記述されます。ただし、この抽象的なモデルは、実世界の事物を表現しにくいという側面もあります。
汎用
データモデルは、以下のような特徴を持っています。
「事物インスタンス」、「クラス」、「関連」などの汎用的な実体で構成されます。
あらゆる事物
インスタンスは、「事物
インスタンス」またはそのサブタイプの
インスタンスです。
事物インスタンスは、明示的な分類関連によって分類されます。
分類に使用される実体は、「クラス」またはそのサブタイプの
インスタンスとして定義されます。
属性は、他の実体への関連として扱われます。
実体は、事物の本質的な性質に基づいて命名されます。
実体には、一意な識別子が割り当てられます。
アクティビティ、関連、イベントによる影響は、実体として表現されます。
実体は、サブタイプ/スーパータイプの階層の一部を構成します。
汎用データモデルの例として、ISO 10303-221、ISO 15926、Gellishなどが挙げられます。
データの組織化
別の種類のデータモデルでは、DBMSや他のデータ管理技術を用いてデータを組織化する方法を記述します。この種のデータモデルでは、関係モデルでの表と列、オブジェクト指向モデリングでのクラスと属性などを記述します。
理論的には、これらのデータモデルは、より概念的なデータモデルから導出されますが、システムの処理能力や利用パターンを考慮すると、概念的なデータモデルとは異なる場合があります。
データ分析は、データモデリングにおいて一般的に使われる用語ですが、その作業は、分析よりもむしろ総合に近いものです。データモデリングでは、データの冗長性を排除し、関連するデータ構造を関連付け、包括的な概念にまとめることを目指します。
また、適応型システム、例えば人工ニューラルネットワークを使った方法論も存在します。
データモデリングの技法
データモデリングには、いくつかの技法(方法論)が存在します。これらの技法は、データモデリングを行う際のガイドラインとなります。しかし、同じ技法を使用しても、異なるデータモデルが作成されることがよくあります。
データモデリングで使われる主な技法には、以下のようなものがあります。
バックマン線図
EBNF
実体関連モデル (ERモデル)
実体関連図 (ER図)
IDEF1X
統一モデリング言語 (UML)
オブジェクトリレーショナルマッピング
Relational Model/Tasmania (RM/T)
Barker's Notation
Business rules
Business rules approach
Object Role Modeling (ORM) / NIAM
Semantic data modeling
データモデリングは、
情報システムの開発において不可欠なプロセスであり、適切なモデルを選択し、データを効果的に構造化することが、システムの成功に大きく影響します。