カテゴリ: PostgreSQL 更新日: 2026/02/28

PostgreSQLの主キー・外部キーを完全解説!初心者でもわかる設定方法と考え方

PostgreSQLの主キー・外部キーの設定方法
PostgreSQLの主キー・外部キーの設定方法

先生と生徒の会話形式で理解しよう

生徒

「PostgreSQLでテーブルを作るときに、主キーとか外部キーって言葉が出てきて混乱しています…」

先生

「主キーと外部キーは、表と表を正しく管理するための大事なルールです。紙の名簿に番号を振ったり、別のノートとひも付けたりする感覚で考えると分かりやすいですよ。」

生徒

「パソコンが苦手でも理解できますか?」

先生

「大丈夫です。一つひとつ、表を眺めながら説明していきます。」

1. SQLとは何か?

1. SQLとは何か?
1. SQLとは何か?

SQLは、データベースという「情報をきれいに整理して保存する箱」に指示を出すための言葉です。 会員名簿や商品一覧のような表を作ったり、探したり、書き換えたりするときに使います。

PostgreSQLは、そのSQLを使って操作する代表的なデータベースのひとつです。 主キーや外部キーは、PostgreSQLで表を安全に管理するための基本ルールになります。

2. 主キーとは何か?

2. 主キーとは何か?
2. 主キーとは何か?

主キーとは、「その行を絶対に見分けるための番号」です。 同じ値が重複せず、必ず1行に1つだけ存在します。

紙の会員名簿で考えると、会員番号のようなものです。 名前が同じ人がいても、番号が違えば別人だと判断できます。

PostgreSQLでは、主キーを設定することで「重複してはいけない」「空白はダメ」というルールを自動で守ってくれます。

3. 主キーの設定方法

3. 主キーの設定方法
3. 主キーの設定方法

主キーは、テーブルを作るときに指定するのが一般的です。 よく使われるのが、自動で番号が増えるSERIAL型です。


CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name TEXT,
    age INTEGER,
    email TEXT
);

この例では、idが主キーです。 データを追加するたびに、1、2、3…と自動で番号が振られます。

4. 外部キーとは何か?

4. 外部キーとは何か?
4. 外部キーとは何か?

外部キーとは、「別のテーブルの主キーを参照する列」です。 表と表を正しくつなぐための仕組みです。

たとえば、「注文表」と「会員表」がある場合、 注文が誰のものかを示すために会員番号を使います。 この会員番号が外部キーになります。

外部キーを設定すると、「存在しない番号は登録できない」という安全装置が働きます。

5. 外部キーの設定方法

5. 外部キーの設定方法
5. 外部キーの設定方法

ここでは、usersテーブルとordersテーブルを使って説明します。 usersのidが主キー、ordersのuser_idが外部キーです。


CREATE TABLE orders (
    id SERIAL PRIMARY KEY,
    user_id INTEGER REFERENCES users(id),
    order_date DATE
);

REFERENCES users(id) と書くことで、 「usersテーブルのidが存在する場合のみ登録できる」というルールになります。

6. 主キー・外部キーを使ったデータ例

6. 主キー・外部キーを使ったデータ例
6. 主キー・外部キーを使ったデータ例

■ usersテーブルのデータ


id | name       | age | email
---+------------+-----+-------------------
1  | 山田太郎   | 25  | taro@example.com
2  | 佐藤花子   | 19  | hanako@example.com
3  | 鈴木一郎   | 30  | ichiro@example.com

■ ordersテーブルにデータを追加


INSERT INTO orders (user_id, order_date) VALUES
(1, '2024-01-10'),
(2, '2024-01-12'),
(1, '2024-01-15');

■ ordersテーブルの状態


id | user_id | order_date
---+---------+------------
1  | 1       | 2024-01-10
2  | 2       | 2024-01-12
3  | 1       | 2024-01-15

user_idには、usersテーブルに存在するidしか入っていません。 これが外部キーの効果です。

7. 主キー・外部キーを設定するメリット

7. 主キー・外部キーを設定するメリット
7. 主キー・外部キーを設定するメリット

主キーを設定すると、1行ずつ確実に区別できるようになります。 データを探したり、更新したりする作業が安全で速くなります。

外部キーを設定すると、表と表の関係が壊れにくくなります。 間違った番号を入れてしまうミスを、データベース自身が防いでくれます。

これは、ノート同士を正しい番号でひも付けして管理するイメージです。

8. 初心者が意識したい設計の考え方

8. 初心者が意識したい設計の考え方
8. 初心者が意識したい設計の考え方

主キーは「その行を一意に決められるもの」を選ぶことが大切です。 名前やメールアドレスは変わる可能性があるため、番号を使うのが安全です。

外部キーは、「必ず関連するデータが存在するか」を考えて設定します。 無関係な表同士を無理につなげないことも重要です。

主キーと外部キーを正しく使うことで、PostgreSQLのテーブルはぐっと分かりやすく、壊れにくくなります。

カテゴリの一覧へ
新着記事
New1
PostgreSQL
PostgreSQLのLIMIT・OFFSETとパフォーマンス問題を完全解説|初心者でもわかる安全な使い方
New2
MySQL
MySQLのUPDATE文でデータを更新する基本を徹底解説|SQL初心者でもわかるデータベース更新入門
New3
PostgreSQL
PostgreSQLのOFFSET完全入門|並び替えと組み合わせてデータをスキップする方法を初心者向けに解説
New4
MySQL
MySQLで複数行INSERTを行う方法と注意点を徹底解説|SQL基礎から学ぶデータベース入門
人気記事
No.1
Java&Spring記事人気No1
PostgreSQL
PostgreSQLのDISTINCT完全ガイド|SQLで重複データを除外する方法を初心者向けに解説
No.2
Java&Spring記事人気No2
PostgreSQL
PostgreSQLの主キー・外部キーを完全解説!初心者でもわかる設定方法と考え方
No.3
Java&Spring記事人気No3
PostgreSQL
PostgreSQLのUPDATE文の使い方(部分更新・条件更新)
No.4
Java&Spring記事人気No4
PostgreSQL
PostgreSQLのLEFT JOIN完全入門!不足データを補いながらテーブル結合する仕組みをやさしく解説
No.5
Java&Spring記事人気No5
PostgreSQL
PostgreSQLとは?初心者向けに特徴をわかりやすく解説
No.6
Java&Spring記事人気No6
PostgreSQL
PostgreSQLスキーマ設計のベストプラクティス完全ガイド|初心者でもわかるデータベース整理術
No.7
Java&Spring記事人気No7
PostgreSQL
PostgreSQLのpublicスキーマの役割と扱い方
No.8
Java&Spring記事人気No8
PostgreSQL
PostgreSQLスキーマ作成・削除完全ガイド!初心者でもわかるデータベース設計の基礎