[解決済み] プライマリーキーとサロゲートキーの違いは何ですか?
2022-03-07 11:06:31
質問
いろいろとググってみたのですが、具体的な例を挙げてのわかりやすい答えが見つかりませんでした。
何か例があればより助かります。
どのように解決するのですか?
主キーは、テーブル内のレコードを一意に識別するために選択するユニークなキーです。 なぜなら、レコードを更新または削除する必要がある場合、そのレコードを一意に識別する方法を知っておく必要があるからです。
サロゲートキーとは、人工的に生成されたキーのことです。 これは、レコードに自然なキーがない場合に便利です (たとえば
Person
同じ日に生まれた二人が同じ名前である可能性があるからです。また、ログのレコードでは、同じタイムスタンプを持つ二つのイベントが発生する可能性があるからです。) ほとんどの場合、自動的に増加するフィールドの整数値として、あるいはレコードごとに自動的に生成されるGUIDとして実装されています。 ID番号はほとんどの場合サロゲートキーです。
しかし、主キーと違って、すべてのテーブルに代理キーが必要なわけではありません。 アメリカの州を列挙したテーブルがあったとして、その州にID番号をつける必要はない。 州の略称を主キーにすればいいのです。
サロゲートキーの主な利点は、ユニークであることを簡単に保証できることです。 一方、デメリットは、意味を持たないことです。 例えば、quot;28" が Wisconsin であることに意味はありませんが、 Address テーブルの State カラムに 'WI' があれば、State テーブルでどの州であるかを調べるまでもなく、どの州のことを言っているのかがわかります。
関連
-
[解決済み】Athena: スケールファクターでリソースを使い果たすクエリ
-
[解決済み】sys.dm_exec_sql_textはどのように機能するのでしょうか?
-
[解決済み】一括読み込みデータ変換エラー(切り捨て)
-
[解決済み] SQLサーバーで文字列をsmalldatetimeデータ型に変換する際、変換に失敗しました(静的値を除く)。
-
[解決済み] UNIONとUNION ALLの違いは何ですか?
-
[解決済み] varcharとnvarcharの違いは何ですか?
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] SQL Server にテーブルが存在するかどうかを確認する
-
[解決済み] JOINとINNER JOINの違いについて
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】''付近の構文が正しくない
-
[解決済み】Excelに合体的な関数はありますか?
-
[解決済み】警告。Aqua Data Studioの集約や他のSET操作でNull値が排除される。
-
[解決済み] pg_restoreです。[archiver] 入力ファイルはテキスト形式のダンプであるように見えます。psql を使用してください。
-
[解決済み] ORA-01790: 式は、対応する式と同じデータ型でなければならないエラーが発生するケース
-
[解決済み] "このSqlTransactionは完了しました。もう使用できません。"...設定エラー?
-
[解決済み] SQLエラーです。ORA-00922: オプションがないか無効です。
-
[解決済み] FROM のサブクエリにはエイリアスが必要です。
-
[解決済み] MySQLのON句の不明なカラム
-
[解決済み] 1行目4列目(年)の一括読み込みデータ変換エラー(型の不一致または指定したコードページに対して無効な文字)