1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者向け】主キーと複合主キーが分からなかった私が出席番号で理解した話

1
Posted at

はじめに

ChatGPT Image 2026年6月26日 22_47_03.png

実務でテストデータを作成していたときのことです。

データベースへデータを登録しようとしたら、エラーになりました。

原因を調べると、

主キー重複
一意制約違反

というメッセージ。

そのとき私は、

主キーって何だろう?

複合主キーって何?

なぜ登録できないの?

という状態でした。

今回は、当時の私と同じように悩んでいる方向けに、

  • 主キーとは何か
  • 複合主キーとは何か
  • なぜ必要なのか

を、学校の出席番号を例に解説します。


主キーとは?

主キー(Primary Key)とは、「データを一意に識別するための鍵」 です。

例えば会員管理システムがあるとします。

会員ID 名前
1001 田中
1002 佐藤
1003 鈴木

この場合、会員ID が主キーです。

会員IDが分かれば、

誰のデータなのか特定できます。


なぜ主キーが必要なの?

もし主キーがなかったらどうでしょう。

名前
田中
田中
田中

となった場合、

どの田中さんを更新すればいいのか分かりません。

そのため、データベースでは

絶対に重複しない値

を主キーとして設定します。


でも1つの項目だけでは足りない場合がある

ここで学校を例に考えてみます。

先生がつぎのようにいったとします。

出席番号1番の人、立ってください。

  • 1組の1番
  • 2組の1番
  • 3組の1番

みんな立ってしまいます。

なぜなら、出席番号 だけでは生徒を特定できないからです。


複合主キーとは?

そこで、

クラス
 +
出席番号

をセットで考えます。

クラス 出席番号 名前
1組 1 田中
1組 2 佐藤
2組 1 鈴木

この場合、

1組 + 1番

は田中さんだけです。

2組 + 1番

は鈴木さんだけです。

このように、

複数の項目を組み合わせてデータを特定する仕組み

を複合主キーと呼びます。


主キーとデータの違い

ここが私が最初につまずいたポイントでした。

例えば、

クラス 出席番号 名前
1組 1 田中 給食係

があるとします。

後日、

給食係
↓
保健係

になったとします。

クラス 出席番号 名前
1組 1 田中 保健係

この場合、

変わったのは

です。

一方、

1組 + 1番

という鍵は変わっていません。

つまり、

  • クラス
  • 出席番号

→ 鍵(主キー)

  • 名前

→ データの中身

という違いがあります。


データベースがエラーを出す理由

では次のデータはどうでしょう。

クラス 出席番号 名前
1組 1 田中
1組 1 高橋

人は違います。

名前も違います。

しかし、

1組 + 1番

が重複しています。

そのためデータベースは、

その鍵は既に使われています

とエラーを出します。


実務で私が困ったこと

テストデータを作成しているとき、

私は

名前が違うから別データ

だと思っていました。

しかし実際には、

主キーが同じ

だったため登録できませんでした。

そこで初めて、

データベースは

「名前」ではなく

「主キー」

を見ていることを理解しました。


テストデータ作成で意識すること

テストデータを作るときは、

まず

このテーブルの主キーは何か?

を確認します。

複合主キーなら、

その組み合わせが重複しないようにデータを作成する必要があります。


まとめ

今回学んだことは次の3つです。

  • 主キーはデータを特定するための鍵
  • 複数の項目を組み合わせたものが複合主キー
  • 主キーが重複するとデータベースは登録を拒否する

私自身、最初は「名前が違うなら別データでは?」と思っていました。

しかし、データベースは「人が見て違うか」ではなく、「鍵が違うか」 で判断します。

複合主キーは難しく感じますが、

学校の**「クラス + 出席番号」** で考えると理解しやすいと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?