データベース
次のテーブル「受注(受注ID, 顧客ID, 商品ID, 担当者ID, 担当者部門)」において、次の関数従属が成立している。 受注ID → 顧客ID, 商品ID, 担当者ID 担当者ID → 担当者部門 このテーブルが第3正規形(3NF)の条件を満たしていない理由として正しいものはどれか。
ア.受注IDが主キーでないため、第1正規形の条件を満たしていない
イ.担当者IDが主キーではないが担当者部門を関数的に決定しており、推移的関数従属が存在する正解
ウ.商品IDと顧客IDが別テーブルに分離されていないため第2正規形の条件を満たしていない
エ.担当者部門はNULLになりえるため、第1正規形の条件を満たしていない
解説
3NF違反の犯人は「推移的関数従属」。主キー→A→Bという2段階の依存関係が問題。担当者IDが橋渡しになって担当者部門が間接的に決まっている!
なぜ イ が正解か
問題のテーブル: 主キーは受注ID。受注ID→担当者ID(直接従属)、担当者ID→担当者部門(担当者IDが主キーでないのに担当者部門を決定)。これが推移的関数従属: 受注ID→担当者ID→担当者部門。3NFの条件は「主キー以外の属性が他の非キー属性を関数的に決定してはならない」。担当者IDは非キーだが担当者部門を決定しているため3NF違反。解決: 担当者(担当者ID, 担当者部門)を別テーブルに分離する。
出典: AI生成問題(学習用)