「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

「自然キー」と「人口キー」の違い

スポンサーリンク

予備知識


用語意味
データベースデータがそれっぽい感じに入っている箱。データのまとまり
主キーデータベースのデータを一意に識別するための項目
ナチュラルキー意味を持つ項目を使った主キー
サロゲートキー機械的に連番を振った主キー

それぞれの用語の意味


用語意味
自然キーナチュラルキーのこと。意味を持つ項目を使った主キー
人工キーサロゲートキーのこと。機械的に連番を振った主キー

似ているところ


どちらもデータベースの主キーです。


違うところ


キー自体が項目としての意味を持つかが違います。

自然キーは項目としての意味を持ちます。
元々あった項目を主キーとして使います。

人工キーは項目としての意味を持ちません。
意味のない連番を主キー用に別途割り振ります。

例えば、以下のデータが あったとしましょう。

[出席番号、名前、性別、血液型]
1番、相川、男、O型
2番、合田、男、B型
3番、伊藤、男、A型
4番、宇野、男、O型
  ・
  ・
  ・
1番、伊藤、女、A型
2番、井上、女、B型
  ・
  ・


このデータは出席番号+性別で一意に特定できます。

[出席番号、名前、性別、血液型]
1番、相川、、O型
2番、合田、、B型
3番、伊藤、、A型
4番、宇野、、O型
  ・
  ・
  ・
1番、伊藤、、A型
2番、井上、、B型
  ・
  ・


「よし!じゃあ、出席番号+性別を主キーってことにしようぜー!」が自然キーです。
主キーとなる項目である「出席番号」と「性別」にも意味がありますよね。

一方で、それぞれのデータに項目「No.」を追加して、一意に特定できるようにすることもできます。

[出席番号、名前、性別、血液型、No.]
1番、相川、男、O型、1
2番、合田、男、B型、2
3番、伊藤、男、A型、3
4番、宇野、男、O型、4
  ・
  ・
  ・
1番、伊藤、女、A型、19
2番、井上、女、B型、20
  ・
  ・


のように、項目を追加してあげるのです。
この「主キー用に追加した項目(特に意味のない連番)を主キーにしようぜー!」が人工キーです。
項目「No.」自体は行を特定するためにわざわざ用意した項目です。
「出席番号」などと違って項目自体には意味がありませんよね。


個人的な使い分け


特に制約がなければ、自然キーを使います。
フレームワークなどの制約がある場合や、後々がっつりと変更が入りそうな場合のみ、しぶしぶ人工キーを使います。

あくまで好みの問題ですが

(1)主キーに設定した項目は個別にインデックスを設定しなくてよい
(2)主キーに設定した項目は個別に制約をかけなくてよい
(3)パッと見でデータ構造が把握しやすい


の理由から、自然キーの方が好きなのです。
※特に(3)の理由が大きいです。

「拡張性を考えると人工キーの方が使い勝手が良い」という理屈も分かりますけどね。
個人的には、論理的に入ってくるはずのないデータは物理的にも入らないようにしておく方が好みです。

あっ、そうそう。

たまーに、自然キー派の人と人工キー派の人が喧嘩しているのを見かけますが、論点が噛みあっていないことが多いように感じます。
どちらが良い・悪いではなく、何を重視するかで一長一短があると思います。


スポンサーリンク
書籍画像037
書籍画像058


書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本
サイバー忍者入門 忍者・スパイ・軍隊・ハッカーに学ぶ フルスタック・ハッキング
「技術書」の読書術 達人が教える選び方・読み方・情報発信&共有のコツとテクニック