私のテーブルに列があります。オプションですので、空白のままにすることができます。ただし、その列に値が指定されている場合は、一意でなければなりません。二つの質問:データベース設計:オプションですが、値が指定されている場合は一意である必要があります
- どのように私は私のモデルに潜在的な問題があります
- (私は道では、MySQL Workbenchを使用しています)私のデータベース設計でこれを実装するのですか?
私のテーブルに列があります。オプションですので、空白のままにすることができます。ただし、その列に値が指定されている場合は、一意でなければなりません。二つの質問:データベース設計:オプションですが、値が指定されている場合は一意である必要があります
カラムにはUNIQUE
のインデックスを使用してください。参照:
http://dev.mysql.com/doc/refman/5.1/en/create-index.html
をUNIQUEインデックスは、インデックス内のすべての値は 明確でなければいけないという ような制約を作成します。 既存の行と一致するキー値 を持つ新しい行を追加しようとすると、エラーが発生します。すべての エンジンでは、UNIQUEインデックスでは、 にNULLを含むことができる列のNULL値が に複数許可されます。 UNIQUE 索引内の列に接頭辞値 を指定する場合は、接頭辞内で列の値が一意で である必要があります。
ヌル(空白ではない)で一意である可能性があります。デフォルトでは、値はnullでもかまいません。私には問題ありません。
テーブルにUNIQUEインデックスを作成できます。 MySQLワークベンチでは、テーブルの作成/編集時にUQチェックボックスが使用されます。
ステップ1 ALTER
テーブルMODIFY
フィールドNULL
が許可されます。
ALTER TABLE my_table MODIFY my_field VARCHAR(100) NULL DEFAULT NULL;
ステップ2、フィールドにUNIQUE
インデックスを追加します。それは一見やや直感的であることをNULL値可能フィールドにUNIQUE
インデックスを置くと私の唯一のためらいを -
ALTER TABLE my_table ADD UNIQUE INDEX U_my_field (my_field);
これは、使用する罰金です。
1)列を新しい表に移動し、一意にし、NULLを入力できないようにします。この新しいテーブルには、値がある場合にのみ行が作成できるようになりました。
2)はい。キーに対するキーと依存関係は、リレーショナルデータベース設計におけるデータの整合性の基礎となります。属性が一意であると想定されている場合は、属性をキーとして実装する必要があります。 null可能な "キー"はキーではなく、とにかく新しいテーブルに移動でき、情報を失うことなくヌルにすることができないため、決して必要ではありません。
回答者(2)。いいえ、これはかなり正常です。 –