RDBMSにおけるcreated_at, updated_atの使用用途と必要性について調べる

なぜ調べるのか?

  • created_atupdated_atは理由もなく、あって当然のものだと思い込んでいた
  • アプリケーション側で作成したエンティティにcreated_at, updated_atを詰め込む不自然さを感じていた(DBのスキーマに引っ張られすぎてる感)
type Account struct {
   Name      string
   Email     string
   CreatedAt time.Time. # これドメインじゃなくね?
   UpdatedAt time.Time  # これドメインじゃなくね?
}

created_at, updated_atの立ち位置

  • レコードの作成、更新を記録するで調査目的で使用される
  • 各ストレージが自動挿入してくれているのでストレージ側のスコープであり、アプリケーション側のスコープではない
  • レコードの作成が頻繁に発生しないマスタデータのような場合はなくても良い

今後

  • これまでエンティティに詰め込んでいた違和感のあるcreated_atは消せそう。
  • エンティティに日付を持たせたい場合は別カラムを意味のある名前で作成する。
  • created_at, updated_atは障害発生時の調査ログとして作成した方が良い

参考