せてぃーずノート

Javaのイベント参加レポートとかを書いたりします。

UpdateもDeleteを使わないテーブル設計

今日読んでた本で出てきたのでメモメモ。
Insertで履歴を持つまではわかるけど、削除テーブルというのがイマイチピンと来ない。
毎回Joinしちゃうの?
ググってもあまり情報が出てこない。

で、ようやく見つけたのがこれ。

PostgreSQLでINSERTのみ使用してレコードの更新履歴を残すテーブル構造を実装する - mikage014の日記

  • 通常のテーブルはINSERTのみ
  • UPDATEしたい時は通常テーブルにレコードを追加し、削除テーブルにもINSERTする。
    削除テーブルにINSERTするのは更新前のレコード
  • 削除は削除テーブルにINSERT
  • Viewは通常テーブルに対して削除テーブルを消しこんだもの。

こうすれば確かにINSERTだけで回りそう。
JPA使うときとかこういう設計のほうがいいかも。