応用情報技術者 2017年 春期 午前2 問27
問題文
“受注明細” 表は、どのレベルまでの正規形の条件を満足しているか。ここで、実線の下線は主キーを表す。

選択肢
ア:第1正規形
イ:第2正規形(正解)
ウ:第3正規形
エ:第4正規形
受注明細表の正規形判定【午前2 解説】
要点まとめ
- 結論:受注明細表は第2正規形まで満たしているため、正解はイ: 第2正規形です。
- 根拠:主キーは「受注番号+明細番号」で、部分関数従属がなく第1正規形を満たしつつ、非キー属性が主キー全体に完全関数従属しています。
- 差がつくポイント:商品名が商品コードに依存しているため、主キー全体には従属しておらず、第3正規形ではない点に注意が必要です。
正解の理由
この表の主キーは「受注番号」と「明細番号」の複合キーです。
- 第1正規形は「繰り返しグループがなく、各フィールドが単一値」であり、この表は満たしています。
- 第2正規形は「主キーの一部にのみ依存する属性がない」ことですが、商品名や商品コードは主キー全体に依存しているため、第2正規形も満たしています。
- しかし、商品名は商品コードに依存しており、主キー全体には依存していません。これは「推移的関数従属」と呼ばれ、第3正規形の条件を満たしていません。
よって、第2正規形までの正規化状態です。
よくある誤解
商品名が主キーに依存していると誤解しやすいですが、実際は商品コードに依存しているため、第3正規形ではありません。
また、複合キーの一部にのみ依存する属性があるかどうかを正しく見極めることが重要です。
また、複合キーの一部にのみ依存する属性があるかどうかを正しく見極めることが重要です。
解法ステップ
- 主キーを特定する(ここでは「受注番号+明細番号」)。
- 各非キー属性が主キー全体に依存しているか確認する。
- 部分関数従属(主キーの一部にのみ依存)がないか確認し、第2正規形を判定。
- 推移的関数従属(非キー属性同士の依存)がないか確認し、第3正規形を判定。
- 商品名が商品コードに依存しているため、第3正規形ではないと判断する。
選択肢別の誤答解説
- ア: 第1正規形
繰り返しグループや複数値属性がないため、第1正規形は満たしているが、部分関数従属がないため第2正規形も満たす。 - イ: 第2正規形
正解。主キーの一部にのみ依存する属性はなく、完全関数従属している。 - ウ: 第3正規形
商品名が商品コードに依存しているため、推移的関数従属が存在し第3正規形ではない。 - エ: 第4正規形
第3正規形を満たしていないため、第4正規形は論外。
補足コラム
正規化はデータの冗長性を減らし、更新異常を防ぐための手法です。
- 第1正規形(1NF):すべての属性が単一値であること。
- 第2正規形(2NF):1NFかつ部分関数従属がないこと。
- 第3正規形(3NF):2NFかつ推移的関数従属がないこと。
商品コードと商品名のように、非キー属性同士の依存関係は推移的関数従属の典型例です。
FAQ
Q: なぜ商品名は主キーに依存しないのですか?
A: 商品名は商品コードに依存し、商品コードが主キー全体に依存しているため、商品名は主キーに直接依存していません。
A: 商品名は商品コードに依存し、商品コードが主キー全体に依存しているため、商品名は主キーに直接依存していません。
Q: 第2正規形と第3正規形の違いは何ですか?
A: 第2正規形は部分関数従属の排除、第3正規形は推移的関数従属の排除を意味します。
A: 第2正規形は部分関数従属の排除、第3正規形は推移的関数従属の排除を意味します。
関連キーワード: 正規化、第1正規形、第2正規形、第3正規形、関数従属、推移的関数従属、部分関数従属、主キー、複合キー、データベース設計

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

