今までDB設計を考える上でマスターテーブルしか必要のない設計ばかりしていたが、
今回初めてトランザクションテーブルが必要になる設計をすることになったのでまとめてみた。
DB設計ではテーブルを考えるときにマスター用のテーブルとトランザクション用のテーブルに分けて考えるとスムーズに設計できる。
マスター
頻繁に更新しない基本的なデータを扱う。
使い分けて考える上での特徴のひとつ:updated_atカラムが必要
例:ユーザーテーブル、商品テーブル
ユーザーテーブル
ユーザーID | 名前 | メールアドレス |
---|---|---|
1 | 山田太郎 | taro.y@hogehoge.jp |
2 | 佐藤理恵 | sato_rie@hogehoge.jp |
商品テーブル
商品ID | 商品名 | 単価 |
---|---|---|
1 | hoge農家の卵 | 198 |
2 | おいしい牛乳 | 158 |
トランザクション
履歴(実行された事実)を残しておく。
使い分けて考える上での特徴のひとつ:updated_atカラムが必要ない
例:注文履歴テーブル
注文履歴テーブル
注文ID | ユーザーID | 商品ID | 購入日 |
---|---|---|---|
1 | 3 | 2 | 2022/3/2 |
2 | 8 | 4 | 2022/1/23 |