データベーススペシャリスト午後I 事例記述平成30年 春期
午後I 問2

問2 データベースでの制約の実装に関するデータベース設計・実装

テーマ:RDBMSの参照制約とトリガの実装、SQL構文および整合性制御
左右2分割表示:左側の問題文をスクロールしながら右側の設問に解答できます

長文事例本文

図表クリックで拡大
問2 データベースでの制約の実装に関する次の記述を読んで,設問1~3に答えよ。  総合商社のY社は,人事情報管理にRDBMSを用いている。 〔RDBMSの主な仕様〕  人事情報管理データベースに用いているRDBMSの主な仕様は,次のとおりである。 1. 参照制約  参照制約では,挙動モードと検査契機モードを指定できる。 (1) 挙動モード  挙動モードには,次の二つがある。  ① NO ACTION:参照先のテーブルの行を削除又は更新したとき,参照元のテーブルの行に対して何もしない。  ② CASCADE:参照先のテーブルの行を削除又は更新したとき,参照元のテーブルの行にも削除又は更新を連鎖させる。 (2) 検査契機モード  検査契機モードには,次の二つがある。  ① 即時モード:SQL実行終了ごとに,対象となる全ての行の実行結果に対して,制約を検査する。  ② 猶予モード:トランザクション終了時に,トランザクション内の全てのSQLを実行した結果に対して,制約を検査する。 2. トリガ  テーブルに対する変更操作(挿入・更新・削除)を契機に,あらかじめ定義された処理を,操作対象の行ごとに実行する。実行タイミング(挿入・更新・削除の前又は後),列値による実行条件を定義することができる。ただし,実行タイミングを挿入・更新・削除の前として定義したトリガの処理の中で,テーブルに対する変更操作を行うことはできない。 〔人事情報管理データベースのテーブル〕  人事情報管理データベースの主なテーブルのテーブル構造は,図1のとおりである。索引は,主キーだけに定義されている。
図1 主なテーブルのテーブル構造 拡大
図1 主なテーブルのテーブル構造
〔人事情報管理の業務概要〕  人事情報管理担当者は,業務上のイベント発生時にテーブルの更新を行うとともに,社内の各部署からの情報提供要求に対応するために,SQLで検索した結果をレポートにして提供している。業務上の主なイベントとテーブルの更新内容,及びレポート提供の一例は次のとおりである。 1. 従業員の退職  満65歳での定年退職及び従業員の自己都合による退職が随時発生する。定年退職の場合,退職年月日は,満65歳の誕生日の前日である。従業員を“従業員”テーブルに登録するときに,退職年月日に定年退職の年月日を設定する。自己都合による退職の場合,退職年月日は申告された日に更新する。  退職すると,“従業員”テーブルの退職フラグを,あらかじめ設定している'0'(在籍)から'1'(退職)に更新する。この処理は,退職年月日の当日に行う。  給与計算は毎月20日締めで行う。また,毎月25日に,“従業員”テーブル及び“従業員家族”テーブルから,当月の20日までに退職した従業員の行を削除する。削除した行を別テーブルに保存するために,実行タイミングを“従業員”テーブルの削除の後としたトリガを定義している。トリガに定義している処理は,次のとおりである。 ・削除した“従業員”テーブルの行を別テーブルに挿入する。 ・“従業員家族”テーブルのその従業員の家族の行について,別テーブルに挿入し,その後削除する。  毎月25日に行を削除するための,三つの述語から成るSQLの構文は表1のとおりである。
表1 退職した従業員の行を削除するSQLの構文(未完成) 拡大
表1 退職した従業員の行を削除するSQLの構文(未完成)
2. 従業員家族構成の変更  従業員ごとの事由によって,家族の増減,扶養対象者数の変更などが随時発生する。このとき,“従業員家族”テーブルへの行挿入,主キー以外の列値の更新(扶養フラグは,扶養対象者でない場合は'0',扶養対象者の場合は'1'に更新),行削除を行う。 3. 定期的な組織変更及び人事異動  毎年4月1日及び10月1日に組織変更及び人事異動を実施している。  組織変更では,部署の新設,廃止が発生する。このとき,“部署”テーブルに対する行挿入,行削除を行う。  人事異動で,従業員が所属する部署が変更になった場合,“従業員”テーブルの部署コードの更新を行う。 4. レポート提供の一例  福利厚生担当者から人事情報管理担当者に対して,従業員家族向けのレクリエーション企画のために,部署コード順に2007年1月1日以降に生まれた扶養対象者をもつ従業員数と扶養対象者数の一覧表が欲しいとの依頼があった。その例を図2に示す。  人事情報管理担当者は,表2のSQL文を用いて,図2の一覧表を作成した。 ``` ** 部署別扶養対象者数(2007年1月1日以降生まれ)一覧 ** 部署コード 従業員数 扶養対象者数 78001 4 7 78005 2 4 79003 5 11 : : : 図2 福利厚生担当者から求められた一覧表の例 ```
表2 一覧表を作成するSQLの構文(未完成) 拡大
表2 一覧表を作成するSQLの構文(未完成)
〔人事情報管理データベースで発生している問題点〕  定型的な業務上のイベントはアプリケーションプログラムで実装している。しかし,組織変更及び人事異動のイベントで,部署コードなどの更新する列の内容が変動するものは,次のような運用を行っている。 ・人事情報管理担当者が,イベント別に用意してある更新SQL文のバッチジョブを利用して,業務上のイベントに対応したテーブルの更新を実施する。 ・人事情報管理担当者はイベントに応じてバッチジョブへの入力データを作成している。  現状の問題点として,入力データの作成ミスによって,実際に存在しないコードでテーブルを更新することがあり,給与計算システムでトラブルが起きている。この問題点を解決するために,RDBMSの参照制約機能を利用することにした。参照制約機能の利用案を表3に示す。
表3 参照制約機能の利用案 拡大
表3 参照制約機能の利用案
〔参照制約機能の利用の検討〕  参照制約機能を利用する以前には,定期的な組織変更及び人事異動に対応する処理は,図3に示すように“部署”テーブルの行を更新した後,“従業員”テーブルの行を更新していた。  参照制約機能を利用するに当たって,図3中の①~⑥の更新手順の変更,及び処理時間の検討を行った。
図3 参照制約機能を利用する以前の更新手順 拡大
図3 参照制約機能を利用する以前の更新手順

