データモデル

データモデルは、アプリケーション設計のための計画として使うソフトウェア工学の抽象モデルの1つである。班・要員間の意思疎通のための事業データの文書化、組織化、そして特にデータの格納方法や利用方法のために利用される。
Hoberman（2009）によれば、「データモデルは、組織内での意思疎通を改善し、それによってより柔軟で安定したアプリケーション環境に導く、真の情報の部分集合を正確に説明するシンボルとテキストの集合を使う、事業とIT専門家の両方のための、道筋を見つける道具である。」
データモデルは、データまたは構造化データの構造を明示的に決める。データモデルの代表的な応用は、データベース・モデル、情報システムの設計、およびデータの交換を可能にすることを含む。通常データモデルは、データモデリング言語によって規定する。
コミュニケーションと精度は、データモデルがデータを使い交換する応用へもたらす2つの主要な利益である。データモデルは、異なる背景と異なる経験水準からなる事業要員がお互い意思疎通する媒体である。精度は、データモデルにおける用語と規則をただ1つの方法で解釈することができ、そして曖昧さが無いことを仮定する。
データモデルは、時には、特にプログラミング言語の文脈における、データ構造として参照する。データモデルは、エンタープライズモデルの文脈で、しばしば、機能モデルで補完する。

概要

大量の構造化されたデータや構造化されないデータを管理することは、情報システムの主要な機能である。データモデルは、リレーショナル・データベースのようなデータ管理システムでの記憶装置のための構造化されたデータを記述する。それらは、典型的に、ワードプロセッサ文書、電子メール、ピクチャ、音声あるいはビデオのような、非構造化データを記述しない。

歴史

情報システムのモデリングにおける最も初期の業績の1つは、「情報を規定する正確で抽象的な方法とデータ処理問題の時間的特徴」を論じた、YoungとKent（1958）によって為された。彼らは、「ハードウエアのあらゆる部分を取り巻く問題のための分析者に可能となるべき1つの表記法」を作ることを望んだ。彼らの作業は最初、異なるハードウエア・コンポーネントを使う異なる代替的実装を設計するための、1つの抽象仕様と不変の基盤を作る努力であった。情報システム・モデリングにおける次のステップは、「データ処理のシステム・レベルで、マシン独立の問題定義言語の正しい構造」を開発すると言う、本質的にYoungとKentと同じことを目指した、1959年に編成されたIT業界コンソーシアムである、CODASYLによって行われた。これが1つの特定な情報システムの情報代数学（en:Information_algebra）の開発に導いた。
1960年代にデータモデリングは、経営情報システム概念の導入と共に更にその重要性を増大させた。Leondes（2002）によれば、「必要なとき、情報システムは、管理目的のためデータと情報を提供する。このIntegrated_Data_Store (IDS)と呼ばれる、第一世代データベースシステムが、GEのチャールズ・バックマンによって設計された。2つの有名なデータベース・モデル:ネットワーク型データモデル、および階層型データモデルがこの期間中に提案された。」1960年代の終わりに向けて、エドガー・F・コッドは、彼のデータ編成の理論を練り、一階述語論理に基づいたデータベース管理のためのリレーショナル・モデルを提案した。
1970年代に実体関連モデルが、1976年にピーター・チェンによって初めて提案され、概念データモデルの新しいタイプとして出現した。実体関連モデルは、データベースに格納される情報ニーズや情報のタイプを記述するための、要求分析中の情報システム設計の最初のステージで使われた。この技術は、あらゆる概念体系、すなわち、一定の関心の領域のための、概念の全貌と分類とそれらの関連、を記述できる。 
1970年代、G.M. Nijssenは、「自然言語情報分析手法」（NIAM）を開発し、そして1980年代にそれを発展させたオブジェクト役割モデリング（ORM）をTerry Halpinと一緒に開発した。
Jan L. Harrington（2000）によれば、更に1980年代に、「オブジェクト指向パラダイムの開発が、我々がデータとデータに作用する手続きを見る方法に基本的な変化をもたらした。伝統的に、データと手続きは：データベースにデータとそれらの関連、アプリケーション・プログラムに手続きをと、別々に格納されていた。オブジェクト指向では、しかしながら、そのデータと共にエンティティの手続きを組み合わせた。」

データ構造ダイアグラム

