DBデータベーススペシャリスト試験 午前Ⅱ

令和5年度秋期 データベーススペシャリスト 午前Ⅱ 問5

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

従業員番号と氏名と使用できるプログラム言語を管理するために,“従業員”表及び“プログラム言語”表を設計する。“プログラム言語を2種類以上使用できる従業員がいる。プログラム言語を全く使用できない従業員もいる。”という状況を管理する“プログラム言語”表の設計として,適切なものはどれか。ここで,実線の下線は主キーを表す。
従業員表の主キーと,プログラム言語表について氏名,従業員番号又はプログラム言語のどの属性を主キーとするかを実線の下線で示した選択肢アからエ。
従業員表の主キーと,プログラム言語表について氏名,従業員番号又はプログラム言語のどの属性を主キーとするかを実線の下線で示した選択肢アからエ。

選択肢

  1. ア
    (問題の図表を参照)
  2. イ
    (問題の図表を参照)
  3. ウ
    (問題の図表を参照)
  4. エ
    (問題の図表を参照)
解き方のヒントを見る

関係を整理する視点

複数の対象間の関係を表に整理するときは、対象そのものの情報と関係に関する情報を分けて考え、重複や更新時の不整合が生じにくい構造かを確認します。

この問題で問われていること

選択肢を比べる際は、関係をどの単位で管理しているかに注目し、対象の情報と関係の情報が混在していないかを確認することに集中してください。

視点

設計を読むときは、登場する対象と、それらの組み合わせとして生じる関係を区別して整理します。各情報がどの単位に属するかを見極めると、構造の意図を比較しやすくなります。

確認ポイント

  • 対象の情報と関係の情報が、同じ単位として扱われていないか確認する
  • 同じ内容を複数箇所に持たせる必要が生じないか確認する
  • 関係の追加や変更時に、情報の整合性を保ちやすい構造か確認する
正解と解説を見る

正解

エ

解説

プログラム言語を複数使用できる従業員と、同じ言語を使用する複数の従業員を表現するには、従業員番号とプログラム言語の組合せを一意にする必要があります。また、言語を使用できない従業員は従業員表に登録し、プログラム言語表には対応行を作らないことで表現できます。

理由

従業員番号とプログラム言語の組合せを主キーにすると、同じ従業員番号に異なる言語を複数登録できます。同じ言語を複数の従業員が使用する場合も、従業員番号が異なるため登録できます。言語を全く使用できない従業員は従業員表にだけ存在し、プログラム言語表に行がなくても管理できます。

比較

氏名を主キーにすると従業員番号による管理と合わず、プログラム言語だけを主キーにすると同じ言語を複数従業員へ対応付けられません。従業員番号だけを主キーにすると、一人の従業員について一つの言語しか登録できません。

選択肢ア

これは不正解だよ。氏名を主キーにしているため、同じ氏名の登録を一意に扱う設計になり、従業員番号を用いた管理要件と一致しません。また、一人の従業員が複数のプログラム言語を使用する場合も、氏名を重複させて対応行を登録する形となり、主キーの設定が対応関係の管理に適していません。

選択肢イ

これは不正解だよ。プログラム言語だけを主キーにすると、同じプログラム言語を使用する複数の従業員を登録できません。例えば同一言語について従業員番号の異なる行を作る必要があるのに、言語の値が重複して主キー制約に反します。従業員と使用言語の対応を十分に表せません。

選択肢ウ

これは不正解だよ。従業員番号だけを主キーにすると、一人の従業員につき表へ登録できる行が一つに限られます。そのため、同じ従業員が2種類以上のプログラム言語を使用できる状況を、言語ごとの複数行として管理できません。複数の対応を区別する主キーになっていません。

選択肢エ(正解)

これは正解だよ。従業員番号とプログラム言語の組合せを主キーにするため、同じ従業員番号に異なる言語を複数登録でき、同じ言語を複数の従業員に対応付けることもできます。言語を全く使用できない従業員は従業員表に登録し、プログラム言語表に対応行を作らないことで表現できます。

学習のポイント

複数の対応関係を表す複合主キーと、対応行が存在しない状態の扱いを学びます。

出典:独立行政法人 情報処理推進機構(IPA)令和5年度秋期 データベーススペシャリスト試験 午前Ⅱ 問5(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針