本文へスキップ

平成28年度 春期 ITパスポート試験 問94

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

問94
頻出度★★★

商品の仕入状況を管理している関係データベースの“仕入一覧”表を正規化して,“仕入”表と“商品”表に分割したい。分割後の二つの表に共通して必要なフィールドとして,最も適切なものはどれか。ここで,仕入れは一度に一つの商品だけを仕入れることとし,仕入番号で一意に識別できる。また,商品は商品番号で一意に識別できる。 仕入一覧

仕入番号商品番号商品名個数単価支払方法納品日
出典 平成28年度 春期 ITパスポート試験 問94
解説

問 94

  • 不正解ア

    仕入番号は「仕入」表を一意に識別する主キーで、「仕入」表だけに属します。商品は商品番号で識別されるため「商品」表に仕入番号を置く意味はなく、両表の共通フィールドにはなりません。

  • 不正解イ

    支払方法は個々の仕入れに付随する情報(仕入番号に従属)で、「仕入」表だけに入ります。商品そのものの属性ではないので「商品」表には現れず、共通フィールドではありません。

  • ウ

    正解 「仕入一覧」表を分割すると、商品番号で一意に定まる「商品」表(商品番号・商品名・単価)と、仕入番号で一意に定まる「仕入」表(仕入番号・個数・支払方法・納品日)になります。ただしこのままでは「どの仕入でどの商品を仕入れたか」の対応が失われ、元の表を復元できません。そこで「仕入」表側に商品番号を外部キーとして持たせます。すると商品番号は「商品」表では主キー、「仕入」表では外部キーとして両方の表に現れ、これを手掛かりに二つの表を結合して元の「仕入一覧」を再現できます。したがって両表に共通して必要なフィールドは商品番号(ウ)です。

  • 不正解エ

    商品名は商品番号に従属する商品固有の属性で、「商品」表だけに入ります。二つの表を結び付けるキーではないため、共通して持たせるフィールドとしては不適切です。

ここがポイント
  • 関係データベースの正規化で表を分割するとき、分割後の表どうしを再結合できるよう、一方の主キーをもう一方に外部キーとして持たせる。この主キー=外部キーの列が両表に共通するフィールドになる。
  • 各フィールドがどの識別子(主キー)に従属するかを見極める。商品番号に従属する属性(商品名・単価)は「商品」表、仕入番号に従属する属性(個数・支払方法・納品日)は「仕入」表へ振り分け、連結役の商品番号を両表に置く。
用語

解答の記録