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

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

受注データ
図の説明テキスト

受注データの表

受注番号 発注者名 商品番号 商品名 個数 単価
T0001 試験花子 M0001 商品1 5 3,000
T0002 情報太郎 M0002 商品2 3 4,000
T0003 高度秋子 M0001 商品1 2 3,000
解答・解説

正解: エ.

関係データベースにおける正規化の問題です。
与えられた「受注データ」の表を、「受注に関する情報」と「商品に関する情報」に分割する際、データに重複や矛盾が生じないように属性(項目)を正しく配置する必要があります。

データの関係性(関数従属性)を整理すると以下のようになります。

  1. 受注に関する情報

    • 「受注番号」が決まれば、「発注者名」「商品番号」「個数」が決まります。
    • 表のデータを見ると、受注番号「T0001」から、発注者名「試験花子」、商品番号「M0001」、個数「5」が特定できます。
  2. 商品に関する情報

    • 問題文に「同一商品で単価が異なるときは商品番号も異なる」とあるため、「商品番号」が決まれば「商品名」と「単価」が一意に決まります。
    • 表のデータを見ると、商品番号「M0001」に対して、商品名「商品1」、単価「3,000」が必ず対応しています。

したがって、正規化を行って2つの表に分割した結果は以下のようになります。

  • 受注に関する表:{受注番号, 発注者名, 商品番号, 個数}
  • 商品に関する表:{商品番号, 商品名, 単価}

この構成と完全に一致しているのはエの図表です。

各選択肢の解説

  • ア:商品に関する表に「個数」が含まれています。「個数」は受注ごとに異なる値(例:M0001はT0001では5個、T0003では2個)となるため、商品番号だけでは一意に決まらず不適切です。また、受注に関する表から「商品番号」と「個数」が欠落しており、誰がどの商品を何個受注したのか分からなくなっています。
  • イ:アと同様に、商品に関する表に「個数」が含まれているため不適切です。
  • ウ:受注に関する表に「単価」が含まれています。問題の条件より「単価」は商品ごとに決まる情報(商品番号に従属する情報)であるため、冗長性を排除する正規化の目的に照らし合わせると、商品に関する表に配置するのが適切です。
  • エ:正解です。「受注番号」に依存する情報と、「商品番号」に依存する情報が正しく分割されています。

Spineチーム