2017-09-28 12 views
-1

テーブルに列を追加する必要があります。これは別の列の値の起点を表します。私。それは既知の起源の列挙された価値です。列挙型を示す列の最適なデータ型

値を表すのに最適なデータ型は何ですか?整数か文字列を使うべきですか?私は最高のデザインは両方の列を別のテーブルに保存することに気づいていますが、現時点では不可能です。

また、未知の原点をいくつかの固定値またはnullで表す方が良いでしょうか?

+0

関連性があります。https://stackoverflow.com/questions/203469/how-to-use-enums-in-oracle –

答えて

0

"私は最高のデザインが両方の列を別のテーブルに保存することに気付きましたが、現時点では不可能です。"

ルックアップテーブルを作成できない場合は、その意味を保存する必要があります。したがって、意味に合ったデータ型を選択してください。つまり、列挙型が「赤、琥珀、緑」の場合はvarchar2(5)になります。チェック制約を使用して、有効な入力に制限します。

整数を使用する場合は、別の場所に変換を格納する必要があります。データの意味はデータベースになければなりません。

明らかに、列を移入するすべてのUIに値リストを複製する必要があります。これはルックアップテーブルを作成しないために発生した技術的負債です。

"未知の原点をある固定値で表現する方が良いでしょうか?

最良の選択肢は、'unknown'などの明示的な値を持つことです。次の最良のオプションはnullです:nullsは面倒ですし、クエリを書くのが難しくなりますが、実際のデータのように機能し、誤解を招く結果につながる可能性があるため、魔法の値は悪化します。