主キーとは(SQLアンチパターンより)
Bill Karwin 『SQLアンチパターン』 3.1より
目的は、すべてのテーブルが主キー(primary key)を持つこと
目的はid列を持つことではない
主キーは必須だが、id列は必須ではない
主キーは、テーブルのすべての行が一意であることを保証するもの
主キーは外部キー(foreign key)から参照されることで、テーブルの関連付けを行います
疑似キー(pseudo key)・代理キー(surrogate key)
ある対象領域をモデル化したテーブルに、その領域で意味を持たない人工的な値を格納するには、新たな列を追加しなければなりません。この列を主キーとして使用することで、他の属性列には重複を許可しながら、行を一意のものとして扱えるようになります。
サロゲートキー「自動割り当ての連続した通し番号のように、利用者や記録する対象とは直接関係のない人工的な値を用いる」 例:AUTO_INCREMENT・SERIAL
AUTO_INCREMENTを指定したid列、よく見る気がする
疑似キーは便利な機能です。ただし、それは主キーを宣言するための唯一の解決策ではないのです。