データベース設計(全49問中32問目)
No.32解説へ
次の "受注台帳" 表を"注文"表と"顧客" 表に分解し,第3正規形にしたとき,両方に必要な属性はどれか。ここで,送付先と支払方法は注文ごとに決めるものとする。また,表の下線は主キーを表す。
受注台帳(注文番号,注文年月日,顧客ID,顧客名,顧客住所,品目,数量,
送付先,支払方法,受注金額)
受注台帳(注文番号,注文年月日,顧客ID,顧客名,顧客住所,品目,数量,
送付先,支払方法,受注金額)
出典:平成22年秋期 問29
- 顧客ID
- 顧客名
- 支払方法
- 注文番号
広告
解説
関係データベースの正規化は次のような3段階に分けて行います。
"受注台帳"表の主キー以外の属性に注目すると、顧客ごとに固有である"顧客ID"から"顧客名"及び"顧客住所"が一意に導けることがわかります。よって、この関係を、顧客(顧客ID,顧客名,顧客住所)という別表に移しますが、このとき表同士を関連付けるために"顧客ID"を"受注台帳"表に残したままにしなければなりません。表同士がある属性で関連付けられていなければ、分解前の表を完全な状態で復元することができなくなってしまうからです。"受注台帳"表の属性"顧客ID"は、"顧客"表の主キーである"顧客ID"を参照する外部キーとなります。
- 第1正規化
- 繰り返し項目、集合値をなくす
- 第2正規化
- 主キーの一部によって一意に決まる属性を別表に移す
- 第3正規化
- 主キー以外の属性によって一意に決まる属性を別表に移す
"受注台帳"表の主キー以外の属性に注目すると、顧客ごとに固有である"顧客ID"から"顧客名"及び"顧客住所"が一意に導けることがわかります。よって、この関係を、顧客(顧客ID,顧客名,顧客住所)という別表に移しますが、このとき表同士を関連付けるために"顧客ID"を"受注台帳"表に残したままにしなければなりません。表同士がある属性で関連付けられていなければ、分解前の表を完全な状態で復元することができなくなってしまうからです。"受注台帳"表の属性"顧客ID"は、"顧客"表の主キーである"顧客ID"を参照する外部キーとなります。
- 注文表(注文番号, 注文年月日, 顧客ID, 品目, 数量, 送付先, 支払方法, 受注金額)
- 顧客表(顧客ID, 顧客名, 顧客住所)
広告