やる気がストロングZERO

やる気のストロングスタイル

行われている処理がイメージできるようなテーブル構造を設計したい

見れば行われている処理がイメージできるようなテーブル構造を設計するのが良いと思っている。

このテーブル構造で何が読み取れるか?

user

id state
1 active
2 active
3 disactive
... ...

userはステータスを持っているのはわかる。
データを見るとほとんどactiveでたまにdisactiveがあるように見える。
active, disactiveだけなのかどうかはわからない。 どんなふうに遷移するのかもわからない。

だから、こんなテーブル構造がいいと思っている

user

id user_state_id
1 2
2 2
3 3
... ...

user_state

id name
1 preparation
2 active
3 disactive

user_state_history

id user_id user_state_id until_at
1 1 1 2021-03-15 12:00:00
2 2 1 2021-03-15 13:00:00
3 3 1 2021-03-15 13:00:00
3 3 2 2021-03-15 14:00:00
... ... ... ...

先程のテーブルとは違って、userはpreparation, active, disactiveの状態があることがわかる。他にないこともわかる。
stateはpreparation => active => disactive と遷移しているのも分かる。過去どういうstateを辿ったのかもわかる。

コードを見なくてもなんとなくイメージできる。