一意性制約(UNIQUE制約)とは?
一意性制約(UNIQUE制約)とは、指定した列または列の組において、重複する値が存在しないことを保証する制約。主キー以外にも業務上一意な項目へ設定でき、候補キーの実装手段となる。多くのDBMSは内部で一意インデックスを自動生成して重複を検査する。
データベーススペシャリスト試験の過去問では4回出題されています(2017年度〜2025年度)。
いちいせいせいやく
一意性制約(UNIQUE制約)の意味
指定した列または列の組において、重複する値が存在しないことを保証する制約。主キー以外にも業務上一意な項目へ設定でき、候補キーの実装手段となる。多くのDBMSは内部で一意インデックスを自動生成して重複を検査する。
一意性制約(UNIQUE制約)の具体例
社員表の主キーが社員番号でも、メールアドレスに一意性制約を置けば重複登録を防げる。複数列にまとめて設定すれば「同一部門内で席番号は重複しない」といった組合せの一意性も表現できる。
一意性制約(UNIQUE制約)は試験でどう引っ掛けられる?
主キーと違い、多くのDBMSでNULLは重複とみなされないため、NULLを許す列では複数行がNULLを持てる。「一意制約があるから必ず1行」と考えると、NULL行が複数残って結合時に件数が膨らむ。
一意性制約(UNIQUE制約)と関連する用語
一意性制約(UNIQUE制約)が出た過去問
PCへのメモリカードの取付け状態を管理するデータモデルを作成した。1台のPCは、スロット番号によって識別されるメモリカードスロットを二つ備える。“取付け”表を定…
正解:PRIMARY KEY(PCID, スロット番号), UNIQUE(メモリカードID),
要点:取付け位置は複合主キー、カードの重複はUNIQUEで防ぐ
1台のPCは2つのスロットをもち、スロットごとに1枚のカードが取り付けられるため、PCIDとスロット番号の組が取付けを一意に識別する主キーになる。さらに1枚のメモリカードが同時に複数のスロットへ取り付けられることはないので、メモリカードIDに一意性制約が必要になる。
出典:平成29年度 春期 データベーススペシャリスト試験 am2 問11(IPA)商品情報に価格、サイズなどの管理項目を追加する場合でもスキーマ変更を不要とするために、“管理項目”表を次のSQL文で定義した。“管理項目”表の“ID”は商品ごと…
正解:UNIQUE(ID, 項目名)
要点:縦持ち表ではIDと項目名の組に一意性制約を課す
この表は1行につき1つの項目の値を保持する縦持ちの構造なので、同じIDに同じ項目名の行が複数あると値が一意に定まらなくなる。IDと項目名の組に一意性制約を課せば、1つの商品につき商品名は1行しか登録できなくなる。
出典:平成30年度 春期 データベーススペシャリスト試験 am2 問7(IPA)あるエンティティを関係データベース上に実装しようとしたとき、その主キーが多くの属性から構成される複合キーとなることが分かった。主キーとして扱う属性を少なくして扱…
正解:連番などを値としてとる列を新たに設けて主キーとし、複合キーの代理キー(surrogate key)とする。
要点:長い複合主キーは連番の代理キーに置き換える
多数の属性から成る複合主キーは、参照する側の外部キーも同じ数だけ列を持つことになり、結合条件も長くなって扱いにくい。この場合は業務的な意味を持たない連番などの単一列を新たに設けて主キーとし、もとの複合キーは一意性制約を課した候補キーとして残す。この新設した人工的な主キーが代理キー(サロゲートキー)である。
出典:令和6年度 秋期 データベーススペシャリスト試験 am2 問5(IPA)表定義に基づいて作成された"システム担当者"表において、トランザクションAの複合文内のSQL文全てを正常終了させるためにaに入れる字句はどれか。ここで、実線の下…
正解:UK_担当者番号 DEFERRED
要点:値の入替えは制約をDEFERREDにして検査を先送りする
2件の担当者番号を入れ替える更新では、1件目を更新した時点で他方と値が重複してしまう。この表の一意性制約はDEFERRABLEで宣言されているので、SET CONSTRAINTSで検査タイミングをDEFERREDに切り替えれば、検査がコミット時まで先送りされる。2件目の更新が終わった時点では重複が解消しているため、両方のUPDATEが正常終了する。主キー側は宣言にDEFERRABLEが付いておらず、遅延指定の対象にできない。
出典:令和7年度 秋期 データベーススペシャリスト試験 am2 問8(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。