SQLで外部キーとリレーションを作成する方法を教えて下さい
SQLにおける外部キー制約により関連付けられる外部キーとは、あるテーブル内の列(または列集合)が、別のテーブル内の主キー列を参照し、テーブル間の関連付けにおける整合性を確保することです。外部キーを設定するには、外部キー列とその参照先の主キー列を指定する必要があります。外部キーを設定する手順は次のとおりです。
1. テーブルの作成: まず、外部キー列を含むテーブルと主キー列を含むテーブルを作成します。たとえば、「orders」テーブルと「customers」テーブルを作成できます。
“`sql
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)
);
“`
2. 外部キーの設定: 「orders」テーブルを作成時に、FOREIGN KEY 制約を使用して「customer_id」列が「customers」テーブルの「customer_id」列を参照するように設定します。
“`sql
ALTER TABLE orders
ADD CONSTRAINT fk_customer_id
FOREIGN KEY (customer_id)
REFERENCES customers(customer_id);
“`
上記のコードでは、ALTER TABLE ステートメントを使用して FOREIGN KEY 制約を追加しており、「fk_customer_id」という名前が付けられています。この制約は、「customer_id」列を外キーとして指定し、「customers」テーブルの「customer_id」列を参照します。
3. 外部キーのテスト: 外部キーを設定したら、データ挿入によってその機能をテストできます。データが「orders」テーブルに挿入されると、システムは自動的に外部キー制約をチェックし、挿入する「customer_id」が「customers」テーブルの「customer_id」列に存在することを確認します。
“`sql
INSERT INTO customers (customer_id, customer_name)
VALUES (1, ‘John’);
INSERT INTO orders (order_id, order_date, customer_id)
VALUES (1, ‘2022-01-01’, 1);
“`
上の例では、「customers」テーブルに1つのデータが挿入され、その後「orders」テーブルに1つのデータが挿入されています。ここでは、「customer_id」が1に指定されています。「customers」テーブルに「customer_id」1のレコードが存在するため、挿入操作は成功します。この手順によって、外部キーを設定し、別のテーブル内の主キー列を参照することができます。外部キーの役割はデータの整合性を確保し、テーブル間の関連性を維持することです。