令和2年度秋期 応用情報技術者試験 午前 問28
関係“注文記録”の属性間に①〜⑥の関数従属性があり,それに基づいて第3正規形まで正規化を行って,“商品”,“顧客”,“注文”,“注文明細”の各関係に分解した。関係“注文明細”として,適切なものはどれか。ここで,{X,Y}は,属性XとYの組みを表し,X→Yは,XがYを関数的に決定することを表す。また,実線の下線は主キーを表す。注文記録(注文番号,注文日,顧客番号,顧客名,商品番号,商品名,数量,販売単価)〔関数従属性〕① 注文番号 → 注文日 ② 注文番号 → 顧客番号 ③ 顧客番号 → 顧客名 ④ {注文番号,商品番号} → 数量 ⑤ {注文番号,商品番号} → 販売単価 ⑥ 商品番号 → 商品名
- ア 注文明細(注文番号,顧客番号,商品番号,顧客名,数量,販売単価)
- イ 注文明細(注文番号,顧客番号,数量,販売単価)
- ウ 注文明細(注文番号,商品番号,数量,販売単価)
- エ 注文明細(注文番号,数量,販売単価)
解答・解説を見る
正解:ウ
AI解説
関数従属性④⑤より、数量と販売単価は複合キー{注文番号,商品番号}に完全関数従属する。商品名(⑥)は商品番号だけに従属する部分関数従属のため商品表へ、顧客名(③)は顧客番号だけに従属するため顧客表へ、注文日・顧客番号(①②)は注文番号だけに従属するため注文表へ、それぞれ切り出す必要がある。したがって注文明細表には注文番号,商品番号,数量,販売単価のみが残る。 ア: 注文明細(注文番号,顧客番号,商品番号,顧客名,数量,販売単価)は、顧客番号・顧客名という部分関数従属する属性が残ったままであり第3正規形になっていないため誤りである。 イ: 注文明細(注文番号,顧客番号,数量,販売単価)は、数量・販売単価が本来従属する商品番号が欠落しており誤りである。 ウ: 正しい。注文番号,商品番号,数量,販売単価のみからなる表が、複合キーに完全関数従属する属性だけで構成された正しい注文明細表である。 エ: 注文明細(注文番号,数量,販売単価)は、複合キーを構成する商品番号が欠落しており、数量・販売単価がどの商品に対するものか特定できないため誤りである。 💡 第3正規形への分解は「部分関数従属」と「推移的関数従属」を取り除く作業。複合キーに完全従属する属性だけを残すという基準で各表を切り分けると整理しやすい。
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。