【なちゅらるきー】

ナチュラルキー とは?

公開:
💡 名前で呼ぶか、番号で呼ぶか——データベースのアイデンティティ問題
📌 このページのポイント
ナチュラルキー 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)」持っている属性をキーにするから「ナチュラルキー」だよ
← 用語集にもどる