オブジェクトの設計とテーブルの設計

オブジェクトとテーブルは似てくる

オブジェクトとテーブルはほぼ一対一に対応することがあるが、設計のアプローチや設計を変更する動機が本質的に異なる。

オブジェクトはプログラムのロジックを重複させないための仕組みで、データとロジックの組み合わせに注目しながら部分から段階的により大きなプログラムに組み立てていく。

テーブルは導出結果や加工結果ではない元データの記録と整理の手段。データの整合性を確保するために、関連するデータを全体的に洗い出して関係を明確に設計するトップダウンのアプローチをとる。

特性 オブジェクト テーブル
目的 データとロジック特にロジックの整理 データの整理
関心事 導出や加工のロジック 加工や導出のもとになるデータ
アプローチ 部分から全体 全体から部分
設計変更のリズム 頻繁 ゆるやか

オブジェクトとテーブルを自動的にマッピングするアプローチでは、どちらかの設計のアプローチやリズムに大きく制約される。たとえばテーブル設計を優先してオブジェクトをそれに合わせるアプローチではロジックの整理に失敗するし、オブジェクト設計にテーブル設計を合わせるアプローチではデータの正しい管理に失敗する。

オブジェクトはオブジェクトらしく、テーブルはテーブルらしく

オブジェクトとテーブルの間のマッピングはその両方の設計の進度に合わせながら明示的に定義する。そうすることで、お互いの設計変更の影響をマッピング定義に局所化できる。