マナビングITパスポート

従業員表の主キーを選ぶときの着眼点

ITパスポート試験 令和4年度 問65 / データベース › データベース設計

過去問にチャレンジ

令和4年度 問65

条件①〜⑤によって、関係データベースで管理する「従業員」表と「部門」表を作成した。「従業員」表の主キーとして、最も適切なものはどれか。 〔条件〕 ① 各従業員は重複のない従業員番号を一つもつ。 ② 同姓同名の従業員がいてもよい。 ③ 各部門は重複のない部門コードを一つもつ。 ④ 一つの部門には複数名の従業員が所属する。 ⑤ 1人の従業員が所属する部門は一つだけである。

令和4年度 問65の図
  1. ア

    “従業員番号”

  2. イ

    “従業員番号”と“部門コード”

  3. ウ

    “従業員名”

  4. エ

    “部門コード”

会話形式の解説

講師講師
この問題では、従業員表の一行を重複なく識別できる列に注目します。主キーは、識別に必要な最小限の列を選びます。
受験者受験者
従業員番号は重複しないので、それだけで一人を特定できそうです。
講師講師
そのとおりです。従業員番号だけで各行を識別できるため、最も適切なのは従業員番号です。
受験者受験者
従業員番号と部門コードを組み合わせれば、さらに確実になるのではないですか。
講師講師
組合せでも識別できますが、従業員番号だけで十分です。部門コードを加える必要はありません。
受験者受験者
従業員名は、同姓同名の人がいると重複してしまいますね。
講師講師
はい。名前だけでは各行を識別できないので、主キーにはできません。
受験者受験者
部門コードは重複しないという条件がありますが、これだけではどうですか。
講師講師
部門ごとには重複しません。ただし、一つの部門に複数の従業員が所属するので、従業員表では同じ部門コードが複数の行に現れます。
受験者受験者
どの表の行を識別するかが大切なのですね。従業員表では、従業員番号を一つ選べば十分です。
講師講師
その理解で合っています。列が重複しないという条件は、対象の表で確かめましょう。

まとめ

主キーには、対象の表の各行を重複なく識別できる列を選びます。従業員番号は重複しないため、従業員表ではこの列だけで十分です。従業員名は同姓同名の人がいると重複し、部門コードも同じ部門の従業員間で重複します。従業員番号と部門コードの組合せは識別に使えますが、不要な列を含むため最も適切ではありません。

解答・解説

正解はアです

この問題のテーマ

従業員表の主キーを、一意性と必要最小限の列という観点から選ぶ問題です。

解き方の考え方

主キーは、表の各行を重複なく識別できる列を選びます。複数の列を組み合わせる場合も、識別に不要な列は含めません。条件①で従業員番号の一意性が示されているので、ほかの候補が必要かを確かめます。

選択肢ごとの解説

  1. ○ア  “従業員番号”
    従業員番号は、各従業員に重複なく割り当てられています。従業員表の各行をこの列だけで識別できるため、主キーとして最も適切です。
  2. ×イ  “従業員番号”と“部門コード”
    従業員番号と部門コードの組合せでも行を識別できます。しかし、従業員番号だけで識別できるので、部門コードを加える必要がありません。
  3. ×ウ  “従業員名”
    従業員名は、同姓同名の人がいてもよいという条件があります。同じ名前の行が生じ得るため、従業員名だけでは主キーにできません。
  4. ×エ  “部門コード”
    一つの部門には複数名の従業員が所属します。その従業員たちは同じ部門コードを持つため、部門コードだけでは従業員表の行を識別できません。

補足

部門コードは部門ごとには重複しませんが、従業員表では同じ部門に属する人の間で重複します。どの表の行を識別するのかに注目しましょう。

POINT

  • 主キーは表の各行を一意に識別できる列を選びます。
  • 一つの列で識別できるなら、不要な列を加えません。
  • 従業員番号は重複しないので、従業員表の主キーにできます。
  • 従業員名や部門コードは、この条件では従業員表の行ごとに異なるとは限りません。

※出典:令和4年度 ITパスポート試験 問65(一部改変)