auの日記

プログラミング初心者の日記。(auはハンドルネームです)

意味はないが意味を持たせるサロゲートキー

auです。

データベースを学んでいるときに、「サロゲートキー」という用語に出会いました。見ても全くイメージができなかったので調べてみました。

サロゲートキーとは

サロゲートキーとは、これ自体に意味のないキーだけど、別のキーに意味を持たせるためのキーです。

例えば、月曜日~日曜日がある場合、これはユニークなキーです。これを参照する際には

WHERE = "monday"

で指定します。

これでもできるのですが、

monday=1
tuesday=2
wednesday=3
thursday=4
friday=5
saturday=6
sunday=7

のように、曜日ごとに番号を振ることができます。この番号がサロゲートキーです。

これ単体では意味を持ちませんが、曜日を参照するためのキーとすれば、重要な意味を持ちます。

なぜサロゲートキーを用意するかというと、文字型やテキスト型などで参照するよりも、数値型で参照した方が速いのと、インクリメントナンバー(1ずつ上がっていく数字)になっているので、参照するときも簡単にできます。

ユニークキー(曜日)をユニークキー(数値)で参照するのでなんか変な感じですね・・・。