2017-05-24 6 views
1

花が入ったテーブルがあるとします。そこには、1つの列が「色」になります。私は絶えず花に関するデータが入ったフィードファイルを受け取っています(各種が私のデータベースに対してチェックしてその行を更新すると言うことができます)。引数の酒はそれを言うことができます)。今私はそのカラーフィールドの値が有効な色であり、例えば "asdasd"ではないことを確認する必要があります。私の質問はどうやって有効な色の配列私がチェックしているものとテーブルにそれらを保存する方法(これらの名前を数字に変換して保存していますか?)色はRGB値で表現でき、それは簡単ですが、文字列としてフィードから来ると言えます。有効なSQL値はどのようにマップする必要がありますか?

SQL用のこれらのタイプの「有効性チェックマップ」は、独自のテーブルとして保存するのか、あるいはスクリプトの定数として保存する必要がありますか?私はそこに正しいanwserはないと知っていますが、これがどのように処理されるかについては、近づいています。

+0

色を表すデータ列に外部キー制約を使用したいと思うかもしれません。これは厳密には有効/有効オプションの1つです。 – laylarenee

+0

渡されるデータが有効であることを確認する方法は...アプリケーション層が検証タスクを実行することをお勧めします。 – laylarenee

答えて

1

SQLのための「有効性チェックマップ」のこれらの種類ははい

自分のテーブルとして格納する必要があります。

または多分スクリプトの定数として?

私はさて、この1のためにかなり強力なベストプラクティスがあります。この

のための1つの右の答えはありません知っています。 1つのテーブルに、各色のIDを持つ「有効な」色を保存します。その後、花のテーブルの一部として色のIDを格納します。例えば

Colors table: 
ID Name 
---- ------- 
1  Red 
2  Blue 
3  Yellow 
... 

Flowers table: 
ID Type  ColorID 
--- ------ ------- 
1  Orchid 2  (Blue Orchid) 
2  Rose  1  (Red Rose) 

次のステップでは、同様の種類を「非正規化」することですが、私はあまりそれをovercomplicateたくありませんでした。

+0

応答ありがとう!このようなより多くのフィールドがあり、クエリがますます多くのテーブルを使用し始める場合は、スケーラビリティがありますか?定数として、テーブルに入る前に検証され、テーブル結合は必要ありません。何百万もの行があり、クエリは50,000行を返すことができます – Hedondrive

関連する問題