データベーススペシャリスト午後I 事例記述令和6年 秋期
午後I 問2
問2 総合商社の労務管理システムのデータベース実装
テーマ:労務管理システムにおけるSQL設計と排他制御・トランザクション制御
左右2分割表示:左側の問題文をスクロールしながら右側の設問に解答できます
長文事例本文
図表クリックで拡大問2 総合商社の労務管理システムのデータベース実装に関する次の記述を読んで,設問に答えよ。
総合商社のY社は,労務管理にRDBMSを用いている。既存の勤怠管理機能に,新たに所在情報管理機能と監査機能を追加することになった。
〔RDBMSの排他制御〕
1. ロックは行単位で掛ける。共有ロックを掛けている間,他のトランザクションから対象行への共有ロックは可能であり,専有ロックは共有ロックの解放待ちとなる。専有ロックを掛けている間,他のトランザクションから対象行への共有ロック及び専有ロックは,専有ロックの解放待ちとなる。
2. 索引を使わずに表探索ですべての行に順次アクセスする場合,検索条件に合致するか否かにかかわらず全行をロックの対象とする。索引探索の場合,索引から読み込んだ行だけをロックの対象とする。
〔所在情報管理機能の追加〕
1. 機能の概要
オフィス内のフリーアドレス化を推進するため,従業員の就業エリア(以下,エリアという)への入退室のログを記録し,従業員の所在情報をエリア情報表示端末で社内に公開する。エリア情報表示端末では,エリアの混雑状況なども表示する。
エリアには,建屋,フロア,執務室があり,従業員は各エリアへの入退室時にICカード社員証で認証を行う。従業員は入退室時に必ず認証を行うように定められており,他の従業員に続いて認証せずに入退室することは禁止されている。従業員は,建屋内にいる限りいずれかのエリアに所在しており,建屋から出ることで退出として扱われる。
所在情報管理機能では,認証時に入退室ログを記録する。また,記録した入退室ログを基に,従業員の現在位置を示す所在情報及びエリアの混雑状況を定期的に更新する。
2. テーブル構造
主なテーブルのテーブル構造は,図1のとおりである。主キーには主索引が定義されている。
拡大
3. 入退室ログ登録処理
従業員が入退室で認証する都度,“入退室ログ”テーブルに行を追加する。ログIDは時系列に昇順で採番し,入退室区分には入室(‘I’)又は退室(‘O’)を設定する。必要に応じて,連携する勤怠管理機能及びエリア情報表示端末に情報を送信する。
処理の概要を図2に示す。トランザクションのISOLATIONレベルはREPEATABLE READとする。
--------------------------------------------------
① 入退室ログを挿入する。
② 入退室区分が入室の場合,当該従業員の所在情報を参照し,最終入室エリアコードが退出の状態であれば,勤怠管理機能に入室情報を送信する。入退室区分が退室の場合,何もしない。
③ 当該エリアの在席者数と混雑判定閾値を参照し,今回の入退室によって混雑判定閾値を上回る又は下回ることになるかを確認し,上回る又は下回る場合はエリア情報表示端末に混雑情報を送信する。
④ コミットする。
--------------------------------------------------
図2 入退室ログ登録処理の概要
4. 所在情報更新処理
5分ごとに実行するバッチ処理で,定期的にエリア状況及び所在情報を更新する。
“入退室ログ”テーブルに登録されている入退室ログを読み込み,“エリア状況”テーブルのエリアごとの在席者数を更新,“所在情報”テーブルの従業員ごとの最終入室エリアコードを更新する(退出している場合は,最終入室エリアコードには‘9999’を設定する)。すべての更新が終わったら,読み込み終わった入退室ログの位置を記録しておき,次回実行時はその続きから読み込む。
所在情報更新処理の概要を図3,所在情報更新処理に用いるSQL文を表1に示す。トランザクションのISOLATIONレベルはREPEATABLE READとする。
--------------------------------------------------
① SQL1を実行して最新の入退室ログのログIDを取得し,ホスト変数HNEWIDに設定する。
なお,ホスト変数HLASTIDには,前回実行時のホスト変数HNEWIDの値が設定されている。
② SQL2を実行してエリアごとの在席者増減数(入室した従業員と退室した従業員の差)を取得する。SQL2の結果行ごとに,ホスト変数HAREACODEにエリアコードを,ホスト変数HDIFFに在席者増減数を設定し,SQL3を実行してエリア状況の在席者数を更新する。
③ SQL4を実行して従業員ごとの最新の入退室ログのログIDを取得する。SQL4の結果行ごとに,ホスト変数HEMPLOYEEIDに従業員番号を,ホスト変数HCURRENTIDにログIDを設定し,SQL5を実行して最終入室エリアのエリアコードを取得する。さらに,そのエリアコードをホスト変数HAREACODEに設定し,SQL6を実行して所在情報の最終入室エリアコードを更新する。
④ ホスト変数HLASTIDに,ホスト変数HNEWIDの値を設定する。
⑤ コミットする。
--------------------------------------------------
図3 所在情報更新処理の概要
拡大
〔監査機能の追加〕
従業員の残業時間,休暇,エリアを,入退室ログと突き合わせてチェックする監査機能を,要件に基づいて設計した。
1. 監査機能の要件
(1) 監査対象月の1日から月末日までの勤怠をチェックする。監査対象月の月末の営業日から翌月の5営業日までの間,毎日実行する。
(2) 上長承認済み,かつ,監査未チェックの勤怠を対象にチェックする。なお,一度監査が終了した行でも,勤怠情報を従業員が更新した場合は,上長承認と監査結果をリセットして,再度,上長承認及び監査を行う。
(3) 監査機能のジョブは多重実行する。すべてのジョブに一意なジョブIDを割り当て,それぞれのジョブに重複していない従業員番号の範囲を指定して実行する。また,処理の途中で失敗した場合,その原因を取り除いて,同じジョブIDで再実行することで,処理を再開する。なお,ジョブIDは再利用する。
2. 監査機能のテーブル設計
主なテーブルのテーブル構造は図4のとおりである。主キーには主索引が定義されている。
拡大
“勤怠”テーブルには,従業員ごと年月日ごとの勤怠情報を記録する。上長承認には,承認済み(‘Y’)又は未承認(‘N’)を設定する。監査結果には,監査未チェックの行はNULLを設定し,チェックしたら適正(‘Y’)又は不適正(‘N’)を設定する。
監査機能のジョブが途中で失敗した場合に,ジョブを再実行するために“再開位置”テーブルを使用する。再開従業員番号には処理中の従業員番号を記録し,再実行時には記録していた従業員番号から処理を再開する。
3. 監査機能の処理設計
処理の流れとSQL文を図5に示す。トランザクションのISOLATIONレベルはREAD COMMITTEDとする。
拡大
監査機能の実行時には他トランザクションも実行されており,排他ロック解放待ちタイムアウトの考慮も必要である。排他ロック解放待ちタイムアウト時間をT秒とすると,他トランザクションで排他ロック解放待ちタイムアウトさせないための図5中のN行を見積もる計算式は,次の式となる。
$$N < (T - [\text{ A }]\text{に必要な時間}) \div [\text{ B }]\text{に必要な時間}$$
拡大図1 主なテーブルのテーブル構造(一部省略)
拡大表1 所在情報更新処理に用いるSQL文(未完成)
拡大図4 監査機能に関するテーブルのテーブル構造
拡大図5 監査機能の処理の流れとSQL文(未完成)
設問一覧 & 解答・演習
まずは解答を作成してみましょう。「解答例を見る」をクリックするとIPA公式解答例と採点基準が開きます。
設問1 (1)記号・選択式
表1中の a 〜 d に入れる適切な字句を答えよ。
※直接入力してください
設問1 (2)記号・選択式
所在情報更新処理を実行中に,入退室ログ登録処理が発生するとデッドロックとなる可能性がある。デッドロックを引き起こすロックの状況について,時系列に,対象となるテーブルのテーブル名,ロックを掛けるトランザクション,ロック種別,ロック状態を答えて,次に示す表2を完成させよ。なお,ロックを掛けるトランザクション,ロック種別,ロック状態については,表中の該当する方を〇で囲んで示せ。


