平成26年度 春期 データベーススペシャリスト試験 午後Ⅰ
http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_db_pm1_qs.pdf
問2
設問1 会議室予約システムについて,(1)~(4)に答えよ。
(3) 表2中の d ~ i 及び表3中の j ~ q に入れる予約成否,失敗検知箇所を
答えよ。
なお,予約成否は,表2中の注記の記号で答えること。失敗検知箇所は,予約成否が
×の場合に予約失敗を検知した個所を図3中の番号で答えること。
×でない場合は空欄のままとすること。
会議室予約システムにおいてダブルブッキングが発生した。K社ではその原因を突き止めるために当日の状況を基に,次の例を用いて図3の予約処理内容の検証を行った。
(例)
・会議室123に対する2014年4月1日の予約を行う。その日の予約は終日入っていなかった。
・Aさん,Bさん,Cさん,Dさん,Eさんの5人が,それぞれ次の時間帯を指定した。
Aさん : 11時00分~12時00分
Bさん : 11時00分~13時00分
Cさん : 11時30分~13時00分
Dさん : 9時00分~11時00分
Eさん : 8時00分~18時00分
(検証)
5人の予約処理の実行が重ならない場合と,重なった場合について,それぞれ(1),(2)で検証した。
(1)Aさん,Bさん,Cさん,Dさん,Eさんの順番で,予約処理の実行が重ならない場合の
結果を検証して,表2を作成した。
(2)Aさん,Bさん,Cさん,Dさん,Eさんのうち,2人ずつの全ての組み合わせに対して,
先行,後続を入れ替えて,予約処理が重なった場合の結果を検証して,表3を作成した。
表3では,先行の予約処理が図3①の処理を実行した後に、後続の予約処理が図3①の
処理を実行,その後に先行の予約処理が図3②の処理を実行することを想定している。
なお、後続の予約処理は,先行の予約処理を追い抜くことはないものとする。
表2 予約処理の実行が重ならない場合の結果
注記 予約成否: ○(予約成功),△(ダブルブッキング発生),×(予約失敗)
失敗検知個所:予約失敗を検知した個所を図3の番号で表す。
表3 2人の予約処理の実行が重なった場合の後続の結果
注記 予約成否: ○(予約成功),△(ダブルブッキング発生),×(予約失敗)
失敗検知個所:予約失敗を検知した個所を図3の番号で表す。
表2の考察 予約の実行が重ならない
先行の予約登録は、登録済みで、必ず①(検索)で判定できる。
□:空き、名前:予約済、△:予約不可(一部予約済みのため)
http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_db_pm1_qs.pdf
問2
設問1 会議室予約システムについて,(1)~(4)に答えよ。
(3) 表2中の d ~ i 及び表3中の j ~ q に入れる予約成否,失敗検知箇所を
答えよ。
なお,予約成否は,表2中の注記の記号で答えること。失敗検知箇所は,予約成否が
×の場合に予約失敗を検知した個所を図3中の番号で答えること。
×でない場合は空欄のままとすること。
① 指定された条件に重なる予約が入っているかをSELECT文で確認する。結果行がある場合,
予約失敗として③に進む。結果行がない場合,②に進む。
SELECT * FROM 会議室予約 WHERE 会議室番号 = :hv4 AND 予約日 = :hv1
AND 予約開始時刻 b :hv3 AND 予約終了時刻 c :hv2
② 指定された条件の予約をINSERT文で登録する。行が挿入できた場合,予約成功として
コミットし,③に進む。行が挿入できなかった場合,予約失敗として③に進む。
INSERT INTO 会議室予約(会議室番号,予約日,予約開始時刻,予約終了時刻,社員番号)
VALUES(:hv4,:hv1,:hv2,:hv3,:hv5)
③ 予約の成否を通知する。
図3 予約処理内容
〔会議室予約システムでのダブルブッキングの検証〕会議室予約システムにおいてダブルブッキングが発生した。K社ではその原因を突き止めるために当日の状況を基に,次の例を用いて図3の予約処理内容の検証を行った。
(例)
・会議室123に対する2014年4月1日の予約を行う。その日の予約は終日入っていなかった。
・Aさん,Bさん,Cさん,Dさん,Eさんの5人が,それぞれ次の時間帯を指定した。
Aさん : 11時00分~12時00分
Bさん : 11時00分~13時00分
Cさん : 11時30分~13時00分
Dさん : 9時00分~11時00分
Eさん : 8時00分~18時00分
(検証)
5人の予約処理の実行が重ならない場合と,重なった場合について,それぞれ(1),(2)で検証した。
(1)Aさん,Bさん,Cさん,Dさん,Eさんの順番で,予約処理の実行が重ならない場合の
結果を検証して,表2を作成した。
(2)Aさん,Bさん,Cさん,Dさん,Eさんのうち,2人ずつの全ての組み合わせに対して,
先行,後続を入れ替えて,予約処理が重なった場合の結果を検証して,表3を作成した。
表3では,先行の予約処理が図3①の処理を実行した後に、後続の予約処理が図3①の
処理を実行,その後に先行の予約処理が図3②の処理を実行することを想定している。
なお、後続の予約処理は,先行の予約処理を追い抜くことはないものとする。
表2 予約処理の実行が重ならない場合の結果
\ | 予約成否 | 失敗検知個所 |
---|---|---|
Aさん |
○
| |
Bさん |
×
|
①
|
Cさん |
d
|
e
|
Dさん |
f
|
g
|
Eさん |
h
|
i
|
失敗検知個所:予約失敗を検知した個所を図3の番号で表す。
表3 2人の予約処理の実行が重なった場合の後続の結果
\ | 先行の予約処理 | |||||
---|---|---|---|---|---|---|
Aさん | Bさん | Cさん | Dさん | Eさん | ||
後 続 の 予 約 処 理 | Aさん | \ | 予約成否 j 失敗検知個所 k | 予約成否 l 失敗検知個所 m | 予約成否 n 失敗検知個所 o | 予約成否 p 失敗検知個所 q |
Bさん | 省略 | \ | 同上 | 同上 | 同上 | |
Cさん | 省略 | 省略 | \ | 同上 | 同上 | |
Dさん | 省略 | 省略 | 省略 | \ | 同上 | |
Eさん | 省略 | 省略 | 省略 | 省略 | \ |
失敗検知個所:予約失敗を検知した個所を図3の番号で表す。
表2の考察 予約の実行が重ならない
先行の予約登録は、登録済みで、必ず①(検索)で判定できる。
□:空き、名前:予約済、△:予約不可(一部予約済みのため)
8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | |
---|---|---|---|---|---|---|---|---|---|---|---|
Aさん | □□ | □□ | □□ | AA | □□ | □□ | □□ | □□ | □□ | □□ | □□ |
Bさん | □□ | □□ | □□ | AA | △△ | □□ | □□ | □□ | □□ | □□ | □□ |
Cさん | □□ | □□ | □□ | AA | △△ | □□ | □□ | □□ | □□ | □□ | □□ |
Dさん | □□ | DD | DD | □□ | □□ | □□ | □□ | □□ | □□ | □□ | □□ |
Eさん | △△ | DD | DD | AA | △△ | △△ | △△ | △△ | △△ | △△ | □□ |
表3の考察 先行①(検索)、後続①(検索)の順に実行するとなると
まだ登録が行われないため、どちらも処理続行となる。
従って、登録時にエラーが起きるか、どちらも登録できるかという結果が
想定される。
【回答】
d : ×
e : ①
f : ○
g :
h : ×
i : ①
j : ×
k : ②
l : △
m :
n : ○
o :
p : △
q :
コメント
コメントを投稿