【データベース】外部キーの役割

序文

外部キーに関しては、通常、制約が関係します制約に関係なく、開始外部キーは通常のフィールド (列) であり、関連付けの役割を果たします。

まず制約を脇に置いて、外部キーが何をするのかを見てみましょう。


テーブル内のレコード間に 1 対 1 の関係を確立する

学生テーブル:

携帯電話テーブル:

学生用のフィールドの 1 つは携帯電話 ID であり、携帯電話には複数の属性があるため、携帯電話用に別のテーブルを作成します。

このように、その日のすべての携帯電話番号を確認したい場合は、この表を直接確認する方が効率的です。このときのPhoneIdがstudentテーブルの外部キーとなります。そしてそれは携帯電話テーブルの主キーです。

ここでの特徴の 1 つは、あるテーブルの外部キーが別のテーブルの主キーでなければならないことです。したがって、外部キーは通常単なる ID です。この ID は 2 つのテーブルを関連付けます。1 対 1 の場合、テーブルを結合するのは非常に簡単です。


1対多(多対1)の関係

この学校に 3 人の生徒と 2 人の教師がいると仮定すると、各生徒は 1 人の教師のみを選択できます。

学生テーブル:

講師リスト:

ご覧のとおり、生徒 12 は教師の Song を選択しています。これは、複数の生徒が 1 人の教師を選択することを意味し、これは 1 対 1 とほぼ同じです。つまり、外部キー自体を繰り返すことができるということです。

このようにして、別の利点が発見され、多対 1 の場合、1 つのテーブルを構築する場合と比較して、外部キーを介して 2 つのテーブルを構築する方が、より多くのスペースを節約できます。


多対多の関係

しかし、生徒が複数の教師を選択でき、教師が複数の生徒を担当できる場合はどうなるでしょうか?

これは多対多です。

学生テーブル:

講師リスト:

外部キーテーブル:

複数のペアの場合、学生テーブルと教師テーブルに外部キーがないことがわかります。外部キーは、外部キー テーブルと呼ばれる別の中間テーブルに存在します (もちろん、このテーブルにも主キーがありますが、重要な点に焦点を当てるためにここでは省略しています)。

この外部キー テーブルから、学生 1 には 2 人の教師 (2,3) がおり、学生 3 には 3 人の教師 (1,2,3) がいることが明確にわかります。

教師 2 には 2 人の生徒 (1、3) がおり、教師 3 には 2 人の生徒 (3、1) がいます。


制約

外部キーの役割をよりよく反映しているのは、 制約 です。制約とは、データベース操作を簡素化するために実際に定義されたルールです。つまり、制約を定義すると、特定の操作が自動的に完了します。これは、外部キーを定義することのもう 1 つの利点です。

制約は削除と更新に分かれています。削除の方が頻繁に使用されます。


制約の削除

学生テーブル:

携帯電話テーブル:

1 対 1 の例で言えば、外部キーを持つテーブルは通常サブテーブルと呼ばれますが、ここでは学生テーブルがサブテーブル、携帯電話テーブルが学生テーブルのメインテーブルとなります。削除制約とは、メインテーブルのレコードが削除されたときに、サブテーブルの対応するレコードをどのように処理するかを意味します。

方法 1 : メインテーブルのレコードが削除されると、サブテーブルの対応するレコードの外部キーが自動的に Null に設定されます。

方法 2: メインテーブルのレコードが削除されると、対応するサブテーブルの要素が自動的に削除されます。

方法 3: メイン テーブルのレコードを削除するときに、サブテーブルのレコードがメイン テーブルのレコードに関連付けられている場合、現時点ではメイン テーブルのレコードを削除できず、エラーが報告されます。


制約を更新する

この状況はめったに発生しません。つまり、携帯電話テーブルの PhoneId が変更されると、それに応じて学生テーブルの PhoneId も自動的に変更されます。

おすすめ

転載: blog.csdn.net/wangshiqi666/article/details/131492489