- URL: ユーザ情報を保存する時のテーブル設計 - そーだいなるらくがき帳
- 著者: 曽根 壮大 (@soudai1025)
- 公開日: 2018-05-01
いつ読むか?
- 「ユーザー」に関するテーブル (データモデル) を設計するとき
読書メモ
設計の3原則
- 状態ごとにテーブル分割 - 状態カラムを持たず
user_active/user_leaveのように分ける - 親テーブルは変更最小化 -
usersは INSERT のみで UPDATE/DELETE を避けデッドロック回避 - 詳細は子テーブルに -
user_detailに付属情報を分離し競合を減らす
テーブル構成例
users: 基本レコード(変更しない)user_detail: 住所など低頻度変更の情報user_active/user_leave: 状態別テーブルuser_token/user_auth_log: 認証・ログ
JSONB活用
PostgreSQL の JSONB 型で properties(必須)と option(任意)を柔軟に格納
留意点
トレードオフの設計。状態排他制御の複雑さ、履歴管理の困難さ、大規模データでのパフォーマンス低下などの課題あり。