平成27年度 秋期 午前 問27
データベース
第3正規形に関する問題
関係“注文記録”の属性間に ① 〜 ⑥ の関数従属性があり,それに基づいて第3正規形まで正規化を行って,“商品”,“顧客”,“注文”,“注文明細”の各関係に分解した。関係“注文明細”として,適切なものはどれか。ここで,{X, Y} は,属性 X と Y の組みを表し,X→Y は,X が Y を関数的に決定することを表す。また,実線の下線は主キーを表す。
注文記録(注文番号,注文日,顧客番号,顧客名,商品番号,商品名,
数量,販売単価)
〔関数従属性〕
① 注文番号 → 注文日 ② 注文番号 → 顧客番号
③ 顧客番号 → 顧客名 ④ {注文番号,商品番号} → 数量
⑤ {注文番号,商品番号} → 販売単価 ⑥ 商品番号 → 商品名
選択肢の下線(主キー)は,ここでは [ ] で囲んで示します(原典は実線の下線です)。
- ア注文明細([注文番号],数量,販売単価)
- イ注文明細([注文番号],[顧客番号],数量,販売単価)
- ウ注文明細([注文番号],[顧客番号],[商品番号],顧客名,数量,販売単価)
- エ注文明細([注文番号],[商品番号],数量,販売単価)
答えと解説を見る
✓ これが正解エ注文明細([注文番号],[商品番号],数量,販売単価)
解説
注文明細の主キーは注文番号と商品番号の組です。
第3正規形まで分解するときは、示された関数従属性を丁寧に読んで、決定されるものと決定するもののまとまりで表を切り分けます。設問の関数従属性のうち、数量と販売単価は注文番号と商品番号の二つが揃って初めて決まるので、この二つがひとまとまりで主キーになる関係が一つ生じます。注文日と顧客番号は注文番号だけで決まるので、これらは別の関係にまとまります。顧客名は顧客番号だけで決まるので、顧客側の関係へ分かれます。商品名は商品番号だけで決まるので、商品側の関係へ分かれます。見分けるときの軸は二つで、一つ目はどの属性が主キーになるべきか、二つ目は他の関係へ移されるべき属性が紛れ込んでいないかです。注文明細の関係に残るのは、二つ揃って主キーになる属性と、その組で決まる二つの属性だけです。
ほかの選択肢はなぜ違うのか
- ア注文明細([注文番号],数量,販売単価):主キーが注文番号だけになっています。数量や販売単価は注文番号と商品番号の組で決まる属性なので、注文番号1つだけを主キーとする関係にはこの二つの属性を持たせることができません。
- イ注文明細([注文番号],[顧客番号],数…:主キーに注文番号と顧客番号を並べています。顧客番号は注文番号だけで決まる属性なので主キーの一部にする必要はなく、明細を識別する組合せとして正しいのは商品番号を含む組です。
- ウ注文明細([注文番号],[顧客番号],[…:顧客名が明細側の関係に残っています。顧客名は顧客番号だけで決まる属性なので顧客側の関係に移すのが第3正規形の分解であり、明細側にとどめるとその要件を満たしません。
出典:平成27年度 秋期 基本情報技術者試験 午前 問27
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)