ID、名前、ステータスの 3 つの列を持つ名前の小さなデータベースを作成しています。
「ステータス」は、待機中、承認済み、その他の 3 つのいずれかです。
私の質問は、「ステータス」を DB に保存するための最良/最も正しい方法は何ですか? varchar 文字列または 1、2、または 3 の整数として保存し、後で DB から読み取るときにそれを待機中/承認済み/その他に変換する必要がありますか? それが理にかなっていることを願っています。助けてくれてありがとう。
tinyint
そのステータスを参照するデータ型を使用するステータス テーブル (ディクショナリまたはルックアップ テーブルと呼ばれる) が必要です。外部キー制約を使用します。このようにして、リレーショナルとドメインの整合性を維持します。テーブル構造を変更せずにステータス値を追加/変更/削除できます。
状態 ============= ID値 1 待機中 2 承認済み 3 その他
ユーザー ==================== ID名status_id 1 ボビー 3
という別のテーブルを作成します。
2 つのフィールドを持つステータス id INT Primary Auto Increment name varchar(30)。
ユーザー テーブルにステータスを整数で追加し、JOIN で参照します。
users テーブルのステータスを status_id に変更することもできます。
IMOこれが最も適切な方法です
一般的に言えば、次の場合を除き、これらのアイテムをテキストとして保存します。
別のルックアップ テーブルで数値を使用します。
整数フィールドは varchar フィールドよりも少ないメモリ スペースを使用するため、'status' オプションを数値として保存すると、メモリ使用量がわずかに削減されます。
「ステータス」を整数で保存し、必要に応じて外部で対応する値に変換することをお勧めします。
それらはそのままの形で保存する必要があると思います: enum !
例:
status ENUM('waiting', 'approved', 'other') DEFAULT 'other'