ユーザーテーブルはどう設計されるべきか?
要件
アプリケーションのユーザーは追加されるだけではなく、退会などで削除されることがある。
退会したユーザーであっても再入会などで再び戻ってくることはあり得る。
退会したユーザーの個人情報は基本的には削除されている必要がある。(個人情報保護法関係)
一方、ユーザーとのやり取りの記録は一定期間は残しておかなければならない。(監査、問い合わせ対応、売買記録など)
問題
いきなりユーザーテーブルからユーザー(およびID)を削除してしまうと以下の問題が発生する。
過去のトランザクションの記録とのつなぎがなくなってしまう。
掲示板などの文書
様々な取引記録
有効フラグ方式(あるいは削除フラグ方式)だと、有効なユーザーと無効なユーザーの振り分けのための余計な判定が必要となる。
対策
ビューで緩和する。
フラグではなく状態として管理する。