平成22年度 秋期 午前 問29
データベース
第3正規形に関する問題
次の "受注台帳" 表を "注文" 表と "顧客" 表に分解し,第3正規形にしたとき,両方に必要な属性はどれか。ここで,送付先と支払方法は注文ごとに決めるものとする。また,表の下線は主キーを表す。
受注台帳(【注文番号】, 注文年月日, 顧客ID, 顧客名, 顧客住所, 品目, 数量, 送付先, 支払方法, 受注金額) 【 】で囲んだ「注文番号」は,原典では下線(=主キー)
- ア顧客 ID
- イ顧客名
- ウ支払方法
- エ注文番号
答えと解説を見る
✓ これが正解ア顧客 ID
解説
分けた二つの表をつなぎ直す属性が必要です。
受注台帳には、注文ごとに決まる事柄と、顧客ごとに決まる事柄が混ざっています。顧客名や顧客住所は、同じ顧客なら注文が何件あっても同じ値になるので、注文の側に置いたままだと同じ内容が何度も現れます。この重複をなくすのが第3正規形への分解で、顧客の情報を別の表へ移し、注文の表にはどの顧客かを指す属性だけを残します。分けたあとで元の内容を復元できなければ意味がないので、両方の表に共通して置き、突き合わせの手掛かりになる属性が必要です。それは顧客の表では行を一意に決める主キーになり、注文の表ではどの顧客の注文かを指す印になります。判定の軸は、その属性が二つの表それぞれで役目を持つかどうかです。片方の表だけで用が足りる属性は、両方に置く必要がありません。
ほかの選択肢はなぜ違うのか
- イ顧客名:同じ顧客なら常に同じ値になるので、顧客の側の表に一度だけ置けば足ります。注文の側にも持たせてしまうと、重複をなくすために分解した意味がなくなります。
- ウ支払方法:設問は注文ごとに決めるものだと断っています。顧客に付いて回る事柄ではないため、注文の表だけに置けばよく、顧客の表へ持たせる理由がありません。
- エ注文番号:注文の表では行を一意に決める役目を担いますが、顧客の表にはこの値を置く場所がありません。一人の顧客が何件も注文しうるので、値が一つに定まらないからです。
出典:平成22年度 秋期 基本情報技術者試験 午前 問29(改変:原典の図表をテキストに書き起こした)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)