外部キーは 2 つのテーブルをリンクしたり、2 つのテーブル間に接続を作成したりするために使用されるため、外部キーはスーパー キー、候補キー、主キーとは異なります。
このセクションでは、外部キーとその使用法について説明し、外部キーの仕組みと使用法を理解するのに役立ついくつかの例を見ていきます。また、データベース上での実際の実装、つまりテーブル上の外部キーの作成と削除も見ていきます。
外部キーとは何ですか
外部キーは、主キーを介して 2 つのテーブルをリンクするために使用されるキーです。これは、一方のテーブルの列がもう一方のテーブルの主キー属性を指していることを意味します。さらに、いずれかの属性が主キー属性として設定されている場合、その属性は別のテーブルで外部キー属性として機能することを意味します。ただし、外部キーは主キーとは何の関係もないことを知っておく必要があります。
外部キーの使用
外部キーの使用は、主キー属性を利用して 2 つのテーブルの属性をリンクするだけです。したがって、2 つの関係間の関係を作成および維持するために使用されます。
外部キーの例
外部キーの働きを理解するための例について説明します。
Java に相当する
2 つのテーブルを考えてみましょう 学生 そして 部門 以下の表構造に示すように、それぞれの属性があります。
表では、1 つの属性が共通であることがわかります。 スタッド ID ですが、両方のテーブルに異なるキー制約があります。 Student テーブルのフィールド Stud_Id は、 主キー これは、Student テーブルの他のすべてのフィールドを一意に識別しているためです。一方、Stud_Id は 外部キー これは Student テーブルの主キー属性として機能するため、Department テーブルの属性です。これは、Stud_Id 属性により Student テーブルとDepartment テーブルの両方が相互にリンクされていることを意味します。
以下に示す図では、2 つのテーブル間の関係の次の構造を確認できます。
javascript window.open
注: DBMS の参照整合性は、外部キーの概念に基づいて開発されました。主キーが単独で存在するキーであり、外部キーが常に他のテーブルの主キーを参照することは明らかです。主キーを含むテーブルは、参照先テーブルまたは他のテーブルの親テーブルとして知られます。外部キーを持っています。
外部キー制約の作成
テーブルの作成時
以下は、テーブル内の外部キーの作成を学習するための構文です。
CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int, FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id) );
このようにして、MYSQL データベース内のテーブルに外部キーを設定できます。
SQL または Oracle サーバーでテーブルの外部キーを作成する場合、次の構文が機能します。
CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int FOREIGN KEY REFERENCES Student (Stud_Id) );
ALTER TABLE について
以下は、ALTER TABLE で外部キー制約を作成するための構文です。
ディスプレイサイズを知る方法
ALTER TABLE Department ADD FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id);
外部キーの削除
外部キーを削除するには、以下の構文を使用できます。
ALTER TABLE Department DROP FOREIGN KEY FK_StudentDepartment;
したがって、このようにして、MYSQL データベースの ALTER TABLE を使用して外部キーを削除できます。
覚えておきたいポイント
外部キーを削除するときは、外部キーを介して接続されているテーブルの整合性に注意する必要があります。 1 つのテーブルに変更を加えて両方のテーブルの整合性が損なわれた場合、2 つのテーブル間の接続が不適切なために特定のエラーが表示されることがあります。
参照アクション
外部キー テーブル ホルダーによって実行されるアクションにリンクされているアクションがいくつかあります。
1) カスケード
親テーブル (主キーを保持しているテーブル) の行を削除すると、他のテーブル (外部キーを保持しているテーブル) の同じ列も削除されます。したがって、このアクションは次のように知られています カスケード 。
10/50
2) NULL を設定する
このような参照アクションにより、両方のテーブルの参照整合性が維持されます。子テーブル(外部キーを持つテーブル)において、親テーブル/被参照テーブルの参照行を操作/削除すると、その参照行の値がNULLに設定されます。このような実行される参照アクションは次のように呼ばれます。 NULL を設定する 。
3) デフォルトを設定する
このようなアクションは、親テーブルの参照行の値が更新されるか、行が削除され、子テーブルの値が列のデフォルト値に設定されるときに実行されます。
4) 制限する
ループバッシュ用
これは、子テーブルの外部キーによって参照されない限り、親テーブルの参照行の値を変更または削除できない制限制約です。したがって、これは外部キーの通常の参照動作です。
5) アクションなし
これは外部キーの制限制約でもありますが、親テーブルの参照行を変更または削除しようとした後にのみ実装されます。
6) トリガー
これらすべておよびその他の参照アクションは基本的にトリガーとして実装され、外部キーのアクションはユーザー定義のトリガーとよく似ているか、またはほとんど似ています。ただし、場合によっては、適切なトリガーの実行を保証するために、順序付けられた参照アクションが同等のユーザー定義のトリガーに置き換えられます。