ITエンジニアの成長ブログ

ITエンジニアとして行う勉強の発信&日々の生活で体験した楽しいことをゆるく発信

データベースのテーブルに定義する更新ログ列について

今回は、データベースのテーブルに定義する更新ログ列について簡単にまとめたいと思います。

データベースのテーブルに定義する更新ログ列とは?

この記事において更新ログ列とは、テーブルに定義する以下のようなカラムのことを示しています。

  • 更新日時
  • 更新者
  • 作成日時
  • 作成者

レコードの作成時や更新時にこれらのカラムを更新することで、データがいつ更新されたレコードなのか、誰が更新したのかをログとして記録することができます。

これらの情報がないと、誰がいつ該当のデータを更新したのかが追跡できないので、調査をする場合にかなり不便になったりします。

個人的な設計方針

更新ログ列として、個人的な設計方針を示したいと思います。

私は、以下のカラムをすべてのテーブルに定義します。それぞれ、個別に見ていきます。

  • 更新日時
  • 更新者
  • 作成日時
  • 作成者
  • 更新PGM
  • 作成PGM
更新日時

更新日時は、レコードを更新するときに必ずセットで更新するカラムです。更新タイミングのシステム日時を登録します。レコードの新規登録時も登録するようにします。ただし、これはデフォルト制約でシステム日時を登録するようにしておけば良いですね。

更新者

更新者は、該当のデータを更新したユーザーの名前を登録します。ユーザーには、一般的にIDが付与されるため、本項目にそのIDかそれとも、名前そのものを登録するか悩むところですが、個人的には名前を登録する方が良いかなと思っています。なぜならば、IDだといちいちユーザーIDから名前を確認する作業が必要になるからです(ただし名前は変わることもあるので、それらを加味する必要はありますが、かなりイレギュラーなので名前登録派です)。

作成日時

作成日時は、レコードを登録するときにシステム日時を設定します。その後は一度も更新しません。あくまでもそのレコードがいつ登録されたのかのみを保持しておく項目になります。

作成者

作成者は、該当のデータを作成したユーザーの名前を登録します。その後は一度も更新しません。設定する値は、「更新者」と同様です。

更新PGM

更新PGMは、更新したプログラムの名前を設定します。例えば、受注入力画面で登録した受注データの場合は、更新PGMに「受注入力」といった感じで設定します。

作成PGM

作成PGMは、作成したプログラムの名前を設定します。登録後は一度も更新しません。設定する値は、「更新PGM」と同様です。


基本的には、上記のカラムを私は定義するようにしています。

これはあくまでも私の考えなので設計する人によって色々とあると思います。例えば、これらのカラムを全く定義しない人もいるし、作成日時や作成者は作らず、更新日時や更新者のみを登録する人もいます。

また、重要と思われるテーブルのみ設定しておくというのも考え方としてはあります。

本当に設計者の考えが色々と現れるところだなと思います。色々なシステムの設計を見てみたいものです。

おわりに

いかがでしたでしょうか。個人的な経験から、テーブルに定義する更新ログに何を用意しておくかを確認しました。

対応するシステムによっては、ここまで厳密にする必要もないのかもしれませんので、上記の考え方はあくまで一例です。そのシステムごとに必要に応じて考える必要があると思います。

今回はこの辺で。最後までお読みいただきありがとうございました。