ユニーク制約(UNIQUE制約)
データベースの項目に付ける制約だよ
同じ値は入れられなくなるよ
簡単に書くよ
ユニーク制約(UNIQUE制約)(読:ユニークセイヤク 英:unique constraint)とは
「他の行の値と重複しちゃダメよ」制約のこと。
もう少し具体的に書くと
データベースの項目に付ける制限(制約)のひとつ
であり
「この項目に入れる値は他の行に入っている同じ項目の値と重複してはダメですよ。入れようとした値がすでに入っている値と同じだったらエラーにしますよ」な制約のこと
です。
詳しく書くよ
最初に留意事項です。
専門外の方がイメージしやすいように「データベースの項目」と表現していますが、正確には「データベースのテーブルの項目」です。
こだわり派な人は適当に読み替えてください。
それでは本題です。
まずは予備知識として「ユニーク」と「データベース」について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
ユニークの意味は「重複しないよ~」です。
日本語では「一意」などと表現されます。
データベースは「データを入れておく箱」です。
ただし「データベース」という用語は、実際には もう少し複雑な概念です。
データを入れておく箱そのものは「テーブル」と言います。
とりあえず
データベースの話において、実際にデータを入れておく箱がテーブル
と覚えてください。
以上を踏まえて、データベース(のテーブル)の項目に付与する制限のひとつで
「重複しないよ~」な状態にしますよ制約
が「ユニーク制約」です。
この制限を付与された項目には、他の行に入っている値と同じ値を入れられなくなります。
例えば、そうですね。
ピヨピヨ学校のピヨクラスで演劇をすることになりました。
生徒の情報と配役はデータベースで管理することにしました。
データベースに入れる内容は
1.出席番号
2.名前
3.性別
4.配役
の4項目です。
えっちらおっちらと入力したところ、最終的には以下のような一覧表ができあがりました。
| 出席番号 | 名前 | 性別 | 配役 |
|---|---|---|---|
| 1番 | 相川 | 男 | 王子様 |
| 2番 | 合田 | 男 | 村人A |
| 3番 | 伊藤 | 男 | 村人B |
| 4番 | 宇野 | 男 | 村人C |
| 1番 | 伊藤 | 女 | お姫様 |
| 2番 | 井上 | 女 | 侍女 |
ここで少し考えてみてください。
複数の生徒が同じ配役になるということが、ありえるでしょうか。
今回の演劇では、同じ「村人」でも「村人A」「村人B」「村人C」のように区別して管理します。
一人一人に求められる演技が少しずつ違うからです。
ということは、複数の生徒が同じ配役になることは、ありえません。
例えば
| 出席番号 | 名前 | 性別 | 配役 |
|---|---|---|---|
| 1番 | 相川 | 男 | 王子様 |
| 2番 | 合田 | 男 | 村人A |
| 3番 | 伊藤 | 男 | 村人A |
| 4番 | 宇野 | 男 | 村人C |
| 1番 | 伊藤 | 女 | お姫様 |
| 2番 | 井上 | 女 | 侍女 |
のように合田君と伊藤君の2人に「村人A」が割り当てられたとしたら、それは何かがおかしいです。
入力ミスか割当ミスかは分かりませんが、とにかく間違いです。
それなら最初から同じ値を入れられないようにしておいた方が楽ですよね。
「村人A」と入力したときに「おいおい、すでに『村人A』が割り当たっている人はいるぞ。なんか間違ってないか?」と注意してくれたら助かります。
そのために付ける
「他の行の値と重複してはダメですよ」制約
がユニーク制約です。

ユニーク制約を付けた項目は値が重複しません。
すでに入っている値と同じ値を入れようとするとエラーになります。
結果として、すべての行の値がユニークになる理屈です。
一言でまとめるよ
まぁ「ユニーク制約」って単語が出てきたら「重複しちゃダメだよ制約なんだな~」と お考えください。
おまけ
■訳してみるよ
「unique(ユニーク)」の意味は「唯一の」とか「一意的な」とかです。
「制約」は日本語ですね。
何となく くっつけると
一意にしてね制約
となります。
■検索してみる?






