2012-03-08 10 views
1

ENUMまたは別のテーブルを使用して可能な値(たとえばhtml select)からリストを取得する方が良いですか?ENUMは本当に悪いですか(SHOW COLUMNSかSELECTか)?

より良い方法は何ですか?

私がSHOW COLUMNSを使用する場合、列挙型は解析する必要があります。

OR

私は可能な値を格納し、SELECTを使用するために、別のテーブルを使用* ???

+0

申し訳ありませんが、何?あなたが求めていることは本当にはっきりしません。 – deceze

+0

ここをクリックしてください:http://stackoverflow.com/questions/9239137/which-is-a-better-design-for-database-status-values/9239163#9239163 –

答えて

4

enumを使用すると、実際にデータベーステーブルのリストがハードコーディングされます。だからあなたが何かを追加する必要がある場合は、テーブルを変更して変更する必要があります。一方、foreighnキーを使用して接続しているテーブルを使用する場合は、スキーマを変更することなく、フロントエンドアプリケーションから簡単にキーワード(選択肢)を追加できます。

選択肢が変更されない場合はenumを使用し、時間の経過とともにリストが変更されている場合は外部キー関係の表を使用することをお勧めします。選択はあなたのものです。

これがあなたに役立つことを願っています。

1

答えは 'それに依存する'です。

これらの値のリストが決して(まれに)変更されない、または頻繁に変更されることが予想されるかどうかによって異なります。

最初のケースでは、値リストをデータモデル自体の一部として定義するので、ENUMを作成するのが理にかなっています。これは、明示的にユーザーにどの値が許可されているかを伝えます。

後者のケースでは、データモデルではなくデータを扱うため、これらの値に対して別のテーブルを使用する方がより合理的で実用的です。

0

実際には、保存する予定のオプションの数によって異なります。 3つしかない場合は、UNUMを使用することをお勧めします。あなたが将来もっと多くのオプションを追加しようとしている場合は、2番目のテーブルも良いでしょう。

0

オプションが限られており(「保留」、「アクティブ」、「アクティブでない」)直接

で使用列挙型を修正する場合はそれ以外の場合は、オプションや店舗対応する整数IDの子テーブルを作成する方がよいでしょう(プライマリ子テーブルのキー)を親テーブルに格納します。

は私の答えを参照してください。 which is a better design for database status values?

関連する問題