データ構造ダイアグラム（DSD）は、エンティティとそれらの関連、およびそれらを拘束する制約（constraints）を文書化する図式表記法を提供するよって、概念データモデルを記述するため使われる1つのダイアグラムでありデータモデルである。DSDの基本的図形要素は、エンティティを表すボックスと、関連を表す矢である。データ構造ダイアグラムは、複雑なデータ・エンティティを文書化するため最も有用である。
データ構造ダイアグラムは、実体関連モデルの1つの拡張である。DSDで、関連が、エンティティ群を束ねる制約を規定する属性から構成されるボックスとして描かれる一方で、属性は、エンティティの、外側でなく、内側で規定される。実体関連モデルは、堅牢である一方で、関連同士の制約を規定する方法を提供せず、そして、いくつかの属性を持つエンティティを表現するとき視覚的に扱い難くなる。DSDは、DSDが1つのエンティティ内での要素の関連に焦点を当て、そしてユーザーに各エンティティ間のリンクと関連を完全に見せることができるのに対して、実体関連モデルでは異なるエンティティ間の関連に焦点を当てる点で、異なる。
データ構造ダイアグラムを表現するため、多重度（cardinality）を定義する方法に顕著な違いを伴う、いくつかのスタイルがある。選択は、鏃、逆向き鏃（鳥足）、あるいは多重度の数値表現の間に存在する。

実体関連モデル（ERM）

実体関連モデル（ERモデル）は、構造化されたデータを表現するためソフトウエア工学で使われる、1つの抽象概念スキーマ（または、意味的データモデル（semantic data model））である。実体関連モデルのため使われるいくつもの表記法が存在する。

汎用データモデル

汎用データモデル（Generic data model）は、通常のデータモデルの一般化されたものである。それらは、そのような関係タイプによって関連付けられるかもしれないものの種類と一緒に、標準化された一般の関係タイプを定義する。汎用データモデルは、従来のデータモデルの欠点を解決する1つのアプローチとして開発された。例えば、異なるモデラーは一般に、同じドメインの異なる従来のデータモデルを作り出す。これは、異なる人々のモデルを一緒に集めることにおいて困難を導き、そしてデータ交換やデータ統合の障害である。しかしながら、この違いはいつも、モデルにおける抽象レベルの違いと、インスタンス化される事実の種類における違い（モデルの意味的表現能力）に帰因する。モデラーは、違いをより重要でないものにするため、より具体的に提示すべきである一定の要素についてコミュニケートし合意する必要がある。

意味的データモデル（セマンティック・データモデル）

ソフトウェア工学における意味的データモデル（semantic data model）は、その他のデータとの相互関係性の文脈内でのデータの意味を定義する1つの技法である。意味的データモデルは、どのように格納シンボルがその実世界に関係させるかを定義する1つの抽象である。意味的データモデルは、時には、概念データモデル（conceptual data model）と呼ばれる。
階層型、ネットワーク型データモデル、あるいはリレーショナル であろうと、データベース管理システム（DBMS）の論理的データ構造は、それがスコープとDBMSによって採用される実装戦略への偏った方向における限界があることから、データの概念的定義への要求を完全に満たすことはできない。そこで、概念的ビュー（conceptual view）からデータを定義する必要性が、意味的データモデリング技法の開発に導いた。それは、他のデータとの相互関係性の文脈内でのデータの意味を定義する技法である。図に示されるように。資源、アイデア、イベント、などの条項で、現実世界は、物理的データ・ストア内でシンボル化されて定義される。意味的データモデルは、どのように格納されるシンボルを実世界に関係させるかを定義する1つの抽象である。そこで、そのモデルは実世界の真の表現でなければならない。

データアーキテクチャ

データアーキテクチャは、目標状態の定義に使われるデータの設計であり、かつ目標状態に合致させるため必要とされる次に続く計画である。それは普通、ビジネスアーキテクチャ、またはソリューション仕組（solution architecture）の芯柱を形成するいくつかの仕組ドメイン（architecture domain）の1つである。
データアーキテクチャは、事業あるいはそのアプリケーションによって使われるデータ構造を記述する。データの格納と動きの2つの記述がある。格納におけるデータ記述はデータ・グループとデータ項目を記述し、動きにおけるデータの記述はデータの品質、アプリケーション、場所などへのそれらデータ創作物のマッピングを記述する。
目標状態を実現する上で必須な、データアーキテクチャの記述はどのようにデータが、与えられたシステム内で、処理され、格納され、取扱われるかである。それは、そのシステム内での、データ・フローを設計し、データの流れをコントロールすることも可能にするデータ処理運用のための基準を提供する。

