一意性制約(UNIQUE制約)とは?いちいせいせいやく
一意性制約(UNIQUE制約)とは、同じ値を持つ行が2件以上できないように、列や複数列の組へ付ける制約。主キーは1つの表に1組しか置けないが、この制約なら重複させたくない項目ごとに何本でも設定でき、候補キーの実装手段になる。多くのDBMSは裏で一意インデックスを作り、登録・更新のたびに検査する。
最終更新:2026-10-09
この語が出る過去問を解く →背景
重複データを人の目で防ぐのは無理で、同じ利用者が二重に登録されると請求も集計も静かに狂う。アプリ側で「登録前に検索して有無を確かめる」やり方は、二人が同時に登録した瞬間にすり抜ける。データの正しさは最後の砦であるDBMS側で機械的に守るべきだ、という考え方から一意性制約が置かれている。試験では制約の種類(主キー・参照・検査・非NULL)との使い分けで問われる。
具体例
サイボウズやSmartHRのような会員制サービスでは、社員番号を主キーにしたうえでメールアドレスの列に一意性制約を置き、同じアドレスでの二重登録をDBMSに拒否させる。部門コードと席番号の2列にまとめて設定すれば、「同じ部門の中では席番号が重ならない」という組合せの一意も表現できる。
試験での引っ掛け
主キーと違ってNULLを許すのが急所。多くのDBMSはNULL同士を重複と見なさないため、NULLの行は何行でも入る。「一意だから必ず1行」と思って結合すると件数が膨らむ。主キー=一意性+非NULL、一意性制約=一意性のみ、という差で覚える。
関連用語
出た過去問
出典:令和8年度 公開問題 基本情報技術者試験 科目A 問7(IPA)解説で登場
次のSQL文によって定義され,値が格納されている"商品"表に対して,制約違反で実行エラーとなるSQL文はどれか。 〔SQL文〕 CREATE TABLE 商品 …
正解:UPDATE 商品 SET 商品コード = 'A777' WHERE 在庫数 >= 20
要点:主キーは重複不可。複数行を同じ値に更新すると違反
商品コードは主キーなので、値の重複は許されない。在庫数が20以上の行はデジタルカメラ(50)と洗濯機(20)の2行あり、その両方の商品コードを同じ'A777'に更新しようとすると主キーの一意性制約に違反して実行エラーになる。他の3つは重複もNULLも生じないため正常に実行できる。
出典・参考
公式シラバスの3 技術要素 > 2. データベース設計 > (2) データベースの設計に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。