AUシステム監査技術者試験 午前Ⅰ
平成25年度春期 システム監査技術者 午前Ⅰ 問11
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題

選択肢
- ア社員(社員番号、氏名、職種、プログラム言語)
- イ社員(社員番号、氏名、プログラム言語)
- ウ社員(社員番号,氏名) プログラマ(社員番号,プログラム言語)
- エ社員(社員番号,氏名) プログラマ(社員番号,プログラム言語)
解き方のヒントを見る
関係と制約を見分ける視点
データのまとまり同士のつながりと、個々のデータが満たすべき条件を分けて捉え、設問がどの観点の整理を求めているかを、用語の役割と文脈から丁寧に慎重に確認していきます。
この問題で問われていること
一つの観点として、対象間のつながりを述べているのか、それとも各項目の値や組合せに求められる条件を述べているのかを、問題文の主語と対象範囲に沿って整理してください。
視点
概念を整理するときは、まず何を対象としている説明かを確認し、対象同士の対応に関する話と、データの成立条件に関する話を混同しないようにします。
確認ポイント
- 説明の対象が何かを確認する
- 対象同士の話か項目の条件かを区別する
- 問題文の主語と対象範囲を照合する
正解と解説を見る
正解
エ
解説
社員全体を表す表と、プログラマだけが持つ言語情報を表す表を分け、社員番号による関連付けと、社員番号・言語の組合せによる識別を行う設計が適切です。
設計の考え方
社員表では社員番号と氏名を管理し、プログラマ表ではプログラマに固有のプログラム言語を管理する。プログラマ表を社員番号とプログラム言語の組で識別すれば、一人の社員が複数の言語を使う状況を別々の行で表現できる。
キーの役割
プログラマ表の社員番号は社員表を参照する外部キーであり、プログラマが社員であることを表します。一方、プログラム言語は社員番号とともに主キーの構成要素となり、同じ社員の言語ごとの行を区別する。
選択肢ア
これは不正解だよ。社員表にプログラム言語を直接持たせると、同じ社員が複数言語を使う場合に一つの属性へ複数値を詰めるか、社員情報を言語ごとに重複させることになる。「一つ以上」という条件を行単位で自然に表現できず、表の役割も分離されていない。
選択肢イ
これは不正解だよ。社員番号と氏名に加えてプログラム言語だけを社員表へ置いており、状況に含まれる職種を記録できない。また、複数言語を持つ社員の表現も一つの社員行に依存するため、社員情報とプログラマ固有の情報を分けて管理する設計になっていない。
選択肢ウ
これは不正解だよ。社員表とプログラマ表を分ける点は状況に近いが、プログラマ表でプログラム言語が主キーの構成要素として扱われていない。社員番号だけでは同じ社員の複数言語を別行として一意に識別できず、「一つ以上」の関係を正しく記録できない。
選択肢エ(正解)
これは正解だよ。社員表は社員番号で社員を一意に識別し、プログラマ表は社員番号とプログラム言語の組で、社員ごとの言語を一行ずつ記録できる。プログラマ表の社員番号は社員表を参照する外部キーなので、プログラマが社員であることも表現でき、複数言語にも対応できる。
学習のポイント
主キー、外部キー、複合主キーの役割と多値属性の分離を学ぶ。
出典:独立行政法人 情報処理推進機構(IPA)平成25年度春期 システム監査技術者試験 午前Ⅰ 問11(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針