UpdateもDeleteを使わないテーブル設計
今日読んでた本で出てきたのでメモメモ。
Insertで履歴を持つまではわかるけど、削除テーブルというのがイマイチピンと来ない。
毎回Joinしちゃうの?
ググってもあまり情報が出てこない。
で、ようやく見つけたのがこれ。
PostgreSQLでINSERTのみ使用してレコードの更新履歴を残すテーブル構造を実装する - mikage014の日記
- 通常のテーブルはINSERTのみ
- UPDATEしたい時は通常テーブルにレコードを追加し、削除テーブルにもINSERTする。
削除テーブルにINSERTするのは更新前のレコード - 削除は削除テーブルにINSERT
- Viewは通常テーブルに対して削除テーブルを消しこんだもの。
こうすれば確かにINSERTだけで回りそう。
JPA使うときとかこういう設計のほうがいいかも。