/note/tech

テーブル設計 データモデリングのエッセンス(1)

テーブルの役割を一つにする

クラス設計と同じで、テーブルの役割は単純にすべきである。

関心のある情報のグループごとに別のテーブルに分ける。

例えば、商品にはさまざな属性情報がある。

・仕様(色、サイズ、機能など)

・価格や割引ルール

・仕入れルート

・原価

・在庫数

・在庫場所

・販売開始/販売停止の状態や予定日

など。

「商品」という一つの「なんでもテーブル」に情報を詰め込んで、アプリケーションプログラムのほうで、さまざまな検索条件を使い分けるのは、典型的なアンチパターン。

それぞれの情報ごとに別テーブルを用意して、ひとつのテーブルは、一つの関心だけを管理する設計が基本。

テーブルを細かく分割することを嫌う人が多いの本当につらい。