設問一覧 & 解答・演習

まずは解答を作成してみましょう。「解答例を見る」をクリックするとIPA公式解答例と採点基準が開きます。

設問1 (1)記号・選択式
〔人事情報管理の業務概要〕について,表1中の a 〜 c に入れる適切な字句を答えよ。
※直接入力してください
設問1 (2)記号・選択式
〔人事情報管理の業務概要〕について,表2中の d 〜 f に入れる適切な字句を答えよ。
※直接入力してください
設問2 (1) (a)記述問題
制限字数:40 字以内
表3について,次の(a)の処理を実行した場合,正常終了と,制約検査でエラーのどちらになるか。正常終了・エラーのいずれかで示せ。エラーとなる場合は,その理由を,40字以内で具体的に述べよ。
(a) 新規従業員登録のために,所属未定(部署コードがNULL)の行を“従業員”テーブルに挿入する。
0 / 40 文字
設問2 (1) (b)記述問題
制限字数:40 字以内
表3について,次の(b)の処理を実行した場合,正常終了と,制約検査でエラーのどちらになるか。正常終了・エラーのいずれかで示せ。エラーとなる場合は,その理由を,40字以内で具体的に述べよ。
(b) ある部署の管理者退職に伴い,“従業員”テーブルから当該従業員を削除する。
0 / 40 文字
設問2 (2)記号・選択式
“従業員”テーブル及び“従業員家族”テーブルから退職した従業員の行を削除して別テーブルに保存するトリガについて,参照制約を利用することによって不具合が発生する。その対策として,“従業員”テーブルのトリガ定義を変更した上で,新たなトリガを定義する。新たに定義するトリガについて,対象となるテーブルのテーブル名,実行タイミング,処理内容をそれぞれ答えよ。
※直接入力してください
設問3 (1)記述問題
制限字数:40 字以内
〔参照制約機能の利用の検討〕に示した,参照制約機能を利用した後について,図3中の①〜⑥のデータの削除,挿入,更新の順序を変更せずに運用した場合,不具合が発生することがある。不具合が発生する契機を図3中の丸数字で答えよ。また,発生する不具合の内容を,40字以内で述べよ。
0 / 40 文字
設問3 (2)記号・選択式
(1)の不具合の回避のために,図3中の①,③,⑤の順序を変更する。どのように変更すればよいか,①,③,⑤の変更後の順序を答えよ。
※直接入力してください
設問3 (3) (a)記述問題
制限字数:55 字以内
表3に示すとおり,“従業員”テーブルの部署コードに参照制約が猶予モードで設定されている。この状況で,“部署”テーブルの部署コードを更新したときの振る舞いに関して,RDBMSは猶予モードの制約の検査のために,トランザクション終了時にどのような検査を行っているか,検査内容を55字以内で具体的に述べよ。
0 / 55 文字
設問3 (3) (b)記述問題
制限字数:50 字以内
表3に示すとおり,“従業員”テーブルの部署コードに参照制約が猶予モードで設定されている。この状況で,“部署”テーブルの部署コードを更新したときの振る舞いに関して,(a)の検査を行う際,想定よりも処理時間が長くなるおそれがある。その理由を,50字以内で具体的に述べよ。
0 / 50 文字
午後I長文記述の得点力を引き上げる定番対策書Amazon・楽天 公式提携
PR
徹底攻略 データベーススペシャリスト教科書 令和8年度
IPA 厳選対策書徹底攻略 データベーススペシャリスト教科書 令和8年度株式会社わくわくスタディワールド 瀬戸 美月 著 / インプレス
DB徹底攻略
株式会社わくわくスタディワールド 瀬戸 美月 著 / インプレス

