令和2年度 10月 応用情報技術者試験 午前 問28
テクノロジ/データベース関係“注文記録”の属性間に ①〜⑥ の関数従属性があり,それに基づいて第 3 正規形まで正規化を行って,“商品”,“顧客”,“注文”,“注文明細”の各関係に分解した。関係“注文明細”として,適切なものはどれか。ここで,{X,Y} は,属性 X と Y の組みを表し,X→Y は,X が Y を関数的に決定することを表す。また,実線の下線は主キーを表す。 注文記録(注文番号,注文日,顧客番号,顧客名,商品番号,商品名,数量,販売単価) 〔関数従属性〕 ① 注文番号 → 注文日 ② 注文番号 → 顧客番号 ③ 顧客番号 → 顧客名 ④ {注文番号,商品番号} → 数量 ⑤ {注文番号,商品番号} → 販売単価 ⑥ 商品番号 → 商品名 (注:本サイトでは原問題の下線(主キー)を注記で表しています)
出典:令和2年度 10月 応用情報技術者試験 午前 問28
- ア注文明細(注文番号,顧客番号,商品番号,顧客名,数量,販売単価) ※主キーは {注文番号,顧客番号,商品番号}
- イ注文明細(注文番号,顧客番号,数量,販売単価) ※主キーは {注文番号,顧客番号}
- ウ注文明細(注文番号,商品番号,数量,販売単価) ※主キーは {注文番号,商品番号}
- エ注文明細(注文番号,数量,販売単価) ※主キーは {注文番号}
正解:ウ
解説
第 3 正規形まで正規化すると,主キーの一部にだけ従属する属性(部分関数従属)と,主キー以外の属性を介して従属する属性(推移的関数従属)が別の関係に分離されます。関数従属性 ④ と ⑤ より,数量と販売単価は {注文番号,商品番号} に完全関数従属するので,“注文明細”は主キー {注文番号,商品番号} と数量,販売単価から成ります。
選択肢ごとの解説
- ア誤り。顧客番号は ② より注文番号に従属し,顧客名は ③ より顧客番号に従属するので,どちらも“注文”表と“顧客”表へ分離されます。“注文明細”に残してはいけません。
- イ誤り。数量と販売単価は商品番号を含む組みに従属するので,商品番号のない主キー {注文番号,顧客番号} では一意に定まりません。
- ウ正しい。{注文番号,商品番号} を主キーとし,これに完全関数従属する数量と販売単価をもつ関係が“注文明細”です。
- エ誤り。注文番号だけでは同一注文中の複数商品を区別できず,数量や販売単価が一意に定まりません。