応用情報技術者試験ナビ ロゴ 応用情報技術者試験ナビ
合格発表日:2025年7月3日(あと43日)

応用情報技術者試験 令和2年秋 午前問28 解説付き過去問

問題

関係"注文記録"の属性間に①~⑥の関数従属性があり、それに基づいて第3正規形まで正規化を行って、"商品","顧客","注文","注文明細"の各関係に分解した。 関係"注文明細"として、適切なものはどれか。 ここで、{X,Y} は、属性XとYの組みを表し、X→Yは、XがYを関数的に決定することを表す。 また、実線の下線は主キーを表す。

注文記録(注文番号、注文日、顧客番号、顧客名、商品番号、商品名、数量、販売単価)

[関数従属性]
①注文番号 → 注文日
②注文番号 → 顧客番号
③顧客番号 → 顧客名
④{注文番号、商品番号} → 数量
⑤{注文番号、商品番号} → 販売単価
⑥商品番号 → 商品名

正解

解説

この問題は、与えられた関係と関数従属性に基づき、第3正規形まで正規化を行ったうえで、「注文明細」として適切な属性の組合せを選ぶものです。

  1. 関数従属性の読み取り
    関係「注文記録」には以下の関数従属性があります。
    ① 注文番号 → 注文日
    ② 注文番号 → 顧客番号
    ③ 顧客番号 → 顧客名
    ④ {注文番号, 商品番号} → 数量
    ⑤ {注文番号, 商品番号} → 販売単価
    ⑥ 商品番号 → 商品名
    これらを分析すると、注文番号と商品番号の組(複合キー)で数量や販売単価が一意に決まることが分かります。

  2. 第1〜第3正規形への分解
    第1正規形では、繰り返しを含まないリレーションであることが前提となっており、本問はすでにその条件を満たしています。
    第2正規形では、複合主キーの一部にのみ依存する属性(部分関数従属性)を切り離します:
    ・注文番号 → 注文日、顧客番号
    ・顧客番号 → 顧客名(推移的関数従属性)
    ・商品番号 → 商品名
    これにより、関係は「注文」「顧客」「商品」「注文明細」に分割されます。

  3. 「注文明細」表の定義
    「注文明細」は、1件の注文の中に含まれる各商品とその数量・単価を管理する表です。数量と販売単価は、注文番号と商品番号の組によって一意に決定されるため、主キーはこの2つの複合キーになります。
    顧客情報や商品名などは他の表に移しているため、ここには含めません。

したがって、「注文明細(注文番号, 商品番号, 数量, 販売単価)」が正しく、第3正規形に適合した関係となります。