基本情報技術者平成22年秋期 午前問29

問29

次の "受注台帳" 表を"注文"表と"顧客" 表に分解し,第3正規形にしたとき,両方に必要な属性はどれか。ここで,送付先と支払方法は注文ごとに決めるものとする。また,表の下線は主キーを表す。

受注台帳(注文番号,注文年月日,顧客ID,顧客名,顧客住所,品目,数量,
       送付先,支払方法,受注金額)
  • 顧客ID
  • 顧客名
  • 支払方法
  • 注文番号

分類

テクノロジ系 » データベース » データベース設計

正解

解説

関係データベースの正規化は次のような3段階に分けて行います。
第1正規化
繰り返し項目、集合値をなくす
第2正規化
主キーの一部によって一意に決まる属性を別表に移す
第3正規化
主キー以外の属性によって一意に決まる属性を別表に移す
設問の表では、主キーが単一属性ですので必然的に第2正規形の条件を満たしています。ここから第3正規形にするには、主キー以外の属性によって一意に定まる関係を別表に移すことになります。

"受注台帳"表の主キー以外の属性に注目すると、顧客ごとに固有である"顧客ID"から"顧客名"及び"顧客住所"が一意に導けることがわかります。よって、この関係を、顧客(顧客ID,顧客名,顧客住所)という別表に移しますが、このとき表同士を関連付けるために"顧客ID"を"受注台帳"表に残したままにしなければなりません。表同士がある属性で関連付けられていなければ、分解前の表を完全な状態で復元することができなくなってしまうからです。"受注台帳"表の属性"顧客ID"は、"顧客"表の主キーである"顧客ID"を参照する外部キーとなります。
  • 注文表(注文番号, 注文年月日, 顧客ID, 品目, 数量, 送付先, 支払方法, 受注金額)
  • 顧客表(顧客ID, 顧客名, 顧客住所)
したがって第3正規形にしたとき、両方の表に共通する属性は「顧客ID」です。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop