主キー設計と代理キー

多数の属性から構成される複合キーを主キーにすると、外部キー参照時の結合条件が複雑化し、インデックスサイズや開発工数が増大します。これを解決するため、業務的な意味を持たない連番(シーケンス番号や自動採番列)を新設して主キーとし、元の複合キーを代理キー(サロゲートキー)として扱うのが適切な設計です。なお、元の複合キーには一意性制約(UNIQUE制約)を付与してデータの整合性を保ちます。 主キーを構成する一部の属性だけを主キーとし、他を外部キーにしても、エンティティの一意性を保証できなくなります。 主キーから外した残りの属性を代替キー(ユニークキー)とするだけでは、元の一意性判定が正しく行えず、根本的な解決になりません。 主キーを新設した場合、元の複合キーは代替キー(一意制約)とすべきであり、外部キーにするのは誤りです。

あるエンティティを関係データベース上に実装しようとしたとき,その主キーが多くの属性から構成される複合キーとなることが分かった。主キーとして扱う属性を少なくして扱いやすくしたい。この対応として,適切なものはどれか。

出典令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問5
ア
複合キーを構成する属性のうち,エンティティの性格を最もよく表している一つの属性を主キーとし,残りの属性を外部キー(foreign key)にする。
イ
複合キーを構成する属性のうち,エンティティの性格を最もよく表している一つの属性を主キーとし,残りの属性を代替キー(alternate key)とする。
ウ
連番などを値としてとる列を新たに設けて主キーとし,複合キーの代理キー(surrogate key)とする。
エ
連番などを値としてとる列を新たに設けて主キーとし,複合キーを外部キー(foreign key)にする。