どうも!ひよこSE(@PiyoOct)です。
主キーって何?データベースで出てきたんだけど・・・。
ひとことでわかりやすく言えば、「他と重複することがない情報」が主キーです。
「他と重複することがない情報」というのは、たとえば社員番号とか学生番号のように、個人が特定できるもの。「データが特定できるもの」と言った方がいいかもですね。
あるいは、パソコンの型番のように、具体的な製品名やモデルを特定できたりする情報です。
「何かを特定するための情報だから他と重複することがないし空(null)になることもない」と考えれば、主キーはイメージしやすいかと(-_-;)。
主キーとは他と重複することがない情報のこと
主キーとは他と重複することがない情報のことです。
もう少し掘り下げると、ポイントは3つあります。
- 主キーの個数は1つでも、複数の情報の組み合わせでもよい
- そのうえで、必ずデータが1つに特定できること
- 主キーは空(null)でないこと
主キーの個数は1つでも、複数の情報の組み合わせでもよい
主キーの個数は、1つでなくてもいいです。
例えば・・・
- 学生番号なり社員番号で、個人を特定する
- 型番でパソコンの製品名を特定する
は、1つの情報でデータを特定しようとしているので主キーは、1つ。
主キーの個数が複数ある例は、
- IDとパスワードでログインする
のように、「ID」と「パスワード」の2つを使って、ユーザを特定しています。
難しかったら、「主キーになる情報は何個でもいいんだなぁ~」くらいでおっけいです。
そのうえで、必ずデータが1つに特定できること
主キーになる情報は、1つだろうが2つ以上だろうが、何個でもいいです。
肝心なのは、「主キーを使えばデータが1つに特定できること」です。
反対を言えば、主キーを使ってもデータが2つ以上になることはありえないです。
1つの学生番号に対して、2人以上の名前が出てきたら怖い!
あとは、「ID」と「パスワード」を入力して複数のユーザが出てきたら、ログイン情報の意味がないですよね(´▽`*)。
主キーは空(null)でないこと
それと、もう一つ肝心なのは、主キーは空(null)でないことです。
学生番号が空?
・・・ありえないですよね(´▽`*)。
ある学生の学生番号が空だったら、その人をどうやって探すんだ?って話です。
「NOT NULL制約」とか「NULLでないこと」って言ったりもしますが、同じ意味です。
データベースの主キー制約も覚えておく
主キーを覚えたからには、ついでに「主キー制約」というのも、合わせて覚えておくとよきかと。
主キー制約って?
「主キーと決めたデータは、主キーの条件を満たさないとダメだよ~」的な制約です。
データベースにデータを保存するときに主キー制約は出てくる
「主キー制約」といえば、データを入れる箱や入れ物を表すデータベースで出てきます。
データベースにデータを保存するとき。
主キーと決めたデータについて、先ほど説明した条件を満たしている必要があります。
- 主キーの個数は1つでも、複数の情報の組み合わせでもよい
- そのうえで、必ずデータが1つに特定できること
- 主キーは空(null)でないこと
主キー制約に違反するとデータベースのエラーになる
データベースにデータを保存するときに、「主キーにしたなら、その条件は守ってね」というのが主キー制約。
主キー制約に違反すると、エラーとなってデータは保存されません。
【関連記事】「一意制約に反しています」とは?主キーが重複してる状態
もし、主キーである学生番号で、同じ学生番号のデータが2つ入ってきたら。
言い換えれば、太郎くんと花子ちゃんが同じ学生番号だったら、データベースは
学生番号でどうやって、2人は区別すればいいねん。
保存できんぞ、こんなデータ!
とツッコミを入れます。
データベースは、さじを投げて、データを保存するのをやめました。
「主キー制約に違反している状態」となって、エラーになります。
学生番号がnullだった場合も同様ですね(´▽`*)。
まとめ:他と重複しないし空であることがないのが主キー
主キーときたら、「他と重複することがなくて、空になることもない情報」です。
データベースのお話で出てきます。
主キー(学生番号とか)を使えば、必ずデータを一つに特定できます。
もし、主キーがダブっているデータを登録・保存しようとしたら、「主キー制約違反」でエラーになるくらいについでに覚えておくと良きかと思います(-_-;)。
コメント