主キーとユニークキーの違いとは?初心者でも分かる役割や使い分けをIT業務の視点で解説
結論
主キー(Primary Key)とユニークキー(Unique Key)はどちらも重複を防ぐための制約ですが、役割が異なります。主キーはテーブル内で1件のデータを必ず識別するためのキー、ユニークキーは重複を禁止したい項目に設定するキーです。
主キーとユニークキーとは
主キーとは
主キー(Primary Key)は、テーブル内のレコードを一意に識別するための項目です。
主キーには次の特徴があります。
- 重複できない
- NULL(値なし)は登録できない
- 通常は1つのテーブルに1つだけ設定する
例えば社員情報テーブルでは、「社員ID」が主キーになることが一般的です。
| 社員ID(主キー) | 氏名 | 部署 |
|---|---|---|
| 1001 | 田中 | 営業部 |
| 1002 | 鈴木 | 総務部 |
| 1003 | 佐藤 | 情報システム部 |
社員IDは1人につき1つだけなので、主キーに適しています。
ユニークキーとは
ユニークキー(Unique Key)は、値の重複を禁止するための制約です。
例えば社員のメールアドレスは、同じ値が登録されると困ります。
| 社員ID | メールアドレス(ユニークキー) |
|---|---|
| 1001 | tanaka@example.co.jp |
| 1002 | suzuki@example.co.jp |
メールアドレスは重複してはいけませんが、社員を識別するための番号ではありません。このような場合にユニークキーを設定します。
主キーとユニークキーの違い
| 項目 | 主キー | ユニークキー |
|---|---|---|
| 役割 | レコードを識別する | 重複を防ぐ |
| 重複 | 不可 | 不可 |
| NULL | 不可 | 多くのDBでは許可される(製品仕様による) |
| 設定数 | 通常1テーブルに1つ | 複数設定可能 |
| 他テーブルから参照 | よく利用される | 利用されることもある |
イメージで理解する
社員証で例えると分かりやすくなります。
- 社員番号:主キー
- 会社メールアドレス:ユニークキー
- 氏名:通常はどちらにも設定しない
同姓同名の社員は存在する可能性がありますが、社員番号やメールアドレスは重複してはいけません。
どんな場面で使われるのか
主キーはほぼすべての業務システムで利用されています。
- 社員ID
- 商品ID
- 注文番号
- 顧客番号
ユニークキーは次のような項目で利用されます。
- メールアドレス
- ログインID
- 会員番号
- シリアル番号
なぜ違いを理解することが重要なのか
現場では次のような指示があります。
- 「社員IDを主キーにしてください。」
- 「メールアドレスはユニークキーを設定してください。」
- 「重複登録できないようにしてください。」
主キーとユニークキーを混同すると、システム設計やデータ管理に問題が発生する可能性があります。
初心者が混乱しやすいポイント
| 勘違い | 正しい理解 |
|---|---|
| 主キーとユニークキーは同じ | 役割が異なる |
| ユニークキーも1つしか作れない | 複数設定できる |
| 氏名を主キーにできる | 同姓同名があるため適さない |
| 主キーは変更しても問題ない | 他のテーブルへ影響する可能性がある |
実際のIT現場での利用例
社員管理システムでは、社員IDを主キー、メールアドレスとログインIDをユニークキーとして設定するケースがよくあります。
これにより、社員を正確に識別しながら、同じメールアドレスやログインIDの重複登録も防げます。
筆者が経験した現場での事例
あるシステムでメールアドレスにユニークキーが設定されていなかったため、同じメールアドレスが複数の社員に登録され、パスワードリセットメールが誤ったユーザーへ送信されるトラブルが発生しました。
適切なキーを設定することは、データの整合性だけでなく、セキュリティの面でも重要です。
業務でよくあるトラブル例
- 主キーが重複して登録できない
- ユニークキー違反で登録エラーになる
- 誤って主キーを変更した
- 重複データが存在してユニークキーを追加できない
原因の切り分け
| 確認内容 | 確認ポイント |
|---|---|
| 主キー | 重複していないか |
| ユニークキー | 同じ値が登録されていないか |
| NULL値 | 制約違反になっていないか |
| エラーログ | キー違反が記録されていないか |
確認する順番
- 対象データを確認する
- 重複データを検索する
- 主キー・ユニークキーの設定を確認する
- エラーログを確認する
- アプリケーション側の入力内容を確認する
GUIでの確認方法
SQL Server Management Studio(SSMS)やMySQL Workbenchなどでは、テーブル設計画面から主キーやユニークキーの設定を確認できます。
鍵のアイコンが表示されている項目は主キーであることが多く、ユニークキーはインデックス一覧などで確認できます。
CUI(コマンド)での確認方法
データベース製品ごとに異なりますが、テーブル定義を表示するコマンドやSQLを実行することで、主キーやユニークキーの設定を確認できます。
また、SELECT文を使って重複データの有無を調査することもあります。
ログの確認方法
データ登録時にキー制約違反が発生すると、アプリケーションログやデータベースログにエラー内容が記録されます。
「Duplicate Key」や「Unique Constraint Violation」といったメッセージが表示されることがあります。
初心者がやりがちなミス
- 氏名を主キーにする
- メールアドレスにユニークキーを設定し忘れる
- 本番データで主キーを変更する
- 重複データがあるままユニークキーを追加する
注意点
主キーの変更は、他のテーブルとの関連(外部キー)やアプリケーションに大きな影響を与える可能性があります。
また、ユニークキーを追加する前には、既存データに重複がないことを確認しましょう。
上司へ報告するポイント
- 対象テーブル名
- 対象キー(主キー・ユニークキー)
- エラー内容
- 影響範囲
- 確認した内容
- 実施した対応
エスカレーションするタイミング
- 主キーを変更する必要がある
- 大量の重複データが見つかった
- キー制約の変更が必要
- 原因が特定できない
応用知識
主キーは他のテーブルから外部キー(Foreign Key)として参照されることが多く、テーブル同士を関連付ける重要な役割を持っています。一方、ユニークキーは重複を防ぐことが主な目的であり、必ずしも他のテーブルとの関連付けに使用されるわけではありません。
関連するIT用語
- データベース(Database)
- テーブル(Table)
- レコード(Record)
- カラム(Column)
- 主キー(Primary Key)
- 外部キー(Foreign Key)
- インデックス(Index)
- 制約(Constraint)
よくある質問(FAQ)
主キーとユニークキーはどちらも重複を防げますか?
はい。どちらも重複を防ぐことができます。ただし、主キーはレコードを一意に識別するための必須項目であり、ユニークキーは重複を禁止したい項目に設定する制約です。
1つのテーブルに主キーは何個設定できますか?
主キーは1つのテーブルに1つだけ設定できます。ただし、複数のカラムを組み合わせた「複合主キー」を設定することは可能です。
ユニークキーは何個でも設定できますか?
はい。データベース製品ごとの上限はありますが、通常は複数のユニークキーを設定できます。
ユニークキーにNULLは登録できますか?
データベース製品によって扱いが異なります。多くの製品ではNULLを許可しますが、NULLを何件登録できるかは製品ごとに仕様が異なるため、利用しているデータベースの仕様を確認しましょう。
まとめ
主キーはレコードを一意に識別するためのキー、ユニークキーは重複登録を防ぐためのキーです。
どちらも重複を防ぐ役割がありますが、主キーはNULLを許可せず、通常は1テーブルに1つだけ設定します。一方、ユニークキーは複数設定でき、メールアドレスやログインIDなど「重複してはいけない項目」に利用されます。
IT業務では、主キーとユニークキーの違いを理解しておくことで、データベース設計やSQL、システム障害の調査をより正確に進められるようになります。

コメント