スキップしてメイン コンテンツに移動

平成26年度 春期 データベーススペシャリスト試験 午後Ⅰ 問2 設問1 (3)

平成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中の番号で答えること。
   ×でない場合は空欄のままとすること。



 ① 指定された条件に重なる予約が入っているかを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の考察  予約の実行が重ならない

 先行の予約登録は、登録済みで、必ず①(検索)で判定できる。

□:空き、名前:予約済、△:予約不可(一部予約済みのため)

89101112131415161718
Aさん□□□□□□AA□□□□□□□□□□□□□□
Bさん□□□□□□AA△△□□□□□□□□□□□□
Cさん□□□□□□△△□□□□□□□□□□□□
Dさん□□DDDD□□□□□□□□□□□□□□□□
Eさん△△DDDDAA△△△△△△△△△△△△□□


表3の考察  先行①(検索)、後続①(検索)の順に実行するとなると
まだ登録が行われないため、どちらも処理続行となる。
従って、登録時にエラーが起きるか、どちらも登録できるかという結果が
想定される。

【回答】

d : ×
e : ①
f : ○
g : 
h : ×
i : ①

j : ×
k : ②
l : △
m :
n : ○
o : 
p : △
q :


コメント

このブログの人気の投稿

平成26年度 春期 データベーススペシャリスト試験 午後Ⅰ 問3 設問3 (1)

平成26年度 春期 データベーススペシャリスト試験 午後Ⅰ http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_db_pm1_qs.pdf 問3 テーブルの設計及びSQLの設計に関する次の記述を読んで,設問1~3に答えよ。  設問3 〔注文トランザクションの設計〕について,(1),(2)に答えよ。  (1) 次のTR1~TR4のうち,いずれか二つの組合せのトランザクションを同時に実行したとき,デッドロックが起こるおそれがある。次の表中の  ウ  ~  カ   にデッドロックが起きない組合わせには○を,起きるおそれがある組合わせには×を記入せよ。   TR1:単品商品2個を注文する。   TR2:単品商品1個とセット商品1個を注文する。   TR3:セット商品1個を注文する。   TR4:セット商品2個を注文する。 \ TR1 TR2 TR3 TR4 TR1 ○  ウ   エ  × TR2 \ × × × TR3 \ \  オ   カ  TR4 \ \ \ × 問題の対象となっているのは、以下の内容である。 〔注文トランザクションの設計〕  Fさんは,注文トランザクションについて,次のように設計した。 (1) 注文単位を一つのトランザクションで処理し,最後にCOMMIT文を発行する。 (2) 注文に基づいて,”注文”テーブル及び”注文明細”テーブルに行を挿入する。 (3) 商品については,商品一覧画面に表示された順番に”在庫”テーブルの  引当可能数を調べ,引当可能ならば注文数を減算した値で引当可能数を更新する。 (4) セット商品が在庫不足のとき,”在庫”テーブルの不足セット商品数に不足数を  加算する。”セット商品構成”テーブルから,主キー順に当該セット商品を構成する  単品商品の構成数を調べ,必要数を計算する。単品商品については,”在庫”  テーブルの引当可能数には必要数を減算した値で、不足セット商品用引当済には  必要数を加算した値で更新する。 (5) トランザクションのISOLATIONレベルは,READ COMMITTEDとする。 検討す...

平成26年度 春期 データベーススペシャリスト試験 午後Ⅰ 問2 設問1 (1)

平成26年度 春期 データベーススペシャリスト試験 午後Ⅰ http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_db_pm1_qs.pdf 問2  設問1 会議室予約システムについて,(1)~(4)に答えよ。  (1) 図2中のSQL文の  a  ~  c  に入れる適切な字句を答えよ。 〔会議室予約システムのテーブル〕  会議室予約システムの主要なテーブルのテーブル構造,概要は,図1,表1のとおりである。  社員( 社員番号 ,社員氏名,…)  会議室( 会議室番号 ,収容可能人数,階数,プロジェクタ設置有無,TV会議設備設置有無,…)  会議室予約( 会議室番号 , 予約日 , 予約開始時刻 ,予約終了時刻, 社員番号 ) 図1 主要なテーブルのテーブル構造(一部省略) 表1 主要なテーブルの概要 テーブル名 概要 社員 ・社員の情報を管理する。社員番号で社員を一意に識別する。 会議室 ・会議室の情報を管理する。会議室番号で会議室を一意に識別する。 ・会議室ことに収容可能な人数,階数,設備の設置有無が設定されている。 会議室予約 ・会議室の予約状況を管理する。会議室番号,予約日,予約開始時刻で 会議室予約を一意に識別する。 ・予約開始時刻及び予約終了時刻の分の指定は00分または30分とする。 〔会議室予約システムでの検索〕  会議室予約システムで空き会議室の検索結果一覧を表示する際に必要な情報を得るために実行するSQL文の例を図2に示す。  なお,図2中のホスト変数のhv1は予約希望日,hv2は予約希望開始時刻,hv3は予約希望終了時刻を表す。 SELECT * FROM 会議室 X WHERE  a  (SELECT * FROM 会議室予約 Y WHERE X.会議室番号 = Y.会議室番号 AND Y.予約日 = :hv1 AND Y.予約開始時刻  b  :hv3 AND Y.予約終了時刻  c  :hv2) 図2 検索で実行するSQL文の例 図2のSQLから、判明できることは、 対象となる...

平成26年度 春期 データベーススペシャリスト試験 午後Ⅰ 問3 設問2 (2)

平成26年度 春期 データベーススペシャリスト試験 午後Ⅰ http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_db_pm1_qs.pdf 問3 テーブルの設計及びSQLの設計に関する次の記述を読んで,設問1~3に答えよ。  設問2 〔SQL分の設計〕について,(1)~(3)に答えよ。  (2) SQL4及びSQL5,指定した注文について,注文されたセット商品を構成する単品商品の合計数を求めるSQL文です。SQL4及びSQL5の実行結果が同じにように,  h   に入れる適切な字句を答えよ。 問題の対象となっているのは、以下の内容である。 〔SQL文の設計〕  Fさんが,案1と案2のそれぞれについて設計した主なSQL文を表4に示す。 表4 案1と案2について設計した主なSQL文(未完成) 案 SQL SQL文 案1 SQL1 SELECT M.商品番号,P.社内原価,P.化粧箱番号 FROM 注文明細 M,商品 P WHERE M.商品番号 = P.商品番号 AND M.注文番号 = :hv 案2 SQL2 SELECT M.商品番号,T.社内原価,S.化粧箱番号 FROM 注文明細 M  f   JOIN 単品商品 T ON M.商品番号 = T.商品番号  f   JOIN セット商品 S ON M.商品番号 = S.商品番号 WHERE M.注文番号 = :hv 案2 SQL3 SELECT M.商品番号,T.社内原価,CAST(NULL AS INT) 化粧箱番号 FROM 注文明細 M   g   JOIN 単品商品 T   ON M.商品番号 = T.商品番号 WHERE M.注文番号 = :hv UNION ALL SELECT M.商品番号,CAST(NULL AS INT) 社内原価,S.化粧箱番号 FROM 注文明細 M   g   JOIN セット商品 S   ON M.商品番号 = S.商品番号 WHERE M.注文番号 = :hv 案1 SQL4 SELECT K.単品.商品番号,SUM(  h   ...