PMプロジェクトマネージャ試験 午前Ⅰ

平成25年度春期 プロジェクトマネージャ 午前Ⅰ 問11

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

問題

“プログラマは全て社員であり、社員の約10%を占める。社員は社員番号と氏名をもち、職種がプログラマである場合は、使用できるプログラム言語を一つ以上もつ。”という状況を記録するデータベース設計案として、適切なものはどれか。ここで、実線の下線は主キーを、破線の下線は外部キーを表す。
選択肢ア~エの関係スキーマ。主キーの実線下線と外部キーの破線下線を完全に保持する。
選択肢ア~エの関係スキーマ。主キーの実線下線と外部キーの破線下線を完全に保持する。

選択肢

  1. ア
    社員(社員番号、氏名、職種、プログラム言語)
  2. イ
    社員(社員番号、氏名、プログラム言語)
  3. ウ
    社員(社員番号,氏名) プログラマ(社員番号,プログラム言語)
  4. エ
    社員(社員番号,氏名) プログラマ(社員番号,プログラム言語)
解き方のヒントを見る

関係と制約を見分ける視点

データのまとまり同士のつながりと、個々のデータが満たすべき条件を分けて捉え、設問がどの観点の整理を求めているかを、用語の役割と文脈から丁寧に慎重に確認していきます。

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

一つの観点として、対象間のつながりを述べているのか、それとも各項目の値や組合せに求められる条件を述べているのかを、問題文の主語と対象範囲に沿って整理してください。

視点

概念を整理するときは、まず何を対象としている説明かを確認し、対象同士の対応に関する話と、データの成立条件に関する話を混同しないようにします。

確認ポイント

  • 説明の対象が何かを確認する
  • 対象同士の話か項目の条件かを区別する
  • 問題文の主語と対象範囲を照合する
正解と解説を見る

正解

エ

解説

社員全体を表す表と、プログラマだけが持つ言語情報を表す表を分け、社員番号による関連付けと、社員番号・言語の組合せによる識別を行う設計が適切です。

設計の考え方

社員表では社員番号と氏名を管理し、プログラマ表ではプログラマに固有のプログラム言語を管理する。プログラマ表を社員番号とプログラム言語の組で識別すれば、一人の社員が複数の言語を使う状況を別々の行で表現できる。

キーの役割

プログラマ表の社員番号は社員表を参照する外部キーであり、プログラマが社員であることを表します。一方、プログラム言語は社員番号とともに主キーの構成要素となり、同じ社員の言語ごとの行を区別する。

選択肢ア

これは不正解だよ。社員表にプログラム言語を直接持たせると、同じ社員が複数言語を使う場合に一つの属性へ複数値を詰めるか、社員情報を言語ごとに重複させることになる。「一つ以上」という条件を行単位で自然に表現できず、表の役割も分離されていない。

選択肢イ

これは不正解だよ。社員番号と氏名に加えてプログラム言語だけを社員表へ置いており、状況に含まれる職種を記録できない。また、複数言語を持つ社員の表現も一つの社員行に依存するため、社員情報とプログラマ固有の情報を分けて管理する設計になっていない。

選択肢ウ

これは不正解だよ。社員表とプログラマ表を分ける点は状況に近いが、プログラマ表でプログラム言語が主キーの構成要素として扱われていない。社員番号だけでは同じ社員の複数言語を別行として一意に識別できず、「一つ以上」の関係を正しく記録できない。

選択肢エ(正解)

これは正解だよ。社員表は社員番号で社員を一意に識別し、プログラマ表は社員番号とプログラム言語の組で、社員ごとの言語を一行ずつ記録できる。プログラマ表の社員番号は社員表を参照する外部キーなので、プログラマが社員であることも表現でき、複数言語にも対応できる。

学習のポイント

主キー、外部キー、複合主キーの役割と多値属性の分離を学ぶ。

出典:独立行政法人 情報処理推進機構(IPA)平成25年度春期 プロジェクトマネージャ試験 午前Ⅰ 問11(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

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