リレーショナルデータベースの行を削除または無効にする必要がありますか?
履歴テーブル内のテーブルへの変更をウェアハウジングする戦略を採用することを考えると、MySQLで特定の行のステータスを実装するための次のオプションに直面します。
isActive
ブーラン_- 列挙
activeStatus
型 activeStatus
小さなActiveStatus
ルックアップテーブルを参照するINT- 別の
activeStatus
テーブルを参照していないINT
最初のアプローチは、他のタイプのアクティブなステータスをサポートするために将来さらにブール値が必要になる可能性があるため、私の意見ではかなり柔軟性がありません(それらが何になるかはわかりませんが、「段階的に廃止される」または「ユーザーのランダムなグループ」など)。
MySQL列挙型が悪いと言われているので、2番目のアプローチはおそらく飛ばないでしょう。
私は3番目のアプローチが好きですが、それが比較的小さな問題に対する手間のかかる解決策であるかどうか疑問に思っています。
4番目のアプローチでは、各ステータスINTが何を意味するのかを事前に知っておく必要があり、物事を行うための時代遅れの方法のように見えます。
正規の正解はありますか?私は別のアプローチを無視していますか?