SakuraWi - BLog

WEBエンジニア。聴いたお話をまとめておく倉庫的な。スタックストックスタック!

ナチュラルキーとサロゲートキー


ナチュラルキーとサロゲートキーについて書きます。

プライマリーキーを理解する

プライマリーキーとは、テーブルの中のレコードを特定するためのキーです。

ようはそのキーがわかれば、レコードを1行特定することができるというものです。

プライマリーキーは複数のカラムを対象にしているケースもあれば、一つのキーである場合があります。

ナチュラルキー

ナチュラルの語源は、人間が自然に認識できる、という意味でナチュラルキーという名前がついています。

連番の数値ではなくて、意味があり、一意に特定できるカラムになります。

プライマリーキーが連番のidなどではなく、いくつかの意味が含まれるカラムや特定可能カラムの場合はナチュラルキーと呼びます。

例えば, メールアドレスなどです。

サロゲートキー

そのテーブルのidといったように、連番の数値などがプライマリーキーとなっているときのキーをサロゲートキーといいます。 テーブルに関係のない数値でテーブルのレコードが特定できる場合にこのような名前で呼びます。 Ruby on Railsにおけるテーブルは基本的にサロゲートキーですね。

なぜrailsサロゲートキーか?

Ruby on Railsはwebに特化したフレームワークといえます。 webのリソースを考慮した場合に、レコードを特定するためにより少ないクエリで特定できる方が利便性が高いはずで、 そのためにRuby on Railsではサロゲートキーを採用していると考えられます。

/users/:id/editといったURLを使う時に考えて見るとわかりやすいかと思います。 プライマリーキーが3つも必要出会った場合に、URLが大変面倒なことにになっちゃいますよね。