外部キー
データベースのキーだよ
「この項目に入れる値は、こっちの項目から選んで入れてね」な制約のある項目だよ
スポンサーリンク
簡単に書くよ
外部キー(読:ガイブキー 英:foreign key)とは
データベースの「この項目には好き勝手な値を入れちゃダメだよ。こっちから選んで入れなさいね」な制約(が付いている項目)のこと
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として
・データベース
・テーブル
・キー
について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
データベースは「データを入れておく箱」です。
ただし「データベース」という用語は、実際には もう少し複雑な概念です。
データを入れておく箱そのものは「テーブル」と言います。
とりあえず
データベースの話において、実際にデータを入れておく箱がテーブル
と覚えてください。
キーは「データベース(のテーブル)において何かのカギになりそうな項目」です。
データベース(のテーブル)は表形式のイメージで表現されるのが一般的です。
この表において、何か特別な意味を持たされた項目を「キー」や「キー項目」と呼びます。
以上を踏まえて
「この項目に入れる値は、こっちの項目から選んで入れてね」な制約(が付いている項目)
が「外部キー」です。
例えば、そうですね。
ピヨピヨ学校のピヨクラスのクラス名簿は以下のような内容です。
| 出席番号 | 名前 | 性別 |
|---|---|---|
| 男子1番 | ピヨ太 | 男 |
| 男子2番 | ピヨ次郎 | 男 |
| 男子3番 | ピヨ三郎 | 男 |
| 男子4番 | ピヨ四郎 | 男 |
| 男子5番 | ピヨ五郎 | 男 |
担任の先生は始業式の日に1年分の日直の担当を決めました。
きっちりした先生ですね。
その内容は以下の通りです。
| 日付 | 日直の出席番号 |
|---|---|
| 4月1日 | 男子1番 |
| 4月2日 | 男子2番 |
| 4月3日 | 男子3番 |
| 4月4日 | 男子4番 |
| 4月5日 | 男子5番 |
ここで ちょっと考えてみてください。
先生が「日直の出席番号」に書いた出席番号はクラス名簿の「出席番号」に載っている内容です。
当たり前ですよね。
他のクラスの人や部外者に日直をやらせるわけにはいきません。
「日直の出席番号」に書く内容はクラス名簿の「出席番号」から選んで入れることになります。
さて、日直も決まって、めでたしめでたし……と思っていたら生徒たちからブーイングが出ました。
「日直くらい自分たちで好きに決めさせろー!」と暴動が起こったのです。
仕方がありませんね。
先生は日直の予定を一旦、白紙にしました。
| 日付 | 日直の出席番号 |
|---|---|
| 4月1日 | |
| 4月2日 | |
| 4月3日 | |
| 4月4日 | |
| 4月5日 |
そして、生徒たちに好きに決めさせました。
その結果が以下の内容です。
| 日付 | 日直の出席番号 |
|---|---|
| 4月1日 | 男装女子100番 |
| 4月2日 | せんせー |
| 4月3日 | なし |
| 4月4日 | クジで決める |
| 4月5日 | なし |
あらら、みなさん好き放題なことを書いていますね。
ここで先生がキレました。
このガキンチョども!
日直の出席番号はクラス名簿の出席番号から選んで書け!!
と大激怒です。
この話において先生が言った「日直の出席番号はクラス名簿の出席番号から選んで書け!!」に相当する制約(が付いている項目)が外部キーです。
「ここの値は、こっちから選んで入れろ」制約(が付いている項目)です。
外部キーは、ちょっと小難しい言い方をすると
依存関係にある2つの表を結びつける
ときに用意します。
別に「絶対に付けないとダメだよ!」な制約でもありませんけどね。
間違い防止と性能面でのうんちゃらがアレで付けることが多かったりします。
一言でまとめるよ
まぁ「外部キー」って単語が出てきたら「『ここに入れる値は、こっちから選んで入れなさい』な制約(が付いている項目)なんだな~」と お考えください。






