ドメインモデリングとデータモデリングの違い

「ドメインモデリングとデータモデリングはどちらが優れているか」という議論を見かけることがあります。

しかし、これらは別物であり、比べられるものではありません。

まず、ドメインモデリングとデータモデリングは目的が違います。ドメインモデリングはプログラムの変更容易性を高めることを主な目的としていますが、データモデリングはデータの永続化を主な目的としています。

そのため、どちらが優れている…という話にはなりません。 むしろ、お互いに補強し合う関係にあります。

ドメインモデリングを行っている内に新たなデータモデルを発見したり、データモデリングを行っている内に新たなドメインモデルを発見することもあります。

DOA(Data Oriented Approach、データ指向アプローチ)と呼ばれる考え方ではデータモデルを使ってドメインロジックを全て明らかにしようとすることがありますが、これは不可能です。 何故なら、RDBの構造では全てを表現するのは難しいからです。

ドメインロジックはドメインモデルで扱うことでよりシンプルで変更容易性の高い実装をすることができるようになります。

データモデルではドメインロジックが行っている複雑な制約を使わない代わりに、全てのデータが保存されることと、簡単な制約(一意制約、NOT NULL制約、外部キー制約等)を守ることを保証しなければなりません。

これがドメインモデリングとデータモデリングの違いです。

ドメインモデリングとデータモデリングの共通点

ドメインモデリングとデータモデリングは目的が違うものの、共通して利用できる原則があります。

依存性の逆転、高凝縮低結合など、プログラミングを行う上で重要になる原則はデータモデリングでもできる限り適用します。