※直接入力してください
設問1 (3)記述問題
制限字数:20 字以内
(2)のデッドロックを回避するために,図2の入退室ログ登録処理の処理順序を変更する。変更内容を,図2中の①〜③を用いて20字以内で答えよ。
0 / 20 文字
設問2 (1)記号・選択式
図5中の e 〜 h に入れる適切な字句を答えよ。
※直接入力してください
設問2 (2)記述問題
制限字数:40 字以内
図5中の ア で行うべき処理を40字以内で答えよ。
0 / 40 文字
設問2 (3)記号・選択式
A と B の対象となる処理に該当するものを,図5中の④〜⑬から選べ。なお,該当する処理が複数ある場合は全て選ぶこと。
※記号ボタンをクリックするか、直接入力してください
午後I長文記述の得点力を引き上げる定番対策書Amazon・楽天 公式提携
PR
IPA 厳選対策書徹底攻略 データベーススペシャリスト教科書 令和8年度株式会社わくわくスタディワールド 瀬戸 美月 著 / インプレス
DB徹底攻略株式会社わくわくスタディワールド 瀬戸 美月 著 / インプレス
徹底攻略 データベーススペシャリスト教科書 令和8年度
💡 推薦ポイント:午後I・午後IIの概念データモデル穴埋めや排他制御・性能設計の記述問題で確実に合格点を勝ち取る実践テクニックが満載です。
¥3,278(税込)
※本リンク先はプロモーション(アフィリエイト広告)が含まれています
【出題趣旨】IPA公式発表
【採点講評】IPA公式発表
本問に関連するデータベーススペシャリスト重要用語解説
本番形式・制限時間付きで演習する
令和6年 秋期 午後I(3問中2問選択・90分)を実戦演習モードで通し解答し、総合採点を受けられます。