- トップページ
- データベーススペシャリスト
- 平成23年度特別問題
- 平成23年度特別解答・解説
平成23年度特別解答
問題11
“社員”表から、男女それぞれの最年長社員を除くすべての社員を取り出すSQL文とするために、aに入る副問合せはどれか。 ここで、“社員”表は次の構造とし、下線部は主キーを表す。
社員(社員番号, 社員名, 性別, 生年月日)
ア | SELECT MIN(生年月日) FROM 社員 AS S2 GROUP BY S2.性別 |
イ | SELECT MIN(生年月日) FROM 社員 AS S2 WHERE S1.生年月日 > S2.生年月日 OR S1.性別=S2.性別 |
ウ | SELECT MIN(生年月日) FROM 社員 AS S2 WHERE S1.性別=S2.性別 |
エ | SELECT MIN(生年月日) FROM 社員 GROUP BY S2.性別 |
解答:ウ
<解説>
ア | × | サブクエリの中でグループ化を実行すると、照合する値として複数の行(2行)が返されてしまうのでエラーとなる。 |
イ | × | 外部クエリ(サブクエリの外側のSQL文)とサブクエリの行を結ぶ条件が設定されており、相関サブクエリとして機能する。しかし、「S1.性別 = S2.性別」という性別のほかに「S1.生年月日 > WHERE S2.生年月日」という条件も設定されている。この条件により、性別ごとの最年長社員ではなく、単純に全社員のうちの最年長社員の生年月日と比較されて しまう。 |
ウ | ○ | 外部クエリ(サブクエリの外側のSQL文)とサブクエリの行を結ぶ条件が設定されており、相関サブクエリとして機能する。外部クエリとサブクエリの関連付けは「S1.性別 = S2.性別」と、性別のみを照合する条件になっているので、性別ごとに最年長社員の生年月日を取得できる。 |
エ | × | サブクエリの中でグループ化を実行すると、照合する値として複数の行(2行)が返されてしまうのでエラーとなる。 |
問題12
分散データベースシステムにおいて、複数のデータベースを更新する場合に用いられる2相コミットの処理手順として、適切なものはどれか。
ア | 主サイトが各データベースサイトにコミット準備要求を発行した場合、各データベースサイトは、準備ができていない場合だけ応答を返す。 |
イ | 主サイトは、各データベースサイトにコミットが可能であることを確認した後、コミットを発行する。 |
ウ | 主サイトは、各データベースサイトにコミットを発行し、コミットが失敗した場合には、再度コミットを発行する。 |
エ | 主サイトは、各データベースサイトのロックに成功した後、コミットを発行し、各データベースサイトをアンロックする。 |
解答:イ
<解説>
2相コミットは、分散データベースシステムにおいて、一連のトランザクション処理を行う複数サイトに更新可能かどうかを問い合わせ、すべてのサイトが更新可能であることを確認した後、データベースの更新処理を行う方式である。
したがって、イが正解である。
問題13
DBMSをシステム障害発生後に再立上げするとき、前進復帰(ロールフォワード)すべきトランザクションと後退復帰(ロールバック)すべきトランザクションの組合せとして、適切なものはどれか。 ここで、トランザクションの中で実行される処理内容は次のとおりとする。
解答:ア
<解説>
次の条件によりアが正解である。
- トランザクションT2とT5はデータベースに対して書込み(Write)を行い,コミットされたトランザクションである。したがってチェックポイントにおけるバックアップファイルを用いてチェックポイント時点に復帰した後,ジャーナルの更新後ログを用いてロールフォワードにより障害発生直前まで前進復帰する。
- トランザクションT6はデータベースに対して書き込みを行い,コミットされていないトランザクションである。したがってロールバックによりトランザクションによる更新結果を取り消し,トランザクション開始前に後進復帰する。
- トランザクションT3とT4はコミットされていないトランザクションであるが,データベースに対して参照(Read)のみ行い,書込みを行っていないので,前進復帰,更新復帰のいずれも不要である。
問題14
トランザクションのACID特性のうち、一貫性(Consistency)の記述として、適切なものはどれか。
ア | 整合性のとれたデータベースに対して、トランザクション実行後も整合性が取れている性質である。 |
イ | 同時実行される複数のトランザクションは互いに干渉しないという性質である。 |
ウ | トランザクションは、完全に実行が完了するか、全く実行されなかったかの状態しかとらない性質である。 |
エ | ひとたびコミットすれば、その後どのような障害が起こっても状態の変更が保たれるという性質である。 |
解答:ア
<解説>
ACIDは、トランザクション処理の信頼性を保証するために求められる性質である。
原子性(Atomicity)、一貫性(Consistency)、独立性(Isolation)、および永続性(Durability)から合成された頭字語である。
- 原子性(Atomicity)
- トランザクションの処理が完全に実行されるか、全く処理をしないかのどちらかである。
- 一貫性(Consistency)
- トランザクションの実行によってデータベースの内容に矛盾が生じない。
- 独立性(Isolation)
- 複数のトランザクションを同時に実行しても処理過程は他者から隠蔽され、影響されない。
- 永続性(Durability)
- トランザクションが完了した操作は、失われない。
ア | ○ | 一貫性(Consistency)の説明である。 |
イ | × | 独立性(Isolation)の説明である。 |
ウ | × | 原子性(Atomicity)の説明である。 |
エ | × | 永続性(Durability)の説明である。 |
問題15
データベースのトランザクションT2の振る舞いのうち、ダーティリード(dirty read)に関する記述はどれか。
ア | トランザクションT1が行を検索し、トランザクションT2がその行を更新する。 その後T1は先に読んだ行を更新する。その後にT2が同じ行を読んでも、先のT2による更新が反映されない値を得ることになる。 |
イ | トランザクションT1が行を更新し、トランザクションT2画素の行を検索する。 その後T1がロールバックされると、T2はその行に存在しない値を読んだことになる。 |
ウ | トランザクションT2がある条件を満たす行を検索しているときに、トランザクションT1がT2の検索条件を満たす行を挿入する。 その後T2が同じ条件でもう一度検索を実行すると、前回は存在しなかった行を読むことになる。 |
エ | トランザクションT2が行を検索し、トランザクションT1がその行を更新する。 その後T2が同じ行を検索した場合、同じ行を読んだにもかかわらず、異なる値を得ることになる。 |
解答:イ
<解説>
ダーティーリードとは、トランザクション処理において、あるトランザクションが更新されている最中に、他のトランザクションからデータを読み出すことができてしまう現象のことである。
ア | × | 何ら排他制御を行なわないとした場合の振る舞いである。すなわちダーティーリードの説明ではない。 |
イ | ○ | ダーティーリードの説明である。 |
ウ | × | ファントムリードの説明である。 |
エ | × | ファジイリードの説明である。 |
お問い合わせ