データモデリングの手法は大まかに下記の2つに分類できます。
ミュータブルデータモデルとは、SQLのupdateとdeleteを使う手法のことです。
ミュータブルデータモデルの場合、このようなテーブルを作ります。
社員テーブル
| 社員番号(PK) | 氏名 | 生年月日 | 入社日 | 
|---|---|---|---|
| 001 | 佐藤 | 1990/1/1 | 2015/4/1 | 
| 002 | 田中 | 1995/1/1 | 2016/4/1 | 
| 003 | 中村 | 2000/1/1 | 2017/4/1 | 
値が変わる場合はupdateを使ってデータの上書きを行い、会社を退職した場合はdeleteをするか、退職フラグのカラムを追加してフラグを立てます。
このように、データが変更されることを前提としたデータモデリング手法です。
ミュータブルデータモデルの弱点は、昔のデータが参照できなくなってしまうことです。
名字が2020/1/1に変更された場合、それ以降は変更前のデータを参照することができなくなります。
他にも、updateやdeleteは強いロックを獲得するため待ち時間が長くなったり、デッドロックが発生する可能性があります。
これらの問題を解決するために考案されたのがイミュータブルデータモデルです。
イミュータブルデータモデルとは、SQLのupdateとdeleteを利用しない手法のことです。
イミュータブルデータモデルの場合、このようなテーブルを作ります。
社員テーブル
| 社員番号(PK) | 
|---|
| 001 | 
| 002 | 
| 003 | 
社員氏名テーブル