ベルマークのない自由帳

ベルマークのない自由帳

有益と無益の境界例

SQL -PRIMARY KEYとUNIQUE制約の違いについて-

Primary Key(主キー)もUnique制約も「一意性」を設定して、データの整合性を高める点では一致しています。
「なにがちゃうねん」と思ったので調べてみました。

PRIMARY KEY

PRIMARY KEY(主キー)とは
Table内で行データを識別するために1つだけ設定できる、重複した値を許さないフィールド
のことです。
わかりやすいようでわかりにくい。

通常ユーザのデータ(名前や性別、年齢など)は行に格納されています。
それをかんたんに識別するために用いる「ID」などの通し番号がPRIMARY KEYに設定されることが多いです。

f:id:Mantra:20180321212639p:plain
http://www.teach-ict.com/as_a2_ict_new/ocr/AS_G061/315_database_concepts/terminology/miniweb/pg10.htm

PRIMARY KEYはあくまでTable内で1つなので、Table内での一意性を高めています。

UNIQUE制約

UNIQUE制約は
重複した値を許さないフィールド
のことです。
PRIMARY KEYと明らかに違う点は、説明が短いことです。

つまり「Table内で1つだけ設定できる」という条件がありません。

「行データを識別する必要はないけど、重複はノーセンキュー」といった場合に役立ちます。

f:id:Mantra:20180321212645p:plain
https://www.sitesbay.com/sql/sql-unique-constraint

また、PRIMARY KEYとは違いNULLが許容されます。
NULLの扱い自体は他の値と同じでフィールド内に1度しか許されません。

まとめ

両方IDなどに用いるものの使用する目的によって異なる、ということがわかりました。

PRIMARY KEY:行データを特定するために一意性を持たせる
UNIQUE制約:重複してほしくないデータ(フィールド)に一意性を持たせる

しかし主キーって発音が可愛いですよね、「しゅきー」って。

今回参考にしたページ

www.epano-school.com

PRIMARY KEY 制約

UNIQUE 制約と CHECK 制約 | Microsoft Docs