IPA公式正解:ウ 連番などを値としてとる列を新たに設けて主キーとし,複合キーの代理キー(surrogate key)とする。
※ 正解はIPA公表の解答です。解説は当サイトが生成AIを用いて作成しています。誤りにお気づきの場合はお問い合わせください。
【解説】正解は選択肢【ウ】です。多くの属性から成る複合キー(自然キー)を簡素化する場合、シーケンスやオートインクリメントによる一意な連番列(サロゲートキー/代理キー)を新たに追加して主キーとし、元の複合キーには一意性制約を設定するのが適切な設計手法です。
【詳細解説】■ 本問の核心・解法のポイント
業務的な意味を持つ複数の属性を組み合わせた「複合主キー(自然キー/ナチュラルキー)」は、外部キー結合時に多くの列を参照する必要があり、SQLの複雑化やインデックスサイズの肥大化、結合性能の低下を招くことがあります。これを解消するため、システム的に一意性を保証する単一の連番列などを主キーとして採用します。この人為的なキーを「代理キー(サロゲートキー)」と呼びます。
・各選択肢の徹底解説:
・ア:複合キーを構成する一部の属性だけではタプルを一意に識別できないため、主キーの要件(一意性)を満たせなくなります。また、残りの属性を外部キーとする理由も不適切です。
・イ:アと同様に、単一属性では一意性を特定できないため主キーにも代替キーにもできません。
・ウ:【選択肢ウ★】新たに連番列等を設けて主キーとし、元の複合キーを代理する「代理キー(サロゲートキー)」とする設計は非常に一般的かつ適切です(元の自然キーには通常UNIQUE制約を付与します)。
・エ:複合キー自体は自テーブルの属性群であり、他テーブルの主キーを参照するわけではないため外部キーにはなりません。
よって正解はウです。