データベース
次の関係スキーマについて、正規形の判定として正しいものはどれか。 【注文明細テーブル】 注文ID, 商品ID, 商品名, 単価, 数量 主キー:{注文ID, 商品ID} 関数従属: ・{注文ID, 商品ID} → 数量(完全関数従属) ・商品ID → 商品名(部分関数従属) ・商品ID → 単価(部分関数従属)
ア.第3正規形(3NF)を満たしている
イ.第2正規形(2NF)は満たしているが、第3正規形(3NF)は満たしていない
ウ.第1正規形(1NF)は満たしているが、第2正規形(2NF)は満たしていない正解
エ.非正規形である(第1正規形すら満たしていない)
解説
2NFのチェックは「主キーのどの部分キーにも直接依存していないか」を確認すること。商品名と単価は「商品ID だけ」で決まってしまう。複合主キーの片方だけに依存する部分関数従属があれば、第1正規形は満たしていても2NFには昇格できない。
なぜ ウ が正解か
第1正規形(1NF)は各列が原子値であれば満たされる。このテーブルは各列が原子値なので 1NF は満たす。第2正規形(2NF)は「非キー属性が主キーに完全関数従属している」ことを要件とする。しかし「商品名」と「単価」は主キーの部分集合である「商品ID」のみに依存する部分関数従属がある。よって 2NF を満たしていない。1NF は満たすが 2NF は満たさない状態であり、正解はウとなる。
出典: AI生成問題(学習用)