設計チェックリスト

レビュー時に見落としやすい項目を、正規化・整合性・アンチパターン・運用の観点で確認します。

正規化観点

制約観点

設計アンチパターン

アンチパターン1: 月別を横持ち12カラムで持つ

よくある例として、売上を 1 レコードに 1月売上12月売上 で保持する設計があります。

売上集計(
  商品ID,
  1月売上, 2月売上, 3月売上, ... , 12月売上
)

この設計は一見わかりやすいですが、次の問題が起きます。

改善例(縦持ち):

月次売上(
  商品ID,
  対象年月,
  売上金額,
  PRIMARY KEY (商品ID, 対象年月)
)

縦持ちなら年が増えてもレコード追加だけで済み、集計SQLも単純になります。

アンチパターン2: カンマ区切りで複数値を1列に詰める

タグ='A,B,C' のような保存は検索・更新・整合性の面で不利です。明細テーブルへ分解します。

アンチパターン3: 名称マスタを持たず文字列重複

部門名や商品名を各テーブルに重複保存すると、名称変更時に更新漏れが発生します。ID参照 + マスタ化を基本にします。

「今は楽そう」に見える横持ち・詰め込み設計は、 将来の変更で大きな負債になります。可変軸(年月、タグ、属性)は列ではなく行で表現するのが原則です。

運用観点

レビューで「なぜこの分割なのか」を説明できる設計は、引き継ぎや将来改修で強いです。