【なちゅらるきー】

ナチュラルキー とは?

💡 名前で呼ぶか、番号で呼ぶか——データベースのアイデンティティ問題
📌 このページのポイント
ナチュラルキー vs サロゲートキー ナチュラルキー users テーブル email (PK) name tanaka@ex.com 田中太郎 sato@ex.com 佐藤花子 ○ 値に意味がある × 変更時に影響大 × 長い文字列 サロゲートキー users テーブル id (PK) email name 1 tanaka@... 田中太郎 2 sato@... 佐藤花子 ○ 変更に強い ○ 短くて高速 × 値に意味がない
ナチュラルキーとサロゲートキーの比較
ひよこ ひよこ

ナチュラルキーって、自然派のキーってこと?

ペンギン先生 ペンギン先生

近いかも!たとえば社員データベースで「社員番号」を主キーにするのがナチュラルキーだよ。データ自体が持っている意味のある値をそのままキーに使うんだ。

ひよこ ひよこ

メールアドレスとかもそうなの?

ペンギン先生 ペンギン先生

そうだね。「tanaka@example.com」を見ればどのユーザーか分かるでしょ? でもメールアドレスは変更される可能性があるから、ナチュラルキーの弱点でもあるんだ。

ひよこ ひよこ

変更されるとどうなるの?

ペンギン先生 ペンギン先生

その値を参照している他のテーブルも全部更新しなきゃいけなくなる。注文テーブル、お気に入りテーブル……芋づる式に影響が広がるんだよ。

ひよこ ひよこ

じゃあナチュラルキーって使わない方がいいの?

ペンギン先生 ペンギン先生

一概にはそう言えないよ。国コード「JP」や通貨コード「USD」みたいに変更されない値なら、ナチュラルキーの方がJOINしなくても意味が分かって便利なんだ。

ひよこ ひよこ

設計センスが問われるところなんだね!

ペンギン先生 ペンギン先生

まさに。実務では「この値は将来変わらないか?」を判断基準にして、ナチュラルキーとサロゲートキーを使い分けるのがベストプラクティスだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ナチュラルキー」って出てきたら「データ自体の意味ある値を主キーに使うこと」と思えればだいたいOK!
📖 おまけ:英語の意味
「Natural Key」 = 自然キー
💬 データが「自然に(natural)」持っている属性をキーにするから「ナチュラルキー」だよ
← 用語集にもどる