データモデルは「シンプル・イズ・ベスト」ではない。データモデルを下手にシンプルにすると、他のモデル要素(業務モデルや機能モデル)が無駄に複雑化するからだ。システム仕様にはある種の「複雑さの保存則」があって、何かをシンプルにすると別の何かが複雑になる。 その中でもとくに「機能モデル」が複雑になると、コード量が増えてシステムの保守性が顕著に悪化する。ゆえに、データモデルをシンプルにしておく戦略は不適切である。コツとしては、データモデルを精緻に正規化したうえで、その後で必要に応じてシンプルな形に調整する手順を踏むとよい。そうすることで、より多くのシステム要件をデータ構造の形で回収できるからだ。 いちばんまずいのが、じっくり考えることをせずに最初からデータモデルをシンプルにまとめてしまおうとする姿勢だ。その典型例が「森羅万象テーブル(*1)」や「IDリクワイアド(*2)」と呼ばれるアンチパターンで
![「シンプル・イズ・ベスト」はややこしい - 設計者の発言](https://cdn-ak-scissors.b.st-hatena.com/image/square/c9b2c14e3ea18ceb8c9d3bbdd40cfff823fffc52/height=288;version=1;width=512/https%3A%2F%2Fwatanabek.cocolog-nifty.com%2F.shared-cocolog%2Fnifty_managed%2Fimages%2Fweb%2Fogp%2Fdefault.png)