令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問5
テクノロジ/データベースあるエンティティを関係データベース上に実装しようとしたとき,その主キーが多くの属性から構成される複合キーとなることが分かった。主キーとして扱う属性を少なくして扱いやすくしたい。この対応として,適切なものはどれか。
出典:令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問5
- ア複合キーを構成する属性のうち,エンティティの性格を最もよく表している一つの属性を主キーとし,残りの属性を外部キー(foreign key)にする。
- イ複合キーを構成する属性のうち,エンティティの性格を最もよく表している一つの属性を主キーとし,残りの属性を代替キー(alternate key)とする。
- ウ連番などを値としてとる列を新たに設けて主キーとし,複合キーの代理キー(surrogate key)とする。
- エ連番などを値としてとる列を新たに設けて主キーとし,複合キーを外部キー(foreign key)にする。
正解:ウ
解説
複合キーを構成する属性が多く扱いにくい場合,連番などの値をとる新たな列を追加してそれを主キー(代理キー,surrogate key)とすることで,主キーとして扱う属性の数を減らすことができます。この場合,元の複合キーを構成していた属性群は,一意性制約を課す代替キーとして保持し,重複データの発生を防ぎます。
選択肢ごとの解説
- ア誤り。複合キーの属性の一つだけを主キーにすると,その属性だけでは一意性が保証されない場合があり,残りの属性を外部キーとするのはエンティティ内部の属性の扱いとして不適切です。
- イ誤り。同様に,複合キーの一部の属性のみを主キーとする方法では,一意性が損なわれるおそれがあります。
- ウ正しい。連番などの新しい列を主キー(代理キー)とし,元の複合キーは一意性を保証する代替キーとして扱うことで,主キーとして扱う属性を少なくできます。
- エ誤り。新設した連番の列を主キーとする点は適切ですが,複合キーを外部キーとして扱うのは,他の表への参照を表す外部キーの用途として不適切です。