データベース|令和4年度 ITパスポート試験 問65
条件①〜⑤によって,関係データベースで管理する“従業員”表と“部門”表を作成した。“従業員”表の主キーとして,最も適切なものはどれか。
〔条件〕
- ① 各従業員は重複のない従業員番号を一つもつ。
- ② 同姓同名の従業員がいてもよい。
- ③ 各部門は重複のない部門コードを一つもつ。
- ④ 一つの部門には複数名の従業員が所属する。
- ⑤ 1人の従業員が所属する部門は一つだけである。
従業員
| 従業員番号 | 従業員名 | 部門コード | 生年月日 | 住所 |
|---|
部門
| 部門コード | 部門名 | 所在地 |
|---|
- ✓ これが正解“従業員番号”
- “従業員番号”と“部門コード”
- “従業員名”
- “部門コード”
解説
主キーは行を一つに決める最小の項目で、ここでは従業員番号です。
関係データベースの主キーは、その表の一つの行をほかと取り違えずに指し示せる項目です。条件①に、各従業員は重複のない従業員番号を一つもつとあるので、従業員番号が分かれば行は一つに決まります。従業員名は、条件②が同姓同名の従業員がいてもよいと断っているため、同じ名前で複数の行が並びうるので使えません。部門コードは、条件④のとおり一つの部門に複数名が所属するので、これだけでは行を絞れません。では従業員番号と部門コードを組にすればどうかというと、条件⑤から従業員が所属する部門は一つだけなので、部門コードを足しても絞り込みは進まず、余分な項目を抱えるだけになります。この部門コードは、部門表を指し示す外部キーの役目です。五つの条件は一つも飾りではありません。よって最も適切なのは従業員番号です。
ほかの選択肢はなぜ違うのか
- 従業員番号と部門コードを組にした案です。たしかにこの組でも行は一つに決まりますが、条件⑤により従業員の部門は一つだけなので、部門コードを足しても絞り込みには寄与しません。主キーには、行を決めるのに必要な項目だけを選びます。
- 従業員名を主キーにする案ですが、条件②が同姓同名の従業員がいてもよいとはっきり断っています。同じ名前の行が二つ並んだ時点でどちらを指すのか決められなくなるので、行を一つに特定するという役目を果たせません。
- 部門コードを主キーにする案ですが、条件④により一つの部門には複数名の従業員が所属します。同じ部門コードをもつ行がいくつも並ぶので、行を一つに絞れません。この項目は、部門表を指し示す外部キーとして働くものです。
この問題に関係する言葉
- 主キー
- 関係データベースデータを表の形で持ち、表どうしを結びつけて扱う、最も広く使われているデータベース。設計に使うE-R図は、この形での実装を前提にしません。
- 外部キー
出典:令和4年度 ITパスポート試験 問65(改変:原典の図表をテキストに書き起こした)
同じ単元をまとめて解くならデータベースへ。
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)