Erdmates Logo
Erdmates
ブログ一覧へ
外部キーFKリレーションERDSQL

外部キーとテーブルのリレーションシップを完全理解

外部キー(Foreign Key)の概念と1:1、1:N、N:Mのリレーション設計を実践例で学びます。

2026年2月14日8 分で読めます

外部キーとは?

外部キー(Foreign Key, FK)は、一つのテーブルのカラムが別のテーブルの主キーを参照する制約です。外部キーはテーブル間のリレーションシップを定義し、参照整合性(Referential Integrity)を保証します。

ON DELETEオプション

  • RESTRICT(デフォルト): 子レコードがあれば親の削除を拒否
  • CASCADE: 親削除時に子も一緒に削除
  • SET NULL: 親削除時に子のFKをNULLに変更
  • NO ACTION: RESTRICTに類似、トランザクション終了時に検査

3種類のテーブルリレーション

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

CREATE TABLE user_profiles (
  user_id UUID PRIMARY KEY,  -- FKかつPK(1:1を保証)
  full_name VARCHAR(200),
  bio TEXT,

  FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);

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

CREATE TABLE orders (
  id UUID PRIMARY KEY,
  customer_id UUID NOT NULL,  -- 1:NのN側にFK
  total_amount DECIMAL(15, 2) NOT NULL,

  FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE RESTRICT
);
CREATE INDEX idx_orders_customer ON orders(customer_id);

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

中間テーブルを通じて実装します。

CREATE TABLE enrollments (
  student_id UUID NOT NULL,
  course_id UUID NOT NULL,
  enrolled_at TIMESTAMPTZ DEFAULT NOW(),
  grade VARCHAR(2),

  PRIMARY KEY (student_id, course_id),
  FOREIGN KEY (student_id) REFERENCES students(id) ON DELETE CASCADE,
  FOREIGN KEY (course_id) REFERENCES courses(id) ON DELETE CASCADE
);

自己参照リレーション

同じテーブル内のレコードが互いにリレーションを持つ場合です。

CREATE TABLE comments (
  id UUID PRIMARY KEY,
  post_id UUID NOT NULL,
  parent_id UUID,  -- NULLなら最上位コメント
  content TEXT NOT NULL,

  FOREIGN KEY (parent_id) REFERENCES comments(id) ON DELETE CASCADE
);

まとめ

外部キーとリレーション設計はデータベースの骨格を構成します。最初は複雑に見えますが、3つの基本リレーションパターン(1:1、1:N、N:M)を理解すれば、どんなドメインのデータもモデリングできます。

Erdmatesで今すぐ始めましょう

AI搭載ERDエディタでデータベース設計を始めましょう。無料でご利用いただけます。

無料デモを試す無料で始める

関連記事

bigint・UUID v4・UUID v7:主キーの選び方(PostgreSQL 18 の uuidv7() 対応)

bigint・UUID v4・UUID v7 の主キーの長所と短所を比べ、PostgreSQL 18 に入った uuidv7() で変わった点と、状況別の選び方を整理します。

AIエージェントが読むデータベース:MCP時代のスキーマ設計原則

AIエージェントがMCPを通じてデータベースに直接接続するケースが増えています。エージェントがスキーマを誤って解釈しないように名前・コメント・制約を設計し、権限を安全に分ける方法を整理します。

PostgreSQL 19プレビュー:スキーマ設計と運用に影響する変更点(ベータ4時点)

正式リリースを控えたPostgreSQL 19の変更点のうち、テーブル設計・マイグレーション・運用に直接影響するものを公式リリースノート(ベータ4)に基づいて整理します。ベータで取り下げられた機能や、アップグレード前に確認すべき動作の変更もあわせて見ていきます。

Erdmates Logo
Erdmates

自然言語でデータベースを設計し、AI駆動ERDエディターでチームとリアルタイムでコラボレーション。

サービス

  • 機能紹介
  • 料金プラン
  • デモ
  • SQL→ERD変換

リソース

  • ブログ
  • ヘルプ
  • お問い合わせ

法的事項

  • 利用規約
  • プライバシーポリシー
  • 第三者提供
会社名: Produx|代表者: 최정회
住所: 강원특별자치도 원주시 솔우물2길 4-1 (무실동)
メール: master@erdmates.com
個人情報管理責任者: 최정회|ホスティングサービス提供者: Amazon Web Services

© 2026 Produx. All rights reserved.