DBのtable設計の大まかな流れ
#WIP
具体的にどういう手順でtable設計していくか
この時点で、domain modelingは終わっている状態
ER図の生成と、DBの変更を同時にできるようなツールを使いたい
DBeaverとか?
これぐらいなら他のsql clientでもできるのでは?
mermaidで書いて、DBに移すのバカバカしいmrsekut.icon
ざっと作る
大きいまとまりでEntityを抽出する
ヒト/モノ/コトに分ける
この際に、細部を見ない
が、アイディア自体はメモっておく
正規化できているか確認して修正
tableの正規化
immutable data modelになっているか確認して修正
アンチパターンを踏んでいないか確認して修正
↑論理設計
実際に定義する
物理設計
制約を意識する
NOT NULL制約は必ず付ける
全tableの全columnにnot null制約がつくのが理想的
UNIQUE制約
ちゃんと正規化できていると↑の2つはつけられるはず
外部キー制約
DBのtableやcolumnの命名
tableに対し自然言語のドキュメントを書くべき
table設計をできるだけ後回しにしたいmrsekut.icon
決定を遅延させ、選択肢を残しておく
clientの実装を始めたあとから考えても良いのでは?という気もする
domain modelの方が比較的変更も容易だし、そこで知識も増えそう
特に、コト
ざっくりぐらいはやっていても良いかもだが
できるだけ、mockで時間を稼ぎたい
ただ、SQLを書いて初めていびつさに気付く、というケースもありそうではある
実装期間のどれぐらいのタイミングで実物を定義するか問題mrsekut.icon
例えば半年間かいはつできるよって、時に、1ヶ月目から作っちゃうのか、3ヶ月過ぎたあたりで作るのか