データベース|令和6年度 ITパスポート試験 問81
一つの表で管理されていた受注データを,受注に関する情報と商品に関する情報に分割して,正規化を行った上で関係データベースの表で管理する。正規化を行った結果の表の組合せとして,最も適切なものはどれか。ここで,同一商品で単価が異なるときは商品番号も異なるものとする。また,発注者名には同姓同名はいないものとする。
受注データ
| 受注番号 | 発注者名 | 商品番号 | 商品名 | 個数 | 単価 |
|---|---|---|---|---|---|
| T0001 | 試験花子 | M0001 | 商品1 | 5 | 3,000 |
| T0002 | 情報太郎 | M0002 | 商品2 | 3 | 4,000 |
| T0003 | 高度秋子 | M0001 | 商品1 | 2 | 3,000 |
〔選択肢〕(原典では選択肢そのものが図=表の項目を横一列の枠で並べたもの。項目の並びに書き起こしたもの)
- {受注番号|発注者名} / {商品番号|商品名|個数|単価}
- {受注番号|発注者名|商品番号} / {商品番号|商品名|個数|単価}
- {受注番号|発注者名|商品番号|個数|単価} / {商品番号|商品名}
- ✓ これが正解{受注番号|発注者名|商品番号|個数} / {商品番号|商品名|単価}
解説
商品ごとに決まる項目を切り出し、受注側には番号だけ残します。
正規化では、何によって値が決まるのかを見て表を分けます。商品名と単価は商品番号が決まれば決まる項目なので、商品の表へ移します。設問が同一商品で単価が違えば商品番号も違うと断っているのは、単価が商品番号だけで決まることを示すためです。個数は受注ごとに変わる値なので、受注の表に残します。発注者名は受注番号が決まれば決まるので、やはり受注の表です。二つの表は商品番号でつながります。よって、受注番号と発注者名と商品番号と個数を持つ表と、商品番号と商品名と単価を持つ表の組合せが当てはまります。分けたあとに元の表を復元できることも確かめます。
ほかの選択肢はなぜ違うのか
- 受注の側に商品番号が無いので、どの受注がどの商品なのかをたどれなくなります。表を分けたときは、つなぐための項目を両方に残す必要があります。復元できない分け方です。
- 個数を商品の表に置いています。個数は受注ごとに変わる値なので、商品番号だけでは決まりません。同じ商品を別の受注で違う数だけ買えなくなってしまいます。何によって値が決まるかを一つずつ確かめれば防げます。
- 単価を受注の表に置いています。設問の断り書きから単価は商品番号で決まるので、商品の表に置くのが正しい分け方です。受注のたびに単価を書くと、同じ値が繰り返し現れます。
この問題に関係する言葉
- 正規化
- 主キー
- 関係データベースデータを表の形で持ち、表どうしを結びつけて扱う、最も広く使われているデータベース。設計に使うE-R図は、この形での実装を前提にしません。
出典:令和6年度 ITパスポート試験 問81(改変:原典の図表をテキストに書き起こした)
同じ単元をまとめて解くならデータベースへ。
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)