戦国IT - 情報処理技術者試験の過去問対策サイト
お知らせお問い合わせ料金プラン

データベーススペシャリスト 2024年 午前205


問題文

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

選択肢

複合キーを構成する属性のうち、 エンティティの性格を最もよく表している一つの属性を主キーとし、 残りの属性を外部キー(foreign key)にする。
複合キーを構成する属性のうち、 エンティティの性格を最もよく表している一つの属性を主キーとし、 残りの属性を代替キー(alternate key)とする。
連番などを値としてとる列を新たに設けて主キーとし、 複合キーの代理キー(surrogate key)とする。(正解)
連番などを値としてとる列を新たに設けて主キーとし、 複合キーを外部キー(foreign key)にする。

複合キーの主キー簡素化方法【午前2 解説】

要点まとめ

  • 結論:複合キーが多属性で扱いにくい場合は、連番などの代理キーを新設して主キーとするのが適切です。
  • 根拠:代理キーは単一属性で一意性を保証し、複雑な複合キーの管理負担を軽減します。
  • 差がつくポイント:外部キーや代替キーとの違いを理解し、代理キーの役割と利点を正確に把握することが重要です。

正解の理由

複合キーが多くの属性から構成されると、主キーとしての管理や参照が煩雑になります。
そこで「ウ」のように、連番などの単一属性の列を新たに設けて主キーとし、元の複合キーは代理キー(surrogate key)として扱う方法が最も適切です。
代理キーはシステム側で生成される一意の識別子であり、主キーの扱いやすさを大幅に向上させます。

よくある誤解

複合キーの一部を主キーにし、残りを外部キーや代替キーにするのは誤りです。
外部キーは他のテーブルの主キーを参照するためのキーであり、同じテーブル内の属性を外部キーにすることはありません。

解法ステップ

  1. 複合キーの属性数が多くて扱いにくいことを確認する。
  2. 主キーを単一属性に簡素化する必要性を認識する。
  3. 連番などの新しい列を設けて一意の値を割り当てる代理キーを考える。
  4. 代理キーを主キーに設定し、元の複合キーは代理キーとして保持する。
  5. 外部キーや代替キーの役割と違いを理解し、誤った使い方を避ける。

選択肢別の誤答解説

  • ア: 複合キーの一部を主キー、残りを外部キーにするのは誤り。外部キーは他テーブルの主キー参照用であり、同一テーブル内の属性に使わない。
  • イ: 複合キーの一部を主キー、残りを代替キーにするのは不適切。代替キーは主キー以外の候補キーであり、複合キーの一部を主キーにすること自体が問題。
  • ウ: 連番などの単一属性の列を新設し主キーとする代理キー方式は、複合キーの扱いを簡素化し最も適切。
  • エ: 連番を主キーにし、複合キーを外部キーにするのは誤り。外部キーは他テーブルの主キー参照用であり、同一テーブル内の複合キーを外部キーにできない。

補足コラム

代理キー(surrogate key)はシステムが自動生成する一意の識別子で、複合キーの代わりに主キーとして使われます。
これにより、主キーのサイズが小さくなり、索引の効率化や参照の簡素化が可能です。
ただし、代理キーは意味を持たないため、業務上の意味を持つ属性は別途ユニーク制約などで管理します。

FAQ

Q: 代理キーと代替キーの違いは何ですか?
A: 代理キーはシステム生成の一意識別子で主キーに使われ、代替キーは主キー以外の候補キー(自然キー)を指します。
Q: なぜ複合キーを主キーに使うと扱いにくいのですか?
A: 複数属性の組み合わせで一意性を保証するため、参照や索引作成時に複雑になり、パフォーマンスや管理が難しくなるからです。

関連キーワード: 複合キー、代理キー、主キー、外部キー、代替キー、関係データベース、キー設計、正規化
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

データベーススペシャリスト
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2025 情報処理技術者試験対策アプリ

このサイトについてプライバシーポリシー利用規約特商法表記開発者について