ホーム > データベーススペシャリスト試験 > 2010年
データベーススペシャリスト試験 2010年 午前2 問06
次の表情報無損失分解のうち, 正しいものはどれか。ここで, 下線部は主キーを表す。
発注伝票(注文番号, 商品番号, 商品名, 商品单, 注文数量)
ア:発注(注文番号, 注文数量)
商品(商品番号, 商品名, 商品単価)
イ:発注(注文番号, 注文数量)
商品(注文番号, 商品番号, 商品名, 商品単価)
ウ:発注(注文番号, 商品番号, 注文数量)
商品(商品番号, 商品名, 商品単価)(正解)
エ:発注(注文番号, 商品番号, 注文数量)
商品(商品番号, 商品名, 商品単価, 注文数量)
解説
情報無損失分解の正しい選択肢はどれか【午前2 解説】
要点まとめ
- 結論:正しい情報無損失分解は「ウ」の発注(注文番号, 商品番号, 注文数量)と商品(商品番号, 商品名, 商品単価)の組み合わせです。
- 根拠:元の表の主キーは複合キー(注文番号+商品番号)であり、分解後もこの複合キーを保持し、商品情報は商品番号を主キーとする別表に分ける必要があります。
- 差がつくポイント:主キーの正確な理解と、分解後に元の情報を完全に再現できるか(情報無損失性)を見極めることが重要です。
正解の理由
選択肢「ウ」は、発注伝票の主キーである「注文番号」と「商品番号」の複合キーを発注表に保持し、注文数量を属性として持たせています。また、商品表は「商品番号」を主キーとして商品名と商品単価を管理しています。これにより、元の表の情報を完全に再現でき、情報の重複や矛盾も防げるため、情報無損失分解として正しい形です。
よくある誤解
主キーを単一のキーと誤認し、複合キーを分割してしまうと情報が欠落したり、再結合できなくなることがあります。商品数量を商品表に含めるのも誤りです。
解法ステップ
- 元の表の主キーを確認する(注文番号+商品番号の複合キー)。
- 主キーを分解後の表に正しく保持できているかを確認する。
- 属性を適切に分割し、重複や矛盾が生じないか検証する。
- 分解後の表を結合して元の表が再現できるか(情報無損失性)を確認する。
- 主キーの誤りや属性の不適切な配置がないか最終チェックする。
選択肢別の誤答解説
- ア: 発注表に「注文番号」のみを主キーとし、商品番号を含めていないため複合キーが崩れ、情報が欠落します。
- イ: 商品表に「注文番号」と「商品番号」の複合キーを持たせているが、商品情報は商品番号単独で管理すべきであり、主キーの役割が不適切です。
- ウ: 正解。複合キーを保持し、属性も適切に分割されているため情報無損失分解となっています。
- エ: 商品表に注文数量を含めているため、注文数量が商品情報に混入し、正規化の観点から誤りです。
補足コラム
情報無損失分解とは、元の関係(表)を複数の関係に分解しても、自然結合などで元の関係を完全に再現できる分解のことです。主キーの保持と属性の適切な分割が重要で、正規化の基本的な考え方の一つです。
FAQ
Q: 複合キーとは何ですか?
A: 複数の属性を組み合わせて一意にレコードを識別するキーのことです。今回の例では「注文番号」と「商品番号」の組み合わせが複合キーです。
A: 複数の属性を組み合わせて一意にレコードを識別するキーのことです。今回の例では「注文番号」と「商品番号」の組み合わせが複合キーです。
Q: なぜ注文数量を商品表に含めてはいけないのですか?
A: 注文数量は注文ごとに異なる情報であり、商品固有の情報ではないため、商品表に含めるとデータの重複や矛盾が生じます。
A: 注文数量は注文ごとに異なる情報であり、商品固有の情報ではないため、商品表に含めるとデータの重複や矛盾が生じます。
関連キーワード: 正規化, 情報無損失分解, 主キー, 複合キー, データベース設計, 関係データベース