基本情報技術者 2018年 春期 午後 問05
健康管理システムの設計に関する次の記述を読んで、設問1,2に答えよ。
K社は、従業員の健康診断管理業務に健康管理システムを利用している。全従業員には、年1回、誕生月に定期健康診断を受診させる。再検査が必要となった場合には、再度、健康診断を受診させる。
〔健康管理システムを利用した健康診断管理業務の説明〕
月初に、受診日(当月中旬の特定日)を指定して受診案内を通知する。受診すれば、受診した月の月末に健康診断結果を通知する。
(1) 健康管理システムに、当月の受診対象者を登録する。
① 当月が誕生月である従業員を抽出する。
② 前月の定期健康診断において、再検査が必要と判定された従業員を抽出する。
③ ①と②で抽出した従業員を受診対象者とし、健康診断コースを決定する。
④ 受診日を決定し、受診対象者の健康診断レコードを健康管理システムに登録する。
(2) 受診案内を受診対象者に通知する。
(3) 定期健康診断及び再検査の受診後に、受診者の判定結果などを健康管理システムに登録する。
(4) 受診者に、健康診断結果を通知する。
〔健康管理システムの機能の説明〕
健康管理システムの機能一覧を、表1に示す。表1において、“業務との対応”列の項番は、〔健康管理システムを利用した健康診断管理業務の説明〕の項番に対応する。各機能では、健康管理システムの健康診断ファイルのアクセスと、人事システムの各マスタファイル(以下、マスタという)の情報の参照を行う。
〔健康管理システム及び人事システムの関係の説明〕
健康管理システムは、健康診断結果を健康診断ファイルで管理し、従業員の情報については、必要な項目の最新情報を人事システムの各マスタを参照して利用する。健康管理システム及び人事システムの関係は、図1のとおりである。
〔健康診断ファイルの説明〕
健康診断ファイルのレコード様式を、図2に示す。下線付きの項目は、主キーである。
(1) 対象年には、定期健康診断の受診対象となった年を設定する。再検査の場合は、前月に受診した定期健康診断の対象年と同じとする。
(2) 実施年月には、健康診断を受診する年月を設定する。
(3) 区分には、定期健康診断の場合は“定期”を、再検査の場合は“再検”を設定する。
(4) 判定結果、再検査要否及び判定年月日は、対象者登録機能で空白を設定し、判定結果登録機能で更新する。
〔人事システムの各マスタの説明〕
健康管理システムが参照する人事システムの各マスタのレコード様式を、図3に示す。下線付きの項目は、主キーである。

