データベーススペシャリスト試験 2010年 午前206


次の表情報無損失分解のうち, 正しいものはどれか。ここで, 下線部は主キーを表す。 発注伝票(注文番号, 商品番号, 商品名, 商品单, 注文数量)
発注(注文番号, 注文数量) 商品(商品番号, 商品名, 商品単価)
発注(注文番号, 注文数量) 商品(注文番号, 商品番号, 商品名, 商品単価)
発注(注文番号, 商品番号, 注文数量) 商品(商品番号, 商品名, 商品単価)(正解)
発注(注文番号, 商品番号, 注文数量) 商品(商品番号, 商品名, 商品単価, 注文数量)

解説

情報無損失分解の正しい選択肢はどれか【午前2 解説】

要点まとめ

  • 結論:正しい情報無損失分解は「ウ」の発注(注文番号, 商品番号, 注文数量)と商品(商品番号, 商品名, 商品単価)の組み合わせです。
  • 根拠:元の表の主キーは複合キー(注文番号+商品番号)であり、分解後もこの複合キーを保持し、商品情報は商品番号を主キーとする別表に分ける必要があります。
  • 差がつくポイント:主キーの正確な理解と、分解後に元の情報を完全に再現できるか(情報無損失性)を見極めることが重要です。

正解の理由

選択肢「ウ」は、発注伝票の主キーである「注文番号」と「商品番号」の複合キーを発注表に保持し、注文数量を属性として持たせています。また、商品表は「商品番号」を主キーとして商品名と商品単価を管理しています。これにより、元の表の情報を完全に再現でき、情報の重複や矛盾も防げるため、情報無損失分解として正しい形です。

よくある誤解

主キーを単一のキーと誤認し、複合キーを分割してしまうと情報が欠落したり、再結合できなくなることがあります。商品数量を商品表に含めるのも誤りです。

解法ステップ

  1. 元の表の主キーを確認する(注文番号+商品番号の複合キー)。
  2. 主キーを分解後の表に正しく保持できているかを確認する。
  3. 属性を適切に分割し、重複や矛盾が生じないか検証する。
  4. 分解後の表を結合して元の表が再現できるか(情報無損失性)を確認する。
  5. 主キーの誤りや属性の不適切な配置がないか最終チェックする。

選択肢別の誤答解説

  • ア: 発注表に「注文番号」のみを主キーとし、商品番号を含めていないため複合キーが崩れ、情報が欠落します。
  • イ: 商品表に「注文番号」と「商品番号」の複合キーを持たせているが、商品情報は商品番号単独で管理すべきであり、主キーの役割が不適切です。
  • ウ: 正解。複合キーを保持し、属性も適切に分割されているため情報無損失分解となっています。
  • エ: 商品表に注文数量を含めているため、注文数量が商品情報に混入し、正規化の観点から誤りです。

補足コラム

情報無損失分解とは、元の関係(表)を複数の関係に分解しても、自然結合などで元の関係を完全に再現できる分解のことです。主キーの保持と属性の適切な分割が重要で、正規化の基本的な考え方の一つです。

FAQ

Q: 複合キーとは何ですか?
A: 複数の属性を組み合わせて一意にレコードを識別するキーのことです。今回の例では「注文番号」と「商品番号」の組み合わせが複合キーです。
Q: なぜ注文数量を商品表に含めてはいけないのですか?
A: 注文数量は注文ごとに異なる情報であり、商品固有の情報ではないため、商品表に含めるとデータの重複や矛盾が生じます。

関連キーワード: 正規化, 情報無損失分解, 主キー, 複合キー, データベース設計, 関係データベース
← 前の問題へ次の問題へ →

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