データモデリングの手法は大まかに下記の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

社員氏名テーブル