2009-06-16 16 views
2

どちらの状況が良いですか?文字列または列挙型

列挙又はチャー/ varchar型

Iは:上向き基本的問題の列がキーであるキー/値ペアのテーブルであるものに300の可能な値の仮定

誰かが列挙型の列を扱っていて、その可能性のある多くの値と落とし穴の可能性があるのか​​どうか疑問に思っています。

EDIT:

キーが事前に定義されています。

項目表:

ID、名前、...

表属性:あなたが可能な300を話している場合

IDは、キー、値

+0

enumsは、このシナリオでは悪い考えであり、即座のコードのにおいは、メンテナンスの悪夢 – BlackTigerX

答えて

3

をITEM_ID値は、別のID /値ルックアップテーブルを使用しています。

特に、あなたの質問からこの文与えられた:なぜ、ちょうど実際に作らない、本質的に問題の列がキー

あるキー/値ペアのテーブルであるものに

をそれはキー/値のペアのテーブルですか?

+0

私はちょうど私の質問を編集しました。 – Tom

+1

正直なところ、私の答えが変わるとは思わない。私はまだあなたの属性テーブルに "キー"を持っていますが、FKは300個の可能な "キー"値を持つ3番目のテーブルです。 –

2

おそらく私は疑問を誤解していましたが、通常、私はそれを正規化して別のテーブルに入れて、外来キーを使用する必要があると私に伝える300+タイプのカラムを持っています。

1

直交値のみがある場合は列挙型を選択することをお勧めします。たとえば、名前付きの色は大きな列挙型の作成を正当化する例です。問題は、あなたの300+の値が直交している場合です - それをより小さな直交セットに分解できますか?たとえば、キュ​​ーブの8つのコーナーは、8つの値を持つ列挙型で記述できます。

FrontLeftBottom 
FrontRightBottom 
FrontRightTop 
FrontLeftTop 
RearLeftBottom 
[...] 

ただし、6つの値に分解して、ビットフラグ列挙型を使用して組み合わせることもできます。

Front 
Rear 
Left 
Right 
Top 
Bottom 

値空間が固定されていない場合 - 文字列または新しいdeticatedタイプが進むべき道である - それは、新しい値が追加されることが十分に可能です。