sql >> データベース >  >> RDS >> Sqlserver

外部キーをNULLにしたり、重複させたりすることはできますか?

    簡単な答え:はい、NULLまたは重複する可能性があります。

    外部キーがnullである必要がある理由、一意である必要がある理由、または一意でない必要がある理由を説明したいと思います。最初に、外部キーは、そのフィールドの値が最初に別のテーブル(親テーブル)に存在する必要があることを単に覚えておいてください。定義上、FKはこれですべてです。定義上、Nullは値ではありません。 Nullは、値がまだわからないことを意味します。

    実際の例を挙げましょう。販売提案を保存するデータベースがあるとします。さらに、各プロポーザルには1人の営業担当者と1人のクライアントしか割り当てられていないとします。したがって、提案テーブルには2つの外部キーがあります。1つはクライアントIDを持ち、もう1つは営業担当者IDを持ちます。ただし、レコードの作成時に営業担当者が常に割り当てられるとは限らないため(まだ誰も自由に作業できないため)、クライアントIDは入力されますが、営業担当者IDはnullになる可能性があります。言い換えると、通常、データが入力された時点でその値がわからない場合でも、入力する必要のあるテーブル内の他の値はわかっている場合は、nullFKを持つ機能が必要です。 FKでヌルを許可するには、通常、FKを持つフィールドでヌルを許可するだけです。 null値は、FKであるという考えとは別のものです。

    一意であるかどうかは、テーブルが親テーブルに対して1対1または1対多の関係にあるかどうかに関係します。これで、1対1の関係にある場合、すべてのデータを1つのテーブルに含めることができますが、テーブルの幅が広すぎる場合、またはデータが別のトピックに関するものである場合(従業員-保険の例@tboneが提供)たとえば)、FKを使用して個別のテーブルが必要です。次に、このFKをPK(一意性を保証する)でも作成するか、一意の制約を設定します。

    ほとんどのFKは、1対多の関係のためのものであり、フィールドにさらに制約を追加することなく、FKから得られるものです。たとえば、注文テーブルと注文詳細テーブルがあります。顧客が一度に10個のアイテムを注文した場合、FKと同じorderIDを含む1つの注文と10の注文詳細レコードがあります。



    1. 変異テーブルの回避策としてのOracle

    2. PHP、MySQL、およびタイムゾーン

    3. Oracleで2つのテーブルを列ごとに比較する方法

    4. SQLデータ型:今日停止する必要がある5つの最悪の選択肢