SE基本情報に出るIT用語

主キーとは?他と重複することがない情報のこと

どうも!ひよこSE(@PiyoOct)です。

主キーって何?データベースで出てきたんだけど・・・。

ひとことでわかりやすく言えば、「他と重複することがない情報」が主キーです。

「他と重複することがない情報」というのは、たとえば社員番号とか学生番号のように、個人が特定できるもの。「データが特定できるもの」と言った方がいいかもですね。

あるいは、パソコンの型番のように、具体的な製品名やモデルを特定できたりする情報です。

何かを特定するための情報だから他と重複することがないし空(null)になることもない」と考えれば、主キーはイメージしやすいかと(-_-;)。

スポンサーリンク

主キーとは他と重複することがない情報のこと

主キーとは他と重複することがない情報のことです。

主キー制約とは他とかぶることがない

もう少し掘り下げると、ポイントは3つあります。

  1. 主キーの個数は1つでも、複数の情報の組み合わせでもよい
  2. そのうえで、必ずデータが1つに特定できること
  3. 主キーは空(null)でないこと

主キーの個数は1つでも、複数の情報の組み合わせでもよい

主キーの個数は、1つでなくてもいいです。

例えば・・・

  • 学生番号なり社員番号で、個人を特定する
  • 型番でパソコンの製品名を特定する

は、1つの情報でデータを特定しようとしているので主キーは、1つ。

主キーの個数が複数ある例は、

  • IDとパスワードでログインする

のように、「ID」と「パスワード」の2つを使って、ユーザを特定しています。

難しかったら、「主キーになる情報は何個でもいいんだなぁ~」くらいでおっけいです。

そのうえで、必ずデータが1つに特定できること

主キーになる情報は、1つだろうが2つ以上だろうが、何個でもいいです。

肝心なのは、「主キーを使えばデータが1つに特定できること」です。

反対を言えば、主キーを使ってもデータが2つ以上になることはありえないです。

1つの学生番号に対して、2人以上の名前が出てきたら怖い!

あとは、「ID」と「パスワード」を入力して複数のユーザが出てきたら、ログイン情報の意味がないですよね(´▽`*)。

主キーは空(null)でないこと

それと、もう一つ肝心なのは、主キーは空(null)でないことです。

学生番号が空?

・・・ありえないですよね(´▽`*)。

ある学生の学生番号が空だったら、その人をどうやって探すんだ?って話です。

「NOT NULL制約」とか「NULLでないこと」って言ったりもしますが、同じ意味です。

スポンサーリンク

データベースの主キー制約も覚えておく

主キーを覚えたからには、ついでに「主キー制約」というのも、合わせて覚えておくとよきかと。

主キー制約って?

「主キーと決めたデータは、主キーの条件を満たさないとダメだよ~」的な制約です。

データベースにデータを保存するときに主キー制約は出てくる

「主キー制約」といえば、データを入れる箱や入れ物を表すデータベースで出てきます。

データベースにデータを保存するとき。

主キーと決めたデータについて、先ほど説明した条件を満たしている必要があります。

  1. 主キーの個数は1つでも、複数の情報の組み合わせでもよい
  2. そのうえで、必ずデータが1つに特定できること
  3. 主キーは空(null)でないこと

主キー制約に違反するとデータベースのエラーになる

データベースにデータを保存するときに、「主キーにしたなら、その条件は守ってね」というのが主キー制約

主キー制約に違反すると、エラーとなってデータは保存されません。

【関連記事】「一意制約に反しています」とは?主キーが重複してる状態

もし、主キーである学生番号で、同じ学生番号のデータが2つ入ってきたら。

言い換えれば、太郎くんと花子ちゃんが同じ学生番号だったら、データベースは

学生番号でどうやって、2人は区別すればいいねん。

保存できんぞ、こんなデータ!

とツッコミを入れます。

データベースは、さじを投げて、データを保存するのをやめました。

「主キー制約に違反している状態」となって、エラーになります。

学生番号がnullだった場合も同様ですね(´▽`*)。

まとめ:他と重複しないし空であることがないのが主キー

主キーときたら、「他と重複することがなくて、空になることもない情報」です。

データベースのお話で出てきます。

主キー(学生番号とか)を使えば、必ずデータを一つに特定できます。

もし、主キーがダブっているデータを登録・保存しようとしたら、「主キー制約違反」でエラーになるくらいについでに覚えておくと良きかと思います(-_-;)。

スポンサーリンク

▼この記事がいいと思ったら、下の画像をクリックしてくれたら励みになります!

にほんブログ村 IT技術ブログ システムエンジニアへ

コメント

タイトルとURLをコピーしました