平成22年春期試験問題 午前Ⅱ 問4

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

  • 複合キーを構成している属性のうち,エンティティの性格を最もよく表している属性を主キーとし,残りの属性を外部キーにする。
  • 複合キーを構成している属性のうち,エンティティの性格を最もよく表している属性を主キーとし,残りの属性を代理キー(alternate key)にする。
  • 複合キーを連番など代用のキー(surrogate key)に置き換え,複合キーを構成している属性を外部キーにする。
  • 複合キーを連番など代用のキー(surrogate key)に置き換え,複合キーを構成している属性を代理キー(alternate key)にする。
正解 問題へ
分野 :テクノロジ系
中分類:データベース
小分類:データベース設計
解説
複合主キーは、複数の属性の組合せを主キーとして使用するものです。複合主キーには本来持ち合わせている属性だけを使用してテーブルを構成することができるというメリットもあるのですが、主キーの属性数が多すぎると「1.SQLの結合演算記述が煩雑になる」「2.テーブル間の依存度が高くなる」「3.コードの仕様変更の影響を受けやすい」などの弊害が問題になってきます。
このような時はデータをシンプルに扱うために、単一でレコードを特定可能な属性をテーブルに追加し、複合キーの代わりにそれを主キーとする手法が用いられます。この追加されて主キーとなる属性を代用キー(サロゲートキー)といい、通常は連番コードなどのように値の固有性を容易に確保しやすいものを設定します。値自体に業務上の意味がない注文Noや会社IDなどがこれに該当します。

主キーではなくなった複合キーは、主キーの要件を満たしていますが主キーに指定されていないため代理キー(alternate key)という扱いになります。
  • 複合主キーはそれを構成する全ての属性の値をもって表内の1行を同定可能なため、その中の1つの属性を取り出しても主キーの要件を満たしません。
  • 「ア」と同じ理由で誤りです。
  • 主キーであった複合キーと、別の表を参照するための外部キーとでは役割が異なります。
  • 正しい。

この問題の出題歴


Pagetop