優待や割引でお得に法人向けサービスを発注するなら ➡SBIバリュープレイス

SQLにおける一対一、一対多、多対多のリレーションシップ解説

この記事では、SQLにおける一対一(1:1)、一対多(1:N)、多対多(N:M)のリレーションシップについて詳しく解説します。データベース設計やクエリ作成時に必要となる、これらのリレーションシップの違いと使い方を、具体的な日本語のテーブルデータを用いてご紹介します。

目次

一対一(1:1)リレーションシップ

一対一リレーションシップは、各テーブルのレコードが対応するテーブルのレコードと1つしか関連しないような関係です。

一対一の例

従業員テーブル詳細テーブル
山田山田の詳細
田中田中の詳細
一対一リレーションシップの例

一対一の実装方法

この種のリレーションシップを実装するには、一方のテーブルに他方のテーブルの主キーを外部キーとして持たせます。

CREATE TABLE 従業員 (
  id INT PRIMARY KEY,
  name VARCHAR(50)
);

CREATE TABLE 詳細 (
  id INT PRIMARY KEY,
  employee_id INT,
  FOREIGN KEY (employee_id) REFERENCES 従業員(id)
);

一対多(1:N)リレーションシップ

一対多リレーションシップは、一つのレコードが他のテーブルの複数のレコードと関連づけられる関係です。

一対多の例

親テーブル子テーブル
親A子1, 子2
親B子3, 子4
一対多リレーションシップの例

一対多の実装方法

子テーブルに親テーブルの主キーを外部キーとして持たせます。

CREATE TABLE 親 (
  id INT PRIMARY KEY,
  name VARCHAR(50)
);

CREATE TABLE 子 (
  id INT PRIMARY KEY,
  parent_id INT,
  FOREIGN KEY (parent_id) REFERENCES 親(id)
);

多対多(N:M)リレーションシップ

多対多リレーションシップは、複数のレコードが複数のテーブルの複数のレコードと関連する関係です。

多対多の例

商品テーブル顧客テーブル
商品1, 商品2顧客A, 顧客B
多対多リレーションシップの例

多対多の実装方法

多対多のリレーションシップを実装するには、中間テーブルが必要です。

CREATE TABLE 商品 (
  id INT PRIMARY KEY,
  name VARCHAR(50)
);

CREATE TABLE 顧客 (
  id INT PRIMARY KEY,
  name VARCHAR(50)
);

CREATE TABLE 購入 (
  product_id INT,
  customer_id INT,
  FOREIGN KEY (product_id) REFERENCES 商品(id),
  FOREIGN KEY (customer_id) REFERENCES 顧客(id)
);

まとめ

SQLにおけるリレーションシップは、一対一、一対多、多対多の3種類が主にあります。各リレーションシップの理解と適切な実装方法は、データベース設計やクエリ作成において非常に重要です。

コメント

コメントする

目次