戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

応用情報技術者 2017年 春期 午前227


問題文

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

選択肢

第1正規形
第2正規形(正解)
第3正規形
第4正規形

🔒 解説は解答すると表示されます

第2正規形判定【午前2解説】

正解の理由

この表は主キーが複合キー(受注番号+明細番号)であり、全ての非キー属性が主キー全体に対して完全に関数従属しています。一方で、商品名は商品コードに従属しており、商品コード自体が主キー全体に従属するため、主キーから非キー属性への「推移的従属」が発生します。したがって、部分従属は存在しないため第2正規形を満たし、推移的従属により第3正規形は満たされません。以上より選択肢(第2正規形)が正しいです。
(関数従属の要約)
(これが推移的従属を生む)

解法ステップ

  1. 主キーを確定する。受注明細では「受注番号」と「明細番号」の複合キーが主キーとなる。
  2. 1NFの確認:各列が単一値であれば1NFを満たす(本表は満たしている)。
  3. 2NFの確認:非キー属性が主キーの一部にのみ依存していないかを調べる。ここでは商品コード・数量は複合キー全体に依存しているため部分従属はない。
  4. 3NFの確認:非キー属性間の依存(推移的従属)がないかを調べる。商品名は商品コードに依存しているため、主キー→商品コード→商品名 の形になり推移的従属がある。
  5. 4NFの確認:多値従属性が存在するか。該当データからは多値従属は認められない。
    以上の判定により第2正規形で止まる。

選択肢別の誤答解説

  • ア: 第1正規形
    誤り。表は1NFの条件(各セルが原子値)を満たすが、さらに部分従属がないため2NFも満たしている。単に1NFとするのは過小評価。
  • : 第2正規形
    正しい。部分従属はないが、商品名が商品コードに依存するため推移的従属があり3NFは満たさない。
  • ウ: 第3正規形
    誤り。3NFを満たすには非キー属性間の推移的従属が存在してはならない。ここでは があるため3NFに違反する。
  • エ: 第4正規形
    誤り。4NFまで進めるには多値従属性の排除が必要だが、与えられた表では多値従属性の問題はなく、まず3NFの条件を満たしていないため4NFは論外。

よくある誤解

  • 商品名が「主キー全体に依存していない」として2NFを否定してしまう誤り:実際には商品名は商品コードに依存しており、商品コード自体は主キー全体に依存するため「部分従属」ではなく「推移的従属」である。部分従属が無ければ2NFは満たす。
  • 主キーの取り方を誤る誤解:受注明細の主キーは(受注番号, 明細番号)が自然であり、誤って商品コードを主キーと見なすと判定が変わる。設計上の主キーを確認してから判定すること。

補足コラム

第3正規形にするための典型的な分解例:
  • 受注明細テーブル(分解後)
    • 受注番号, 明細番号, 商品コード, 数量
    • 主キー: (受注番号, 明細番号)
  • 商品テーブル(分解後)
    • 商品コード, 商品名
    • 主キー: 商品コード
この分解により の従属は商品テーブル内に閉じられ、受注明細側には推移的従属が残らなくなるため受注明細は3NFを満たします(ただし分解は無損失分解であることを確認)。

FAQ

Q1: 「部分従属」と「推移的従属」はどう違いますか?
A1: 部分従属は複合キーの一部だけに非キー属性が依存すること。推移的従属は主キー→A と A→B の関係がある場合に主キー→B が間接的に成り立つこと。前者は2NFの否定要因、後者は3NFの否定要因です。
Q2: 表をそのままにしておくと何が問題になりますか?
A2: 商品名を複数行で重複して保持するため更新異常(商品名変更時に複数行更新が必要)やデータ整合性の問題が生じやすくなります。
Q3: 受注明細の主キーを (受注番号, 商品コード) にしたらどうなる?
A3: その場合に明細番号の役割が変わる設計になるため議論が変わる。主キーの定義は正規化判定に直接影響するので、業務ルールに合った主キーを最初に決める必要があります。

関連キーワード: 正規化, 関数従属, 部分従属, 推移的従属, 第2正規形, 第3正規形, 多値従属性, 第4正規形
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

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

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について