3

テーブルの外部キー関係についての私の理解は、外部キーは子テーブルの列であり、親テーブルの主キーであるということです。主キーは一意であり、null ではないことがわかっています。疑問があり、明確にする必要があります。親テーブルにデータがある場合、子にも関連データが必要ですか? 子テーブルは null (外部キー null) を持つことができます。外部キーが null になる規定があるのはなぜですか。

私はこれらすべてを正しく理解することができませんでした。

これらの概念をよりよく理解できるように助けてください。前もって感謝します。

4

2 に答える 2

4

外部キーが null になる規定があるのはなぜですか。

オプションの参加条件。子が単一の親を持っているか、持たない場合、これはテーブル間のこの関係をモデル化する 1 つの方法です。

値が の場合null、子には親がありません。

値が でない null場合、子には親があり、値は既存の親 ID でなければなりません。

そのような関係がありnull、外部キー列で許可しない場合、親なしで子を持つことはできません。

多対多のテーブルでこれをモデル化できます。これは、制約がなければ参加がオプションであることを意味しますが、1 対 1 の関係を確保するには、各外部キー列を一意にする必要があります (およびNOT NULL) . 個人的には、このオプションはやり過ぎだと思います (要件が変更された場合は変更できます)。

この 2 つの間の選択は、実用性の 1 つです (たとえば、モデルが 1 対 1 から 1 対多または多対多に変更される可能性はどれくらいか?)。多対多オプション。

于 2012-08-08T15:17:46.890 に答える
2

本質的に、null 可能な外部キーは、関係がオプションであることを意味します。

FK 制約がチェックされていると仮定すると、外部キーが null でない場合、その値は参照先のテーブルに存在する必要があります。

ただし、外部キーの値が null の場合は、関係が存在しないことを意味します。通常、この場合は LEFT/RIGHT OUTER JOIN を使用して、JOIN で null が除外されるのを防ぎます。

オプションの関係は、関係が状態に依存する場合に役立ちます。たとえば、顧客がクライアントとして承認された場合にのみ、顧客は支店に割り当てられます。それまでは、顧客BranchIdは NULL になります。

于 2012-08-08T15:19:26.713 に答える