修了試験 2017-07-23実施分 基本情報技術者試験 問27
関係"注文記録"の属性間に①〜⑥の関数従属性があり,それに基づいて第3正規形まで正規化を行って,"商品","顧客","注文","注文明細"の各関係に分解した。 関係"注文明細"として,適切なものはどれか。 ここで,{X,Y}は,属性XとYの組みを表し,X→Yは,XがYを関数的に決定することを表す。 また,実線の下線は主キーを表す。 注文記録(注文番号,注文日,顧客番号,顧客名,商品番号,商品名,数量,販売単価) 〔関数従属性〕 ① 注文番号 → 注文日 ② 注文番号 → 顧客番号 ③ 顧客番号 → 顧客名 ④ {注文番号,商品番号} → 数量 ⑤ {注文番号,商品番号} → 販売単価 ⑥ 商品番号 → 商品名
正答4
解説
正解は4です。 第3正規形は、すべての非キー属性が主キーに完全関数従属し、推移的関数従属がない状態です。 関数従属性に従って、決定する側の属性ごとに関係を分けると、次の4つになります。 注文は、主キーが注文番号で、注文日と顧客番号をもちます(①と②)。 顧客は、主キーが顧客番号で、顧客名をもちます(③)。 商品は、主キーが商品番号で、商品名をもちます(⑥)。 注文明細は、主キーが{注文番号,商品番号}で、数量と販売単価をもちます(④と⑤)。 【選択肢別解説】 1:× 主キーが注文番号だけでは、1つの注文で複数の商品を注文したときに行を区別できません。 数量と販売単価は④⑤のとおり{注文番号,商品番号}で決まるので、商品番号も主キーに必要です。 2:× 顧客番号は②により注文番号だけで決まるので、注文の関係に置くべき属性です。 また、数量と販売単価を決めるのに必要な商品番号が含まれていません。 3:× 顧客番号は注文番号だけで決まり、顧客名は③により顧客番号で決まります。 これらをここに置くと部分関数従属や推移的関数従属が残り、第3正規形になりません。 4:○ 主キーを{注文番号,商品番号}とし、それに完全関数従属する数量と販売単価をもちます。 ④⑤の関数従属性をそのまま表した関係で、部分関数従属も推移的関数従属もありません。 【ポイント】 第1正規形は繰返しの排除、第2正規形は部分関数従属の排除、第3正規形は推移的関数従属の排除です。 明細の表は、親の番号と明細の対象(商品など)を組み合わせた複合キーになるのが典型です。まとめて解く
修了試験 2017-07-23実施分を通しで解く(80問)→