SE基本情報に出るIT用語

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

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

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

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

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

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

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

スポンサーリンク

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

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

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

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

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

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

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

例えば・・・

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

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

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

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

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

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

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

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

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

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

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

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

主キーは空でないこと

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

学生番号が空?

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

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

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

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

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

主キー制約って?

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

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

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

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

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

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

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

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

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

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

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

学生番号でどうやって、2人は区別すればいいねん。保存できんぞ、こんなデータ!

とツッコミを入れます。

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

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

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

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

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

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

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

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

スポンサーリンク

コメント

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