データモデリング

ソフトウエア工学における データモデリングは、データモデリング技法を使って公式のデータモデル記述を適用することによるデータモデルを作成するプロセスである。データモデリングは、データベースのための事業要求を定義するための1つの技法である。それは時には、1つのデータモデルがやがて1つのデータベースに実装されることから、データベース・モデリングと呼ばれる。
図は、今日のデータモデルが開発され、そして使われる方法を描いている。概念データモデル（conceptual data model）は、開発されているアプリケーションのためのデータ要求に基づき、おそらくアクティビティ・モデルの文脈で開発される。そのデータモデルは通常、エンティティ・タイプ、属性、関連、完全性ルール、およびそれらのオブジェクトの定義から成る。これは、そこでインタフェースまたはデータベース設計のためのスタート・ポイントとして使われる。

データ組織化

データモデルのもう1つの種類は、データベース管理システムまたは他のデータ管理技術を使って、どのようにデータを組織化するかを記述する。それは、例えば、リレーショナル・テーブルとカラムまたはオブジェクト指向クラスと属性を記述する。そのようなデータモデルは、時には、物理データモデル（physical data model）として参照されるが、ANSIのオリジナルの3層スキーマ仕組でそれは「論理的」と呼ばれる。その仕組において、その物理的モデルは、格納媒体（シリンダー、トラック、およびテーブル空間）を記述する。理想的にこのモデルは、上で記述されたより概念的なデータモデルから派生される。それは異なるかもしれないが、しかしながら、処理能力た用途パターンのような制約を記録する。
データ分析がデータモデリングの共通の用語である一方で、実際的な活動は、それが（より一般的な概念から構成要素の概念を識別する）分析を伴って行われるより、（特定のインスタンスから一般の概念を推定する）合成の考えや手法を伴うのがより共通である。{おそらく誰もシステム合成者と呼ばないことから、我々が我々自身をシステムアナリストと呼ぶ。} データモデリングは、不必要なデータの冗長性を排除し、関連でデータ構造を関連付けることで全体を、緊密し、分離不可に、一緒の関心のデータ構造にする努力をする。
1つの異なるアプローチは、データの暗黙的モデルを自律的に作り出す人工ニューラル・ネットワークのような、適合システム（adaptive systems）の利用を通してである。

データ構造

データ構造は、データを効率的に使えるようコンピュータに格納する1つの方法である。それは、データの数学的かつ論理的な概念の1つの組織化である。しばしば、注意深く選ばれたデータ構造が、最も効率的なアルゴリズムの利用を可能とする。データ構造の選択はしばしば、抽象データ型の選択から始まる。
データ･モデルは、与えられたドメイン内のデータの構造を、そのドメイン自身の基盤をなす構造をほのめかすことによって、記述する。これは、そのドメインに専用の人工言語の専用文法を、実際に規定することを意味する。データモデルは、企業が保持しようと望む情報、その情報の属性、およびそれらのエンティティ間の関連と（時には暗示的に）それらの属性間の関連についての、エンティティのクラス（ものの種類）を表現する。そのモデルは、どのようにデータがコンピュータ・システム内で表現されるかにかかわらず、いくらかの広がりへのデータの組織を記述する。
データモデルによって表現されるエンティティは、触知可能なエンティティであり得るが、そのような具体的エンティティ・クラスを含むモデルは、時間を越えて変化する傾向がある。堅牢なデータモデルは、しばしばそのようなエンティティの抽象概念を認識する。たとえば、1つのデータモデルが、ある組織と関連する全ての人間を表す、「人材」と呼ばれるエンティティ・クラスを含むかもしれない。そのような抽象エンティティクラスは、それらの人材によって演じられる特定の役割を識別する「ベンダー」または「従業員」と呼ばれるより、一般に適切である。

パターン

パターンは、多くのデータモデルで現れる共通のデータモデリング構造である。

データ・フロー・ダイアグラム（DFD）

データ・フロー・ダイアグラムは、プログラムのコントロールの流れを示すフローチャートとは違い、情報システムを通してのデータの「流れ」を示す、図式表現である。データ・フロー・ダイアグラムはまた、データ処理（構造化設計）の可視化（visualization）のため使われうる。データ・フロー・ダイアグラムは、MartinとEstrinの コンピュータの「データ・フロー・グラフ」に基づいた構造化設計のオリジナル開発者である、Larry Constantine（Larry Constantine）によって考案された。
それは、システムと外側のエンティティ間の相互作用を最初に示す、文脈レベル・データ・フロー・ダイアグラム（context-level Data flow diagram）を描く共通の実践である。DFDは、どのようにシステムが、分割された部分間のデータの流れに着目してより小さな部分に分割するかを示すため設計される。この文脈レベル・データ・フロー・ダイアグラムは、そこでモデル化されているシステムをより詳細に示すため「激増」される。

