令和6年試験問題 問81

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

  • 81a.png
  • 81i.png
  • 81u.png
  • 81e.png
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:データベース設計
解説
データベースの正規化は、データベースを構築する際にデータの重複や矛盾を排除する目的で、データ同士の関連を保ったまま複数の表に分解していく作業です。正規化は次のように3段階の手順を踏んで行います。
第1正規化
属性値に含まれる繰り返し項目をなくす
第2正規化
主キーが複数の項目の組合せから成る複合主キーのときに、主キーの一部の項目によって一意に決まる項目を別表に移す
第3正規化
主キー以外の項目によって一意に決まる項目を別表に移す
【第1正規化】
受注データ表は、既にすべての項目の値が単一値なので第1正規形の条件を満たしています。

【第2正規化】
受注データの主キーは、各行を一意に特定できる属性である"受注番号"です。主キーが単一属性の場合、主キーの一部というものが存在しないため、すでに第2正規形になっています。

【第3正規化】
受注データ表の項目を見ると、非主キー列である"商品番号"により"商品名"が一意に決まります。また設問にある「同一商品で単価が異なるときは商品番号も異なる」を逆から考えれば、"商品番号"が同じ商品は"単価"が同じということです。このため、"商品番号"により"単価"が一意に決まることになります。したがって、この2つの関係を別表に移します。
81_1.png
このように分離していくと、正規化後の会員表の項目は以下のようになります。

 {受注番号、発注者名、商品番号、個数}
 {商品番号、商品名、単価}
 
したがって「エ」が正解です。
  • "個数"を別表に移していること、2つの表に共通の属性がなく関連付けが行われていないことの2点で不適切です。
  • "個数"は商品番号によって一意に決まらないので、別表に移してはいけません。
  • "単価"を別表に移していないので不適切です。
  • 正しい。適切な正規化をした表です。

Pagetop