ランダムテーブルで、statusという名前の列があるとします。実際の値はenabledまたはdisabledのいずれかになります。
この列のデータ型がint/bool(1または0)であるか、ENUM
を使用して値がenabled
およびdisabled
である方が良いですか?長所と短所は何ですか?
有効なステータスが2つだけではなく、4つ、10、またはそれ以上あるとしましょう。必要な値の数が増えると、長所と短所がどちらに偏るか。
非常に奇妙ですが有益な記事を見つけました ENUMを使用してはいけない8つの理由.
記事がなくても知っている
さて、最初に ストレージ要件 があります。 (intの代わりに)tinyintを意味すると仮定します。
つまり、表面的にはすべて同じです。 ENUMはそれに関連付けられた文字列値のメタデータを一部取ります( 古いsrc )
ただし、値を追加していくと、ENUM
から有利になり始めます。特に、対応するためにテーブル構造を変更する必要があるため、テーブルがすでに使用されている後に値を追加する場合。
ENUM
を使用する利点は何ですか?値の意味の文字列表現。私に関する限り、これで終わりです。どれだけ価値があるかは、アプリケーションによって異なります。
ENUMはコードテーブルの短い形式の定義です。その主な利点は、結合してコードの説明を表示するために必要なコードを回避できることです。また、文字列形式で到着した場合の値の設定も簡単です。
私には次の欠点があります。