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


受注入力システムによって作成される次の表に関する記述のうち, 適切なものはどれか。受注番号は受注ごとに新たに発行される番号であり, 項番は1回の受注で商品コード別に連番で発行される番号である。  なお, 単価は商品コードによって一意に定まる。
問題画像
正規化は行われていない。
第1正規形まで正規化されている。(正解)
第2正規形まで正規化されている
第3正規形まで正規化されている。

解説

受注入力システムの表に関する正規化の問題【午前2 解説】

要点まとめ

  • 結論:この表は第1正規形(1NF)まで正規化されているが、第2正規形(2NF)以降は満たしていない。
  • 根拠:繰り返しグループはなく、各フィールドは単一値だが、部分関数従属が存在し、単価が商品コードに依存しているため。
  • 差がつくポイント:正規化の段階ごとの条件を正確に理解し、部分関数従属の有無を見抜くことが重要。

正解の理由

この表は、各列に単一の値が格納されており、繰り返しグループもないため第1正規形は満たしています。しかし、単価が商品コードに一意に定まるにもかかわらず、単価が受注番号や項番に依存しているため、部分関数従属が存在します。つまり、主キー(受注番号+項番)に対して単価は部分的に依存しているため、第2正規形は満たしていません。したがって、正解はイ: 第1正規形まで正規化されているです。

よくある誤解

単価が商品コードに依存していることを見落とし、単価も主キー全体に依存していると誤解しがちです。これにより第2正規形と判断してしまうことがあります。

解法ステップ

  1. 主キーを特定する(受注番号+項番)。
  2. 各列の値が単一であるか確認し、第1正規形を満たしているか判断。
  3. 非キー属性が主キーの一部にだけ依存していないか(部分関数従属)を調べる。
  4. 商品コードにより単価が決まるため、単価は主キーの一部(項番)に依存していると判断。
  5. 以上より、第2正規形は満たしていないと結論付ける。

選択肢別の誤答解説ステップ

  • ア: 正規化は行われていない。
    → 繰り返しグループや複数値属性がないため、第1正規形は満たしている。
  • イ: 第1正規形まで正規化されている。
    → 正しい。単一値属性で第1正規形は満たすが、部分関数従属があるため第2正規形は満たさない。
  • ウ: 第2正規形まで正規化されている。
    → 単価が商品コードに依存し、主キーの一部に依存しているため部分関数従属が存在し誤り。
  • エ: 第3正規形まで正規化されている。
    → 第2正規形を満たしていないため、第3正規形はさらに満たさない。

補足コラム

正規化はデータの冗長性を減らし、更新異常を防ぐための手法です。
  • 第1正規形(1NF):すべての属性が単一値であること。
  • 第2正規形(2NF):1NFを満たし、主キーの部分集合に依存する属性がないこと。
  • 第3正規形(3NF):2NFを満たし、非キー属性間の推移的依存がないこと。
    今回の例では、単価が商品コードに依存しているため、商品コードを別テーブルに分割することで2NF以上を満たせます。

FAQ

Q: なぜ単価は主キー全体ではなく部分キーに依存しているのですか?
A: 単価は商品コードによって一意に決まるため、主キーの一部である商品コードに依存し、主キー全体には依存していません。
Q: 第1正規形と第2正規形の違いは何ですか?
A: 第1正規形は属性が単一値であること、第2正規形はそれに加えて非キー属性が主キーの部分集合に依存しないことを意味します。
Q: 正規化を進めるメリットは何ですか?
A: データの冗長性を減らし、更新や削除時の異常を防止し、データ整合性を保ちやすくなります。

関連キーワード: 正規化, 第1正規形, 第2正規形, 部分関数従属, データベース設計, 受注システム, 関係データベース
← 前の問題へ次の問題へ →

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