1. ホーム
  2. sql

[解決済み] プライマリーキーとサロゲートキーの違いは何ですか?

2022-03-07 11:06:31

質問

いろいろとググってみたのですが、具体的な例を挙げてのわかりやすい答えが見つかりませんでした。

何か例があればより助かります。

どのように解決するのですか?

主キーは、テーブル内のレコードを一意に識別するために選択するユニークなキーです。 なぜなら、レコードを更新または削除する必要がある場合、そのレコードを一意に識別する方法を知っておく必要があるからです。

サロゲートキーとは、人工的に生成されたキーのことです。 これは、レコードに自然なキーがない場合に便利です (たとえば Person 同じ日に生まれた二人が同じ名前である可能性があるからです。また、ログのレコードでは、同じタイムスタンプを持つ二つのイベントが発生する可能性があるからです。) ほとんどの場合、自動的に増加するフィールドの整数値として、あるいはレコードごとに自動的に生成されるGUIDとして実装されています。 ID番号はほとんどの場合サロゲートキーです。

しかし、主キーと違って、すべてのテーブルに代理キーが必要なわけではありません。 アメリカの州を列挙したテーブルがあったとして、その州にID番号をつける必要はない。 州の略称を主キーにすればいいのです。

サロゲートキーの主な利点は、ユニークであることを簡単に保証できることです。 一方、デメリットは、意味を持たないことです。 例えば、quot;28" が Wisconsin であることに意味はありませんが、 Address テーブルの State カラムに 'WI' があれば、State テーブルでどの州であるかを調べるまでもなく、どの州のことを言っているのかがわかります。