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


次の表を, 第3正規形まで正規化を行った場合、 幾つの表に分割されるか。ここで, 顧客の1回の注文に対して1枚の受注伝票が作られ、顧客は1回の注文で一つ以上の商品を注文できるものとする。
問題画像
2
3
4(正解)
5

解説

第3正規形まで正規化した場合の表の分割数【午前2 解説】

要点まとめ

  • 結論:第3正規形まで正規化すると4つの表に分割されます。
  • 根拠:受注、顧客、商品、受注明細の4つの実体に分け、各表は主キーとそれに従属する属性で構成されるためです。
  • 差がつくポイント:複合キーの理解と関数従属性の正確な把握が重要で、受注明細の分割を見落とさないことが鍵です。

正解の理由

この問題は、1つの表に複数の実体(顧客、受注、商品、受注明細)が混在している状態から、第3正規形(3NF)まで正規化する過程を問うています。
  • まず、顧客コード→顧客名の関数従属性により「顧客」表が分離されます。
  • 次に、商品コード→商品名・単価の関数従属性により「商品」表が分離されます。
  • 受注番号→顧客コード・受注日が決まるため「受注」表が分離されます。
  • 受注明細は受注番号+商品コードの複合キーで管理され、受注数・受注金額が従属するため「受注明細」表となります。
    以上より、4つの表に分割されるため、正解はウ: 4です。

よくある誤解

受注明細を受注表に含めてしまい、分割数を少なく見積もる誤りが多いです。複合キーの理解不足も原因となります。

解法ステップ

  1. 元の表の属性と関数従属性を洗い出す。
  2. 顧客コード→顧客名の関係から「顧客」表を分離。
  3. 商品コード→商品名・単価の関係から「商品」表を分離。
  4. 受注番号→顧客コード・受注日の関係から「受注」表を分離。
  5. 受注番号+商品コードの複合キーで「受注明細」表を作成。
  6. 以上の4つの表に分割されることを確認。

選択肢別の誤答解説

  • ア: 2
    顧客や商品、受注明細をまとめすぎて分割数が少なすぎます。第3正規形の要件を満たしません。
  • イ: 3
    受注明細を受注表に含めてしまい、分割数が不足しています。複合キーの扱いが不十分です。
  • ウ: 4
    正解。顧客、商品、受注、受注明細の4つに正しく分割しています。
  • エ: 5
    受注明細をさらに細分化する理由がなく、過剰分割となります。

補足コラム

正規化はデータの冗長性を排除し、更新異常を防ぐための重要な手法です。第3正規形では、非キー属性が他の非キー属性に依存しないことが求められます。今回のように複合キーを持つ受注明細は、正規化の理解を深める良い例です。

FAQ

Q: 第3正規形まで正規化すると必ず表は増えるのですか?
A: はい。冗長性を排除するために、複数の実体に分割されることが一般的です。
Q: 受注明細の複合キーとは何ですか?
A: 受注番号と商品コードの組み合わせで、受注明細の主キーとなり、各注文商品の明細を一意に識別します。
Q: 第2正規形と第3正規形の違いは?
A: 第2正規形は部分関数従属性の排除、第3正規形は推移的関数従属性の排除を目的としています。

関連キーワード: 正規化, 第3正規形, 関数従属性, 複合キー, 受注明細, データベース設計
← 前の問題へ次の問題へ →

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