DBのテーブル設計を行う際の、共通カラムについて考えてみた。
共通カラムって?
例えばこんな↓のカラムを「(一定の条件を満たした)テーブルすべて」が持っていること。
- 登録日時
- 登録ユーザ
- 更新日時
- 更新ユーザ
共通カラムの目的って?
個人的に、運用管理上必要なものだという認識。
アプリの機能や要件とは切り離されて考えるべきもの。
ソートや履歴管理機能に使いそうな気もするけど、それは「必要だから存在するカラム」のであって、「共通カラム」ではない。
例えば障害の原因調査や解析などにつかう、ログ的な役割のものだと思う。
更新系はいらなくね?
上記の目的を前提にした場合に、更新XX系は不要ではないかと思った。
とても中途半端だからである。
- 「最終」更新しか保持していない
- 「どんな変更か」は共通カラムだけでは確認できない
じゃあ、どうするか
登録XX系の共通カラムはあっていいと思う。
「これっていつのデータ?」がパッと分かるのは、現実的にとても有用な情報だと思うので。
更新XX系の共通カラムは持たせないで、履歴管理のテーブルを別個用意するべきじゃなかろうか。