2017-10-31 14 views
-3

SQLの助けを借りて、プライマリがNULLを許可せず、IDENTITYであっても、外部キーをNULLにすることはできますか?ありがとう。外部キーをNULLにすることができます

+4

はい、可能です –

+1

どのdbmsを使用していますか? – jarlh

+2

はい、FK列はNULL値を許可できます。これはC#と何が関係していますか?あなたは何を試しましたか、何が動いていませんか? – David

答えて

1

もちろん、外部キーはNULL可能です。これはお勧めであり、多くの場合に適切なことです。この場合、値NULLは、一致する関係がないことを意味します。

たとえば、マネージャーと外部キーの関係として従業員の階層がある場合、上部の人にはマネージャーがなく、これはNULLという値で表すことができます。

あなたのユーザーが誰であるかによって、注意が必要な場合があります。たとえば、顧客にはCountryIdがあるとしますが、一部の顧客にはその国を知らないとします。

select . . . 
from Customers cu join 
    Countries co 
    on cu.CountryId = co.CountryId; 

これは不注意なし顧客と顧客をフィルタリングします:データベースのユーザーがCountryIdが有効であるとのようなクエリを記述するために期待するかもしれません。 left joinが不要になるように、「デフォルト」または「不明」の国を追加し、外部キーをNULLにする必要があります。

0

私はあなたの定義が混ざっていると思います。

  • 主キーは、null値ではない一意の列(または列のセット)である必要があります。

  • アイデンティティは、データベースの列に自動的に値を発行させる列のプロパティです。 ID列は更新することはできませんが、ユーザー定義の値を挿入することができます。そのため、一意ではない値を持つことができます。

  • 外部キーは、2つのテーブル間の関係です。この関係は、2つのテーブルを1つの列(または複数の列)でリンクします。外部キーは、一対一の関係または一対多の関係のいずれかです。列が外部キーの多くの側にある場合、NULLにすることができます。

関連する問題