従業員マスタは、従業員の氏名、性別、生年月日などを保持する。従業員コードは、従業員に一意に付けられた番号であり、在勤地コードには、現在の在勤地の在勤地コードが入っている。職位マスタは、職位名と管理職フラグを保持し、管理職フラグで管理職かどうかが判別できる。在勤地マスタは、在勤地名とその在勤地の健康診断実施場所を保持する。
設問1:
問題文を見る 次の記述中のに入れる適切な答えを、解答群の中から選べ。
健康診断内容決定機能において、定期健康診断対象者抽出機能で従業員マスタから抽出された情報に加えて、定期健康診断の健康診断コース及び健康診断実施場所を決定するために最低限必要となるのは、aの情報である。再検査対象者抽出機能で健康診断ファイルから抽出された情報に加えて、再検査の健康診断実施場所を決定するために最低限必要となるのは、bの情報である。
a, bに関する解答群
ア:従業員マスタ
イ:従業員マスタ及び職位マスタ
ウ:従業員マスタ及び在勤地マスタ
エ:従業員マスタ、職位マスタ及び在勤地マスタ
オ:職位マスタ
カ:職位マスタ及び所属マスタ
キ:職位マスタ及び在勤地マスタ
ク:所属マスタ
ケ:所属マスタ及び在勤地マスタ
コ:在勤地マスタ
模範解答
a:キ、b:ウ
解説
解答の導き方
この設問では、健康診断のコースや実施場所を決めるとき、すでに取り出してある情報に加えて、どの情報が必要かを考えます。人事システムのマスタとは、職位や在勤地など、業務で参照する基本情報をまとめたファイルです。
a:定期健康診断の場合
健康診断コースは、従業員の「年齢、性別、管理職かどうか」で決まります。従業員マスタには生年月日と性別があります。生年月日から年齢を確認できます。また、職位コードもありますが、コードだけでは管理職かどうかは分かりません。職位コードを手掛かりに職位マスタを参照し、管理職フラグ(管理職かどうかを示す値)を確認する必要があります。
健康診断実施場所は「従業員の現在の在勤地に基づいて決定する」とあります。従業員マスタには現在の在勤地コードがあり、そのコードを使って在勤地マスタを参照すると、対応する健康診断実施場所が分かります。
つまり、従業員マスタから抽出した情報に追加して必要なのは、管理職かどうかを確認するための職位マスタと、実施場所を確認するための在勤地マスタです。したがって、aは「職位マスタ及び在勤地マスタ」です。
b:再検査の場合
再検査の健康診断コースは、前月に受診した定期健康診断のコースと同じです。そのため、コースを決めるために職位マスタを追加で参照する必要はありません。
一方、再検査の実施場所は、現在の在勤地に基づいて決めます。健康診断ファイルから得た従業員コードを手掛かりに従業員マスタを参照し、現在の在勤地コードを確認します。さらに、そのコードを使って在勤地マスタを参照し、健康診断実施場所を確認します。転勤によって在勤地が変わっている可能性があるため、前回の健康診断ファイルに記録された場所ではなく、現在の情報が必要です。
したがって、bは「従業員マスタ及び在勤地マスタ」です。
誤りやすいポイント
- 従業員マスタに職位コードがあるだけで、管理職かどうかまで分かると考えないようにします。職位コードから職位マスタを参照して、管理職フラグを確認します。
- 従業員マスタに在勤地コードがあるだけでは、健康診断実施場所までは分かりません。在勤地マスタも必要です。
- 再検査では、前回の健康診断コースを引き継ぎます。定期健康診断と同じように、年齢や管理職かどうかからコースを決め直すわけではありません。
- 再検査の場所を決めるときは、転勤の可能性を考えて、健康診断ファイルの過去の場所ではなく、現在の在勤地を確認します。
FAQ
Q: 再検査のとき、なぜ従業員マスタが必要なのですか?
A: 健康診断ファイルから分かる従業員コードを使って、従業員マスタにある現在の在勤地コードを確認するためです。
A: 健康診断ファイルから分かる従業員コードを使って、従業員マスタにある現在の在勤地コードを確認するためです。
Q: 再検査のコースを決めるとき、職位マスタを参照しなくてよいのはなぜですか?
A: 再検査のコースは、前月に受診した定期健康診断のコースと同じにするためです。
A: 再検査のコースは、前月に受診した定期健康診断のコースと同じにするためです。
Q: 在勤地コードが分かれば、実施場所も分かりますか?
A: いいえ。在勤地コードと健康診断実施場所の対応を在勤地マスタで確認します。
A: いいえ。在勤地コードと健康診断実施場所の対応を在勤地マスタで確認します。
関連キーワード: マスタファイル、識別コード、データ参照、データ結合
設問2:
問題文を見る 次の記述中のに入れる適切な答えを、解答群の中から選べ。
今回、健康管理業務として、12月の受診者の健康診断の判定結果を登録した後に、当年の健康診断の未受診者を抽出することになった。そのために、未受診者抽出機能を追加することにした。ここで、当年の健康診断の未受診者は、従業員マスタから情報が抽出できる従業員のうち、次のいずれかに該当する者とする。
(1) 当年の定期健康診断の健康診断レコードが存在しない。
(2) 当年の定期健康診断の判定結果が登録されていない。
(3) 当年の定期健康診断の結果、再検査が必要と判定されたが、再検査の健康診断レコードが存在しない、又はその判定結果が登録されていない。
未受診者抽出機能の処理の流れを図4に示す。ここで、図4の従業員マスタは従業員コードの昇順で整列されているものとする。
〔未受診者抽出機能の処理の説明〕
(1) 図4の突合せ処理において、各ファイルを先頭から順次読み込んで処理できるように、前処理として次の①〜③を実行する。
① 抽出1処理で、対象年が当年のレコードを健康診断ファイルから抽出し、当年の健康診断ファイルを作成する。
② 整列処理で、当年の健康診断ファイルをcで整列し、ファイルXを作成する。
③ 抽出2処理で、ファイルXのレコードを先頭から順にファイルYに出力する。ここで、dが連続した場合には、最初に出現したレコードだけを出力する。
(2) 突合せ処理で、従業員マスタに存在する従業員コードに対して、次に示す①又は②のいずれかに該当する場合に、従業員コードを未受診者ファイルに出力する。
① 従業員コードが一致するレコードがファイルYに存在しない。
② eのレコードがファイルYに存在する。
cに関する解答群
ア:従業員コードの昇順
イ:従業員コードの昇順、実施年月の昇順
ウ:従業員コードの昇順、実施年月の降順
エ:従業員コードの降順
オ:従業員コードの降順、実施年月の昇順
カ:従業員コードの降順、実施年月の降順
dに関する解答群
ア:同じ従業員コード
イ:同じ従業員コード及び区分
ウ:同じ健康診断コース
エ:同じ健康診断コース及び区分
eに関する解答群
ア:判定結果が空白
イ:再検査要否が“要”
ウ:再検査要否が“否”
エ:判定結果が空白、又は再検査要否が“要”
オ:判定結果が空白、又は再検査要否が“否”模範解答
c:ウ、d:ア、e:エ
解説
解答の導き方
図4の処理では、当年の健康診断レコードを整理してから、従業員マスタと突き合わせます。レコードは1件分のデータです。ここでは、各従業員について「当年の健康診断がどこまで進んでいるか」を正しく判定できる形にすることがポイントです。
-
ファイルXの並び順を考えます。突合せ処理では、従業員マスタが「従業員コードの昇順」で並んでいます。ファイルYも従業員コードの昇順にしておけば、両方を先頭から順番に見比べられます。そのため、整列の先頭の条件は「従業員コードの昇順」です。さらに、同じ従業員のレコードが複数ある場合には、新しい受診状況を残す必要があります。定期健康診断の後に再検査を受診することがあるため、実施年月は新しいものが先に来るよう、「実施年月の降順」にします。つまり、ファイルXは「従業員コードの昇順、実施年月の降順」で整列します。これにより、同じ従業員のレコードはまとまって並び、その中では最も新しい受診のレコードが先頭になります。したがって、cはウです。
-
ファイルYに残すレコードを考えます。抽出2では、同じ従業員のレコードが連続したとき、最初のレコードだけを出力します。先ほどの並び順では、同じ従業員の中で最も新しい受診のレコードが最初です。そのため、同じ従業員について1件だけ残すには、連続したレコードを「同じ従業員コード」でまとめます。「同じ従業員コード及び区分」でまとめると、定期健康診断と再検査のレコードがそれぞれ残る可能性があります。今回は従業員ごとに最新の状況を判定したいので、区分では分けません。したがって、dはアです。
-
ファイルYにあるレコードを、未受診者とする条件を考えます。本文で定義されている未受診者には、次のような人が含まれます。
- 定期健康診断の判定結果がまだ登録されていない人
- 定期健康診断で再検査が必要と判定されたものの、再検査のレコードがまだない人
- 再検査のレコードはあるものの、その判定結果がまだ登録されていない人
ファイルYには、従業員ごとに最も新しいレコードが残ります。判定結果がまだ登録されていない場合は、そのレコードの「判定結果」が空白です。また、定期健康診断で再検査が必要と判定され、再検査のレコードがまだない場合は、残っている定期健康診断のレコードの「再検査要否」が“要”です。したがって、ファイルYに「判定結果が空白、又は再検査要否が“要”」のレコードがあれば、未受診者として出力します。よって、eはエです。なお、健康診断レコード自体がない従業員は、別の条件として、従業員コードに一致するレコードがファイルYにない場合に出力されます。
誤りやすいポイント
-
実施年月を昇順にしてしまうこと
昇順では古い受診のレコードが先に来ます。抽出2は最初のレコードを残すため、再検査が済んでいても、その前の定期健康診断のレコードを残してしまう可能性があります。 -
「同じ従業員コード及び区分」で重複をまとめること
定期健康診断と再検査を別々に残すことになり、従業員ごとの最新の状況を1件で判定できません。 -
判定結果が空白の場合だけを未受診者とすること
定期健康診断の結果が登録済みでも、再検査が必要で、まだ再検査のレコードがない人がいます。その人を見つけるには、再検査要否が“要”の場合も対象にする必要があります。 -
再検査要否が“否”の場合を未受診者とすること
再検査後は、再検査要否を常に“否”で更新します。“否”だけでは、再検査が必要なまま未実施であることを表しません。 -
レコードがない場合と、レコードの内容を確認する場合を混同すること
レコードがない従業員は、ファイルYに一致する従業員コードがない条件で判定します。eの条件は、ファイルYにレコードが存在する場合に、その内容を確認するものです。
FAQ
Q: なぜ同じ従業員の中で実施年月が新しいレコードを先にするのですか。
A: 定期健康診断の後に再検査を受けることがあるためです。最新のレコードを残せば、再検査が済んだかどうかも含めた現在の状況を判定できます。
A: 定期健康診断の後に再検査を受けることがあるためです。最新のレコードを残せば、再検査が済んだかどうかも含めた現在の状況を判定できます。
Q: 再検査のレコードがあるのに、判定結果が空白の場合も未受診者になるのですか。
A: なります。受診後の判定結果がまだ登録されていないためです。この状態は、ファイルYのレコードで判定結果が空白かどうかを調べて見つけます。
A: なります。受診後の判定結果がまだ登録されていないためです。この状態は、ファイルYのレコードで判定結果が空白かどうかを調べて見つけます。
Q: 健康診断レコードがない従業員も、判定結果が空白のレコードとして扱うのですか。
A: いいえ。レコードがない場合は、ファイルYに一致する従業員コードが存在しない条件で判定します。判定結果の空白は、レコードが存在する場合に使う条件です。
A: いいえ。レコードがない場合は、ファイルYに一致する従業員コードが存在しない条件で判定します。判定結果の空白は、レコードが存在する場合に使う条件です。
関連キーワード: レコード、整列、重複排除、突合せ、マスタファイル



