2016-06-12 3 views
0

標準SQLでセットを使用する必要があります。私は何かのセットからの選択のような列のタイプを記述する必要があります(Example Color=[Red, Green, Blue])。チェック制約を使用するか、ツリーレコード(赤、緑、青)のルックアップテーブルを作成できます。各方法のプラスとマイナスは何ですか?私はこのソリューションを普遍的なものにして、可能な限り多くのSQLサーバーを使用する必要があります。制約をチェックすると適切なルックアップテーブル

答えて

2

ユニバーサルにする必要がある場合は、ルックアップテーブルを使用します。

チェック制約はMySQLで完全に実装されていません(構文は受け入れられますが、チェックされません)。

ルックアップテーブルのもう1つの利点は、関連するすべてのチェック制約を動的に書き換えることなく、新しいオプションを追加する管理機能を提供することが容易になることです。

チェック制約がルックアップ・テーブルに対して持つ利点は、オプティマイザが潜在的に矛盾の検出を使用できることです。 SQL Serverでは、WHERE Colour = 'Purple'のクエリでは、SQL Serverがコンパイル時にチェック制約によって回避できないことがあるため、テーブルを読み取ることさえできません。

+0

"*完全に実装されていない*"は、控えめな記述です。 MySQLは単に実装されていません –

関連する問題