令和6年度 秋期 午前Ⅱ 問5
データベース設計
主キーに関する問題
あるエンティティを関係データベース上に実装しようとしたとき,その主キーが多くの属性から構成される複合キーとなることが分かった。主キーとして扱う属性を少なくして扱いやすくしたい。この対応として,適切なものはどれか。
- ア複合キーを構成する属性のうち,エンティティの性格を最もよく表している一つの属性を主キーとし,残りの属性を外部キー(foreign key)にする。
- イ複合キーを構成する属性のうち,エンティティの性格を最もよく表している一つの属性を主キーとし,残りの属性を代替キー(alternate key)とする。
- ウ連番などを値としてとる列を新たに設けて主キーとし,複合キーの代理キー(surrogate key)とする。
- エ連番などを値としてとる列を新たに設けて主キーとし,複合キーを外部キー(foreign key)にする。
答えと解説を見る
✓ これが正解ウ連番などを値としてとる列を新たに設けて主キーとし,複合キーの代理キー(surrogate key)とする。
解説
連番の列を新設して主キーにし、複合キーの代理キーにします。
代理キーは、業務上の意味を持たない連番などの値を新しい列として設け、それを主キーとして使う方法です。多くの属性から成る複合キーは、ほかの表から参照するときに外部キーも多くの列になり、扱いにくくなります。代理キーを主キーにすれば、1列で行を識別できるので参照も簡単になります。このとき、元の複合キーはデータの一意性を表す大事な情報なので、捨てずに一意性の制約を付けて代替キーとして残すのが一般的です。見分ける軸は、少ない属性で行を一意に識別できるかどうかです。元の複合キーのうち一つの属性だけで識別できるなら、そもそも複合キーにはなっていなかったはずだと考えると、他の選択肢を外せます。
ほかの選択肢はなぜ違うのか
- ア複合キーを構成する属性のうち,エンティテ…:複合キーの中の一つの属性だけでは、行を一意に識別できません。だから複数の属性を組み合わせた複合キーになっていたのであり、一つの属性を主キーにすると重複が生じます。残りを外部キーにする理由もありません。
- イ複合キーを構成する属性のうち,エンティテ…:一つの属性だけで行を一意に識別できないことは、主キーにすると重複が生じる点で前の選択肢と同じです。残りの属性も単独では一意にならないので、候補キーの一つである代替キーにはなれません。
- エ連番などを値としてとる列を新たに設けて主…:連番の列を主キーにする点は適切ですが、元の複合キーを外部キーにする点が違います。外部キーは他の表の主キーを参照するための属性で、複合キーは同じ表で行の一意性を表すので、残すなら代替キーです。
この問題の用語
- エンティティ情報の世界で管理の対象となる、人やものごとの一つひとつを指します。E-R図では、この対象と対象どうしの関連を組み合わせて表します。
- 関係データベースデータを表の形で持ち、表どうしを結びつけて扱う、最も広く使われているデータベース。データの定義や操作にはSQLを使います。
出典:令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問5
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問11:参照制約に関する問題(関係データベース)
- 令和6年度 秋期 午前Ⅱ 問3:ノード分割後のB^+木構造(関係データベース)
- 令和3年度 秋期 午前Ⅱ 問4:四つの表の関係を表すE-R図(エンティティ)
- 平成31年度 春期 午前Ⅱ 問5:四つの表の関係を表すE-R図(エンティティ)
- 平成29年度 春期 午前Ⅱ 問1(エンティティ)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)