どちらの状況が良いですか?文字列または列挙型
列挙又はチャー/ varchar型
Iは:上向き基本的問題の列がキーであるキー/値ペアのテーブルであるものに300の可能な値の仮定
誰かが列挙型の列を扱っていて、その可能性のある多くの値と落とし穴の可能性があるのかどうか疑問に思っています。
EDIT:
キーが事前に定義されています。
項目表:
ID、名前、...
表属性:あなたが可能な300を話している場合
IDは、キー、値
どちらの状況が良いですか?文字列または列挙型
列挙又はチャー/ varchar型
Iは:上向き基本的問題の列がキーであるキー/値ペアのテーブルであるものに300の可能な値の仮定
誰かが列挙型の列を扱っていて、その可能性のある多くの値と落とし穴の可能性があるのかどうか疑問に思っています。
EDIT:
キーが事前に定義されています。
項目表:
ID、名前、...
表属性:あなたが可能な300を話している場合
IDは、キー、値
をITEM_ID値は、別のID /値ルックアップテーブルを使用しています。
特に、あなたの質問からこの文与えられた:なぜ、ちょうど実際に作らない、本質的に問題の列がキー
あるキー/値ペアのテーブルであるものに
をそれはキー/値のペアのテーブルですか?
私はちょうど私の質問を編集しました。 – Tom
正直なところ、私の答えが変わるとは思わない。私はまだあなたの属性テーブルに "キー"を持っていますが、FKは300個の可能な "キー"値を持つ3番目のテーブルです。 –
おそらく私は疑問を誤解していましたが、通常、私はそれを正規化して別のテーブルに入れて、外来キーを使用する必要があると私に伝える300+タイプのカラムを持っています。
直交値のみがある場合は列挙型を選択することをお勧めします。たとえば、名前付きの色は大きな列挙型の作成を正当化する例です。問題は、あなたの300+の値が直交している場合です - それをより小さな直交セットに分解できますか?たとえば、キューブの8つのコーナーは、8つの値を持つ列挙型で記述できます。
FrontLeftBottom
FrontRightBottom
FrontRightTop
FrontLeftTop
RearLeftBottom
[...]
ただし、6つの値に分解して、ビットフラグ列挙型を使用して組み合わせることもできます。
Front
Rear
Left
Right
Top
Bottom
値空間が固定されていない場合 - 文字列または新しいdeticatedタイプが進むべき道である - それは、新しい値が追加されることが十分に可能です。
enumsは、このシナリオでは悪い考えであり、即座のコードのにおいは、メンテナンスの悪夢 – BlackTigerX