修了試験 2018-12-09実施分 基本情報技術者試験 問28
関係“注文記録”の属性間に①〜⑥の関数従属性があり,それに基づいて第3正規形まで正規化を行って,“商品”,“顧客”,“注文”,“注文明細”の各関係に分解した。 関係“注文明細”として,適切なものはどれか。 ここで,{X,Y}は,属性XとYの組みを表し,X→Yは,XがYを関数的に決定することを表す。 また,《》で囲んだ属性は主キーを表す。 注文記録(注文番号,注文日,顧客番号,顧客名,商品番号,商品名,数量,販売単価) 〔関数従属性〕 ①注文番号→注文日 ②注文番号→顧客番号 ③顧客番号→顧客名 ④{注文番号,商品番号}→数量 ⑤{注文番号,商品番号}→販売単価 ⑥商品番号→商品名
正答4
解説
正解は4です。 関数従属性をもとに第3正規形まで分解したときの、注文明細の構成を選ぶ問題です。 選択肢では、《》で囲んだ属性が主キーを表します。 数量と販売単価は、注文番号と商品番号の組み{注文番号,商品番号}によって決まります(④、⑤)。 注文日と顧客番号は注文番号だけで決まり(①、②)、顧客名は顧客番号で、商品名は商品番号で決まります(③、⑥)。 したがって、商品(商品番号,商品名)、顧客(顧客番号,顧客名)、注文(注文番号,注文日,顧客番号)、注文明細(注文番号,商品番号,数量,販売単価)に分解されます。 【選択肢別解説】 1:× 主キーが注文番号だけでは、1件の注文に含まれる商品ごとの数量や販売単価を区別できません。 ④、⑤より、主キーは注文番号と商品番号の組みにする必要があります。 2:× 主キーに商品番号が欠けているうえ、注文番号だけで決まる顧客番号を含んでいます。 顧客番号は、注文の関係に置くべき属性です。 3:× 顧客番号は注文番号だけで決まるので、主キーに含める必要はありません。 顧客名は顧客番号によって決まる推移的な従属なので、第3正規形では顧客の関係に分けます。 4:○ 注文番号と商品番号の組みを主キーとし、その組みで決まる数量と販売単価だけを属性にもっています。 部分関数従属も推移的関数従属もないので、第3正規形を満たします。 【ポイント】 第2正規形では、主キーの一部だけで決まる属性(部分関数従属)を別の関係に分けます。 第3正規形では、主キー以外の属性によって決まる属性(推移的関数従属)を別の関係に分けます。 明細の表は「伝票番号と商品番号の複合キー」になるのが定番の形です。まとめて解く
修了試験 2018-12-09実施分を通しで解く(80問)→