プライマリキー制約
データベースの項目に付ける制約だよ
その項目をプライマリキーにするよ
中身が空なデータと一意ではないデータが入れられなくなるよ
簡単に書くよ
プライマリキー制約(読:プライマリキーセイヤク 英:primary key constraint)とは
「この項目をプライマリキー
(データの出席番号として使われる項目)にしますよ」制約のこと。
もう少し具体的に書くと
データベースの項目に付ける制限(制約)のひとつ
であり
「この項目をプライマリキーとして使うから、プライマリキーの条件を満たさないデータは入れられないようにするよ」な制約のこと
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として
・データベース
・テーブル
・キー
・レコード
・一意
・プライマリキー
について結構ガッツリ説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
データベースは「データを入れておく箱」です。
ただし「データベース」という用語は、実際には もう少し複雑な概念です。
データを入れておく箱そのものは「テーブル」と言います。
とりあえず
データベースの話において、実際にデータを入れておく箱がテーブル
と覚えてください。
キーは「データベース(のテーブル)において何かのカギになりそうな項目」です。
データベース(のテーブル)は表形式のイメージで表現されるのが一般的です。
この表において、何か特別な意味を持たされた項目を「キー」や「キー項目」と呼びます。
レコードは行列で表現される表の「行」です。
ただし、今回は「データベースに入っているデータ(行)」と解釈してください。
繰り返しになりますが、データベース(のテーブル)は表形式のイメージで表現されるのが一般的です。
例えば以下のような形です。
| 名前 | 性別 | 年齢 |
|---|---|---|
| ピヨ太 | 男 | 成人済み |
| ピヨ子 | 女 | 永遠の17歳 |
| ピヨ太ママ | 女 | 心は乙女 |
この表には、ピヨ太君、ピヨ子さん、ピヨ太ママの3人分のデータが入っています。
名前と性別と年齢のセットで1行です。
この表におけるそれぞれの行、名前と性別と年齢のセットがレコードです。
さて、ここで考えてみてください。
1行には1人分のデータが入っています。
1行で1件のデータです。
そのため、データベース(のテーブル)にしまったデータそのものを指して「レコード」と表現する場合も あります。
例えば、データベース(のテーブル)にデータを入れることを指して「レコードを作る」と言ったりします。
あるいは「2件以上のデータ」を意図して「複数レコード」と表現する場合も あります。
基本的には「行」の意味ですけどね。
「データ1件」を意図する場合もあるのです。
一応、頭の片隅にでも置いておいてあげてください。

一意の意味は「重複しないよ~」です。
すべてのデータがオンリーワンだったら「一意である」と言えます。

プライマリキーは「データを一意に識別するために使われる項目」です。
「主キー」とも呼ばれます。
「一意に識別」とか書いてあると難しそうに見えますが、恐れる必要は ありません。
データの出席番号みたいなイメージです。

出席番号は生徒を特定するために使う番号です。
例えば、ピヨ太君の出席番号が「男子1番」でした。
ピヨ子さんは「女子2番」です。

おっと、大変です。
ピヨ太ママ先生から「男子1番!今すぐ職員室に来なさい!」と呼び出しが ありました。

出席番号が「男子1番」の生徒はピヨ太君ですよね。
出席番号を見れば、どの生徒を指しているか分かります。

それと同じです。
「プライマリキーの値が○○なデータ!」と言えば「あっ、このデータ(行、レコード)だな」と判断できるのです。

項目をプライマリキーとして使うには
1.中身が空ではない
2.中身が一意である
の条件を満たしている必要があります。
これも出席番号をイメージすると分かりやすいと思います。
出席番号が空だったら困りますよね。
「出席番号:(空)」なのか「出席番号:(未割当)」なのか判断できません。
だから
1.中身が空ではない
という条件があります。

また、同じ出席番号の人が2人以上いたら困りますよね。
「出席番号○○番の人!」と呼ばれたときに、どっちが呼ばれたか判断できません。
だから
2.中身が一意である
という条件があります。

以上を踏まえて
「この項目をプライマリキーとして使うから、プライマリキーとしての条件を満たさないデータは入れられなくするよ」な制約
が「プライマリキー制約」です。
「主キー制約」とも呼ばれます。

項目をプライマリキーとして使うには
1.中身が空ではない
2.中身が一意である
の条件を満たしている必要が ありました。
プライマリキー制約を付けると
1.中身が空ではない
2.中身が一意である
の条件を満たしているデータのみ入れられるようになります。
例えば、そうですね。
ピヨピヨカンパニーの社員名簿は以下の内容です。
| 社員番号 | 名前 | 趣味 |
|---|---|---|
| 1 | ピヨ太 | 昼寝 |
| 2 | ピヨ子 | おやつ |
| 3 | ピヨ太ママ | 内緒 |
社員名簿の項目は
1.社員番号
2.名前
3.趣味
の3つです。
この3つの項目のうち「社員番号」はプライマリキーとして使えます。
1.中身が空ではない
2.中身が一意である
の条件を満たしているからです。
「社員番号」は空になりません。
入社したときに必ず番号が割り当てられます。
また、割り当てられた番号は他の人とダブりません。
「社員番号『1』番の人」と言えばピヨ太君のことだと分かりますよね。
だから、プライマリキーとして使えます。
この「社員番号」項目にプライマリキー制約を付けました。
そうすると「社員番号」項目には
1.中身が空ではない
2.中身が一意である
の条件を満たすデータしか入れられなくなります。
例えば「社員番号」が「1」のデータを新しく作ろうとしても「もうあるよ!」と怒られてエラーになります。
ちなみに、プライマリキー制約を付けた項目には勝手にインデックスが貼られたりします。
そこら辺の あれやこれやは他のところで勉強してください。
一言でまとめるよ
まぁ「プライマリキー制約」って単語が出てきたら「『この項目をプライマリキー
(データの出席番号として使われる項目)にするよ』制約なんだな~」と お考えください。
おまけ
■訳してみるよ
「primary(プライマリ)」の意味は「最初の」とか「一番目の」とか「主要な」とかです。
「key(キー)」の意味は「鍵」とか「重要な」とかです。
「制約」は日本語ですね。
何となく くっつけると
「主要な鍵」制約
となります。
■検索してみる?






