データベース|令和5年度 ITパスポート試験 問59
関係データベースで管理された“会員管理”表を正規化して,“店舗”表,“会員種別”表及び“会員”表に分割した。“会員”表として,適切なものはどれか。ここで,表中の下線は主キーを表し,一人の会員が複数の店舗に登録した場合は,会員番号を店舗ごとに付与するものとする。
会員管理
| <u>店舗コード</u> | 店舗名 | <u>会員番号</u> | 会員名 | 会員種別コード | 会員種別名 |
|---|---|---|---|---|---|
| 001 | 札幌 | 1 | 試験 花子 | 02 | ゴールド |
| 001 | 札幌 | 2 | 情報 太郎 | 02 | ゴールド |
| 002 | 東京 | 1 | 高度 次郎 | 03 | 一般 |
| 002 | 東京 | 2 | 午前 桜子 | 01 | プラチナ |
| 003 | 大阪 | 1 | 午前 桜子 | 03 | 一般 |
店舗
| <u>店舗コード</u> | 店舗名 |
|---|
会員種別
| <u>会員種別コード</u> | 会員種別名 |
|---|
〔選択肢〕(原典では選択肢そのものが図=項目を横一列の枠で並べ,主キーに下線を引いたもの。項目の並びに書き起こしたもの)
- {<u>会員番号</u>|会員名}
- {<u>会員番号</u>|会員名|会員種別コード}
- {<u>会員番号</u>|<u>店舗コード</u>|会員名}
- ✓ これが正解{<u>会員番号</u>|<u>店舗コード</u>|会員名|会員種別コード}
解説
店舗コードも主キーに含め、会員種別コードを残した形です。
正規化では、繰り返し現れる情報を別の表に切り出し、残った表には、その表でしか決まらない項目だけを置きます。店舗名は店舗表へ、会員種別名は会員種別表へ移るので、会員表に残るのは会員名と会員種別コードです。ここで効いてくるのが、一人の会員が複数の店舗に登録した場合は会員番号を店舗ごとに付与するという条件です。会員番号だけでは行を一つに決められないので、店舗コードと会員番号の二つを合わせて主キーにする必要があります。よって会員番号と店舗コードを主キーとし、会員名と会員種別コードをもつ形が適切です。切り出した先の表に移った項目を、元の表にも残しておくと、同じ事実が二か所に置かれることになり、正規化した意味が薄れます。
ほかの選択肢はなぜ違うのか
- 会員番号と会員名だけの形です。会員番号だけを主キーにすると、店舗が違えば同じ番号があり得るため、行を一つに決められません。会員種別コードも落ちているので、どの種別に属するかをたどれなくなります。
- 会員種別コードは残していますが、主キーが会員番号だけになっています。店舗ごとに番号を付ける以上、同じ番号の会員が別の店舗に存在し得るので、これでは行を見分けられません。複合キーが要るかどうかは、同じ値の行があり得るかで決まります。会員番号だけでは足りません。
- 主キーは会員番号と店舗コードの二つで正しいのですが、会員種別コードが落ちています。会員がどの種別に属するかを示す項目が無くなると、会員種別表との結び付きが切れてしまいます。
この問題に関係する言葉
- 正規化
- 主キー
- 関係データベースデータを表の形で持ち、表どうしを結びつけて扱う、最も広く使われているデータベース。設計に使うE-R図は、この形での実装を前提にしません。
出典:令和5年度 ITパスポート試験 問59(改変:原典の図表をテキストに書き起こした)
同じ単元をまとめて解くならデータベースへ。
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)