SakuraWi - BLog

みんなのウェディングのエンジニア。聴いたお話をまとめておく倉庫的な。スタックストックスタック!

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


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

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

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

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

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

ナチュラルキー

ナチュラルの語源は、人間が自然に認識できる、という意味でナチュラルキーという名前がついています。 プライマリーキーが連番のidなどではなく、いくつかのキーや特定可能カラムが存在するときはナチュラルキーと呼びます。

例えば、name, birthdayなどです。

サロゲートキー

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

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

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

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