情報モデル

情報モデルは、データモデルの一つのタイプではないが、一つの代替モデルより多いかまたは少ない。ソフトウエア工学の分野でのデータモデルと情報モデルの両方は、特性、関連、およびそれらで実行され得る操作を含め、エンティティ・タイプの抽象であり、公式表現である。モデル内のエンティティ・タイプは、ネットワーク内の機器のような、実世界のオブジェクトの種類かもしれないし、またそれらは、勘定システム内で使われるエンティティのような、抽象化されたそれら自身かもしれない。典型的に、それらは、エンティティ・タイプ、特性、関連、および操作の閉じたセットによって記述される、制約されたドメインをモデル化するのに使われる。
Lee（1999）によれば 、情報モデルは、選ばれた概説のドメインのデータ意味論（data semantics）を規定する、概念、関連、制約、ルール、あるいは演算子の表現である。 それは、そのドメインの文脈のための共有性、安定性、および情報要求の組織化された構造を提供する。一般的用語情報モデルはさらに、施設、ビルディング、プロセス・プラントなどのような、個々のもののモデルのため使われる。このような場合、概念は、ファシリティ情報モデル（Facility Information Model）、ビルディング情報モデル（Building Information Model）、プラント情報モデルなどと特定される。そのような情報モデルは、施設についてのデータと文書を伴う施設のモデルの統合である。
情報モデルは、どのようにその記述がソフトウエアにおいて実際の実装にマップされたかの記述を制約することなく、問題ドメイン記述の形式主義を提供する。情報モデリングのマッピングには多くもものが存在する。そのようなマッピングは、それらが（UMLを使った）オブジェクトモデル（object model）、実体関連モデル、または XMLのスキーマ（XML schema）であるかどうかにかかわらず、データモデルと呼ばれる。

オブジェクト・モデル

コンピュータ科学におけるオブジェクト・モデル（object model）は、プログラムがその世界のある特定な部分を試しそして操作できるオブジェクトあるいはクラスの集合である。言い換えるなら、ある種のサービスまたはシステムへのオブジェクト指向インタフェースである。そのようなインタフェースは、表現されたサービスまたはシステムのオブジェクト・モデルであると言える。たとえば、Document Object Modelは、ページを調べて動的変化をプログラムするスクリプトを使う、ウェブブラウザにおけるページ表現の集合である。Microsoft Excelを他のプログラムからコントロールするための、Microsoft Excelオブジェクト・モデルが存在するし、また、ASCOM（AStronomy Common Object Model）Telescope Driver は、天体望遠鏡をコントロールするための1つのオブジェクト・モデルである。
コンピューティングにおける用語オブジェクト・モデルは、プログラミング言語技術、表記法、または 方法論を使うある特定なコンピュータにおけるオブジェクトの一般的特性とは別の2番目の意味をもつ。例は： Javaオブジェクト・モデル、 Component Object Model、あるいは、 オブジェクトモデル化技法（OMT）。このようなオブジェクト・モデルは通常、 クラス、メッセージ、継承、多態性、 情報隠蔽のような概念を使って定義される。プログラミング言語の形式意味論 のサブセットとして形式化されたオブジェクト・モデルに関する膨大な文献が存在する。

オブジェクト役割モデル

オブジェクト役割モデリング（ORM）は、概念的モデリング（conceptual modeling）のための1つの手法であり、情報やルールの分析のための1つのツールとして利用できる。
オブジェクト役割モデリングは、概念レベルでのシステム分析のための1つの事実指向の手法である。データベース・アプリケーションの品質は、その設計に重大に依存する。正しさ、明確さ、適合性、および生産性を確かにするのを助けるため、情報システムは、人々が容易に理解できる概念と言語を使って概念レベルで最初に規定されることがベストである。
概念的設計は、データ、プロセス、および振る舞い的観点を含むかもしれないし、その設計を実装のため使われた実際のDBMSは、（リレーショナル、階層型、ネットワーク型、オブジェクト指向等の）多くの論理的データモデルの1つに基づいたかもしれない。