徹底攻略 データベーススペシャリスト教科書 令和8年度

💡 推薦ポイント:午後I・午後IIの概念データモデル穴埋めや排他制御・性能設計の記述問題で確実に合格点を勝ち取る実践テクニックが満載です。
※本リンク先はプロモーション(アフィリエイト広告)が含まれています
【出題趣旨】IPA公式発表
RDBMS の参照制約を利用する際には,その制約の影響を受けて予期せぬ結果を発生させることのないように,アプリケーションプログラムの処理の内容や順序を注意深く設計する必要がある。 本問では,人事情報を管理するデータベースを題材に,参照制約を絡めて,SQL の基礎知識とその実装,また,テーブルの変更処理手順の設計能力を問う。
【採点講評】IPA公式発表
問2 では,データベースでの制約の実装について出題した。全体として,正答率は低かった。 設問1 は,正答率が高かったが,(1)c の正答率は低かった。SQL の基礎知識であり,是非知っておいてもらいたい。 設問2 は,(1)は正答率が高く,題意が理解されていた。(2)は正答率が低かった。特に,実行タイミングについては,“挿入・更新・削除の前又は後”と明確に与えているにもかかわらず,“挿入・更新・削除”だけを解答したものが目立った。また,実行タイミングではなく,実行条件を解答したものも多かった。設問をよく読み,求められていることを理解した上で解答してほしい。 設問3 は,正答率の高い受験者と,低い受験者に二分された。誤った解答には,参照制約とは無関係な内容が多く,参照制約に関する知識が不十分であった結果と思われる。
本番形式・制限時間付きで演習する
平成30年 春期 午後I(3問中2問選択・90分)を実戦演習モードで通し解答し、総合採点を受けられます。
実戦演習を始める