とあるブログエントリで「ナチュラルキーを主キーにしてはいけない」という主張を見かけたのでこれに反論しておく。これはリレーショナルモデル的には明らかに間違った考えだからだ。 リレーショナルモデルにあるのはナチュラルキーだけリレーショナルモデルには「サロゲートキー(代理キー)」という概念はない。まずこの点に注意して頂きたい。サロゲートキーとは、データベースアプリケーション開発において実用上必要とされる機能であって、本質的には不要のものである。リレーショナルモデルでは、いわゆるナチュラルキーというものがあれば機能的には十分だからだ。 そのためにはまず「キー」という概念が何を指し示すかということについて正しく理解しなければならない。リレーショナルモデルではキーと呼ばれるものは候補キーとスーパーキーという2つの概念だけである。「タプル(≒行)の値を一意に決定することができる属性(≒カラム)の集合」の
![ナチュラルキーとサロゲートキーについての議論](https://cdn-ak-scissors.b.st-hatena.com/image/square/1946584c1109fd113f49a62abe33b19ded268448/height=288;version=1;width=512/https%3A%2F%2Flh6.googleusercontent.com%2F-Om_IligLd5c%2FTTT9MTGM31I%2FAAAAAAAAAfw%2FABg9hRZifTo%2Fs800%2Flogo.png)