データベース|平成30年度 春期 ITパスポート試験(特別措置試験) 問81
顧客名と住所,商品名と単価,顧客が注文した商品の個数と注文した日付を関係データベースで管理したい。正規化された表として,適切なものはどれか。ここで,下線は主キーを表し,顧客名や商品名には,それぞれ同一のものがあるとする。
〔選択肢〕(原典では選択肢そのものが表=表の名前と項目を枠で並べ,主キーに下線を引いたもの。表ごとに / で区切り,項目の並びに書き起こしたもの)
- ✓ これが正解顧客{<u>顧客番号</u>|顧客名|住所} / 商品{<u>商品番号</u>|商品名|単価} / 注文{<u>注文番号</u>|顧客番号|商品番号|個数|日付}
- 顧客{<u>顧客番号</u>|顧客名|住所} / 商品{<u>商品番号</u>|商品名|単価} / 注文{<u>注文番号</u>|顧客名|商品名|個数|日付}
- 顧客{<u>顧客番号</u>|顧客名|住所|日付} / 注文{<u>注文番号</u>|顧客名|商品名|単価|個数}
- 商品{<u>商品番号</u>|商品名|単価|個数} / 注文{<u>注文番号</u>|商品番号|顧客名|住所|日付}
解説
注文の表は、名前ではなく番号のほうで相手を指します。
表を分けるときの狙いは、同じことを二か所に書かないことと、必要なものを落とさないことです。この分け方を正規化と呼びます。ここでは、顧客の情報、商品の情報、注文の情報の三つに分けます。注文の表には、誰が何をいくつ、いつ買ったかだけを置きます。このとき効いてくるのが、設問の最後に置かれた断りです。顧客名も商品名も、同じものが複数あると書いてあります。つまり名前では相手を一つに決められません。だから注文の表は、名前ではなく番号で相手を指す必要があります。表が二つしかない案は、注文だけの情報が顧客や商品の表に紛れ込んでいて、分け方そのものが崩れています。分ける問題では、まず表の数を数え、次にそれぞれの表が何で相手を指しているかを見ます。この二段で、四つの案はきれいに分かれます。順が決まっています。
ほかの選択肢はなぜ違うのか
- 三つの表に分けるところまでは同じですが、注文の表が名前のほうで相手を指しています。同じ名前が複数あると断ってあるので、これでは相手が一つに決まりません。設問の最後の一文は、まさにこの肢を落とすために置かれています。
- 表が二つしかなく、商品の表がありません。さらに顧客の表に注文の日付が入っており、注文ごとに変わる情報が顧客の情報に紛れ込んでいます。同じことを二か所に書かない、という狙いから外れた形になっています。分け方の数だけでは足りません。
- こちらも表が二つで、今度は顧客の表がありません。商品の表に注文の個数が入っており、商品ごとの情報と注文ごとの情報が混ざっています。同じ商品が買われるたびに書き換えが必要になり、分けた意味がなくなります。更新の手間も増えます。
この問題に関係する言葉
- 正規化
- 主キー
- 外部キー
- 関係データベースデータを表の形で持ち、表どうしを結びつけて扱う、最も広く使われているデータベース。設計に使うE-R図は、この形での実装を前提にしません。
出典:平成30年度 春期 ITパスポート試験(特別措置試験) 問81(改変:原典の図表をテキストに書き起こした)
同じ単元をまとめて解くならデータベースへ。
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)