ホームページ >データベース >mysql チュートリアル >MySQL における外部キーの概念と実際の応用
MySQL における外部キーの概念と実際の応用
1. 外部キーの概念
データベース設計における, 外部キー キーは、テーブル間の関係を記述するために使用される重要な制約です。外部キーは、あるテーブルの特定の列の値が、別のテーブルの対応する列にも対応する値を必ず持たせるために使用されます。外部キーの存在により、データの一貫性と整合性が保証され、論理関係に従わないデータの挿入や更新を回避できます。
2. 外部キーの実際の適用
実際のデータベース設計では、外部キーが広く使用されています。以下では、特定のコード例を使用して、MySQL での外部キーの使用法を説明します。
1. 2 つの関連テーブルを作成します
まず、2 つの関連テーブルを作成します。1 つは order テーブル (orders)、もう 1 つは得意先テーブル (customers ) です。 。注文テーブルには、注文と顧客の間の関係を確立するための顧客テーブルへの外部キーが含まれます。
CREATE TABLE customers ( customer_id INT PRIMARY KEY, customer_name VARCHAR(50) ); CREATE TABLE orders ( order_id INT PRIMARY KEY, order_date DATE, customer_id INT, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) );
上記のコードでは、customers テーブルとorders テーブルの 2 つのテーブルを作成しました。 order テーブルの customer_id 列は、customers テーブルの customer_id 列を指す外部キーを定義します。
2. データの挿入
次に、customers テーブルとorders テーブルにデータを挿入します。最初に顧客テーブルにデータを挿入します:
INSERT INTO customers (customer_id, customer_name) VALUES (1, 'Alice'); INSERT INTO customers (customer_id, customer_name) VALUES (2, 'Bob');
次に、orders テーブルにデータを挿入します。挿入された customer_id が顧客テーブルに存在することを確認します:
INSERT INTO orders (order_id, order_date, customer_id) VALUES (1, '2022-01-01', 1); INSERT INTO orders (order_id, order_date, customer_id) VALUES (2, '2022-01-02', 2);
3. テスト外部キー制約
次に、外部キーの制約効果を示します。無効な customer_id を挿入しようとすると、外部キー制約によって制限されます:
INSERT INTO orders (order_id, order_date, customer_id) VALUES (3, '2022-01-05', 3);
現時点では、 customer_id 3 のレコードが顧客テーブルに存在しないため、エラーが表示され、不適切な注文データの挿入が回避されます。
4. 外部キー操作ルール
MySQL では、一般的に CASCADE、SET NULL、RESTRICT などを含む外部キー制約の操作ルールがいくつかあります。 CASCADE を例にとると、顧客テーブルから顧客が削除されると、対応する注文データが自動的に削除され、データの分離が回避されます。
CREATE TABLE orders ( order_id INT PRIMARY KEY, order_date DATE, customer_id INT, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE CASCADE );
上記の例を通して、外部キーの重要性と実際の応用例がわかります。データベース設計で外部キー制約を合理的に使用すると、データの一貫性と整合性が確保され、データの挿入および更新時のエラーを回避できます。 MySQL における外部キーの概念は上記の例に限定されるものではなく、実際のアプリケーションではさらに複雑なシナリオがあり、状況に応じて柔軟に使用する必要があります。
以上がMySQL における外部キーの概念と実際の応用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。