平成27年度 秋期 基本情報技術者試験 午前 問27
テクノロジ/データベース関係“注文記録”の属性間に①~⑥の関数従属性があり,それに基づいて第3正規形まで正規化を行って,“商品”,“顧客”,“注文”,“注文明細”の各関係に分解した。関係“注文明細”として,適切なものはどれか。ここで,{X, Y} は,属性 X と Y の組みを表し,X→Y は,X が Y を関数的に決定することを表す。また,実線の下線は主キーを表す。 注文記録(注文番号,注文日,顧客番号,顧客名,商品番号,商品名,数量,販売単価) 〔関数従属性〕 ① 注文番号 → 注文日 ② 注文番号 → 顧客番号 ③ 顧客番号 → 顧客名 ④ {注文番号,商品番号} → 数量 ⑤ {注文番号,商品番号} → 販売単価 ⑥ 商品番号 → 商品名
出典:平成27年度 秋期 基本情報技術者試験 午前 問27
- ア注文明細(注文番号,数量,販売単価)
- イ注文明細(注文番号,顧客番号,数量,販売単価)
- ウ注文明細(注文番号,顧客番号,商品番号,顧客名,数量,販売単価)
- エ注文明細(注文番号,商品番号,数量,販売単価)
正解:エ
解説
関数従属性④・⑤より,数量と販売単価は{注文番号,商品番号}によって決まるため,これらを主キーとする関係「注文明細(注文番号,商品番号,数量,販売単価)」として分解するのが適切です。顧客名や商品名は,それぞれ顧客番号,商品番号から決まる別の従属性(③,⑥)なので,別の関係(顧客,商品)に分離します。
選択肢ごとの解説
- ア誤り。商品番号が抜けており,数量や販売単価を一意に決めるための主キーが不足しています。
- イ誤り。顧客番号は注文(ヘッダ)側の情報であり,明細である注文明細に含めるべき属性ではありません。
- ウ誤り。顧客名や商品名は,本来別の関数従属性をもつ属性であり,第3正規形では別の関係(顧客,商品)に分離すべきものです。
- エ正しい。数量と販売単価は{注文番号,商品番号}から決まるため,これらを主キーとする注文明細(注文番号,商品番号,数量,販売単価)が適切です。