1. 外部キーとは:
主キー: レコードを一意に識別します。空にすることはできません。
外部キー: 主キーです。別のテーブルの外部キーには繰り返しを指定でき、他のテーブルとの関係を確立するために使用される null 値を指定できます。したがって、外部キーについて話す場合、少なくとも 2 つのテーブルが含まれている必要があります。たとえば、次の 2 つのテーブル:
上記には、部門テーブル (dept) と従業員テーブル (emp) の 2 つのテーブルがあります。 Id=Dept_id、Dept_id は従業員テーブルの外部キーです。従業員テーブルの従業員は自分がどの部門に属しているかを知る必要があるため、外部キー Dept_id を通じて対応する部門を見つけて、したがって、この 2 つは関連付けられています。したがって、マスター テーブルとの接続を見つけるには、スレーブ テーブルに外部キーを作成する必要があります。スレーブ テーブルは、この 2 つの関係を維持する役割を果たします。
2. 外部キーの使用は次の条件を満たす必要があります: (ここには InnoDB の概念が関係しています)
1. 両方のテーブルは InnoDB テーブルである必要があり、一時テーブルはありません。
注: InnoDB はデータベースのエンジンです。一般的な MySQL エンジンには、InnoDB と MyISAM の 2 つがあります。後者は外部キーをサポートしません。
2. 外部キー関係を確立するための対応する列には、同様の InnoDB 内部データ型が必要です。
3. 外部キー関係を確立するには、対応する列にインデックスを付ける必要があります。
4. CONSTRAINT シンボルが明示的に指定される場合、そのシンボルはデータベース内で一意である必要があります。明示的に指定しない場合、InnoDB は自動的に作成されます。
インタビューの質問: データベースはどのストレージ エンジンを使用していますか?違いは何ですか?
回答: 一般的なものは MyISAM と InnoDB です。
MyISAM: 外部キー制約はサポートされていません。トランザクションはサポートされていません。大規模なバッチでデータをインポートする場合、データの挿入中にインデックスが構築されるため、実行効率を向上させるために、最初にインデックスを無効にし、インポートが完了した後にインデックスを有効にする必要があります。
InnoDB: 外部キー制約とトランザクションをサポートします。インデックスは参照せずに個別に処理されます。
CONSTRAINT シンボル: この外部キー制約に名前を付けると、将来見つけやすくなります。このパラメータを追加しない場合、システムは自動的に名前を割り当てます。
FOREIGN KEY: テーブルのフィールド 1 を外部キーのフィールドとして使用します。
参照: メインテーブルのフィールド 2 にマップされます。
ON DELETE の後の 4 つのパラメーターは、メイン テーブルのレコードを削除するときに行われた合意を表します。
RESTRICT (制限): 削除したいマスターテーブルに、その下のスレーブテーブルに対応するレコードがある場合、このマスターテーブルは削除されません。
CASCADE (カスケード): メインテーブルのレコードが削除されると、スレーブテーブルの関連レコードもすべて削除されます。
SET NULL: 外部キーを null に設定します。 ️何もしません、何もしません。
注: 一般に、RESTRICT と CASCADE が最もよく使用されます。
美しいテキストと美しい写真
上記は MySQL Advanced (1) Primary Keys とForeign Keys の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) を参照してください。 )!