サロゲートキー 【surrogate key】 代理キー / 代替キー / 代用キー
概要
サロゲートキー(surrogate key)とは、データベースのテーブルの主キーとして、自動割り当ての連続した通し番号のように、利用者や記録する対象とは直接関係のない人工的な値を用いること。また、そのために設けられた列のこと。リレーショナルデータベースではテーブルの行を一意に識別するために、列の中から「主キー」を選択する必要がある。主キーの値は行の識別に用いるため、他の行と重複があってはならず、かつ値が必ず存在しなければならない(NULL値などは許されない)という制約がある。
テーブルに記録される列の中に、あらかじめ必ずそのような条件を満たすと決まっているものが存在するならそれを主キーに設定することもあるが(これをナチュラルキー、自然キーという)、人間の扱うデータは重複や欠落も多く、後から事情や状況が変わることもあるため、どの項目も主キーにふさわしくない場合も少なくない。
そのような場合に、キーとして使うためだけに、重複も欠落もないことが保証される識別符号を書き入れる専用の列を用意し、これを主キーに設定したものをサロゲートキーという。よく用いられるのは「シリアル型」「オートナンバー型」などと呼ばれる、システムが自動的に連番を生成するデータ型で、レコードが追加されるたびに値を1だけ加算して新しいレコード用の値とする。
サロゲートキーの訳語としてよく「代理キー」が用いられるが、これは「候補キー」(candidate key)のうち主キーに選ばれなかった “alternate key” の訳語を意味することもある。その場合はサロゲートキーの訳語として「代替キー」「代用キー」などが用いられる。
(2024.8.20更新)