本文へスキップ

令和6年度 ITパスポート試験 問81

この問題の解説と、これまでの解答の記録です。

問81
頻出度★★★

一つの表で管理されていた受注データを,受注に関する情報と商品に関する情報に分割して,正規化を行った上で関係データベースの表で管理する。正規化を行った結果の表の組合せとして,最も適切なものはどれか。ここで,同一商品で単価が異なるときは商品番号も異なるものとする。また,発注者名には同姓同名はいないものとする。 受注データ

受注番号発注者名商品番号商品名個数単価
T0001試験花子M0001商品153,000
T0002情報太郎M0002商品234,000
T0003高度秋子M0001商品123,000
  • 上段表
    受注番号発注者名 / 下段表: 商品番号商品名個数単価
  • 上段表
    受注番号発注者名商品番号 / 下段表: 商品番号商品名個数単価
  • 上段表
    受注番号発注者名商品番号個数単価 / 下段表: 商品番号商品名
  • 上段表
    受注番号発注者名商品番号個数 / 下段表: 商品番号商品名単価
出典 令和6年度 ITパスポート試験 問81
解説

問 81

  • 不正解ア

    受注側の表に商品番号が無く、商品表と結び付ける外部キーが失われている。さらに個数を商品表に入れているが、個数は受注番号で決まる(注文ごとの値)ので商品番号に従属せず、商品表には置けない。誤り。

  • 不正解イ

    個数を商品表に入れている点が誤り。個数は商品ごとに固定される値ではなく受注ごとに決まる(受注番号 → 個数)ため、商品番号を主キーとする商品表には属さない。同じ商品でも注文によって個数が変わるので重複・矛盾の原因になる。

  • 不正解ウ

    単価を受注側の表に残している点が誤り。単価は商品番号で一意に決まる(商品番号 → 単価)ので、商品表へ移さなければ同じ商品番号の行で単価が繰り返し現れ重複が残る。商品表が「商品番号・商品名」だけで単価を欠くため正規化が不完全。

  • エ

    正解 正解はエ。元の受注データの関数従属を整理すると、受注番号が決まれば発注者名・商品番号・個数が一意に決まり(受注番号 → 発注者名・商品番号・個数)、商品番号が決まれば商品名・単価が一意に決まる(商品番号 → 商品名・単価)。条件「同一商品で単価が異なるときは商品番号も異なる」が、商品番号 → 単価 の従属を保証している点がポイント。よって受注に関する表は「受注番号(主キー)・発注者名・商品番号(外部キー)・個数」、商品に関する表は「商品番号(主キー)・商品名・単価」となる。個数は注文ごとに変わるので受注側に残し、単価は商品で決まるので商品側に移して重複を排除する。これがエの組合せに一致する。

ここがポイント
  • 関数従属性に基づく正規化: 受注番号 → 発注者名・商品番号・個数、商品番号 → 商品名・単価 と整理し、従属先ごとに表を分割する。
  • 属性の配置判断: 個数は注文ごとに決まるので受注表、単価・商品名は商品番号で決まるので商品表に置き、商品番号を外部キーで結ぶことで重複を排除する。
用語

解答の記録