データモデリングの手法は大まかに下記の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 |
社員氏名テーブル