基本情報技術者 2014年 春期 午前(科目A) 問13
問題文
データベース(DB)へのアクセスを行うブラウザからのリクエスト処理を、Webサーバが受信し解読した後に行う一連の実行処理の順序はどれか。ここで、Webサーバはリクエスト処理ごとにDBへの接続と切断を行うものとする。
〔実行処理〕
① DBの切断
② DBへのアクセス
③ DBへの接続
④ HTML文書の組立て
⑤ SQL文の組立て
⑥ ブラウザへの送信
選択肢
ア:③、 ②、 ⑤、 ④、 ⑥、 ①
イ:③、 ④、 ②、 ⑤、 ⑥、 ①
ウ:③、 ④、 ⑤、 ②、 ⑥、 ①
エ:③、 ⑤、 ②、 ④、 ⑥、 ①(正解)
🔒 解説は解答すると表示されます
WebサーバのDBアクセス処理順序【午前解説】
正解の理由
エ(③、⑤、②、④、⑥、①)が正解です。
理由は順序の論理性にあります。まずDBに接続(③)し、実行するSQL文を組立てる(⑤)。そのSQLを用いてDBへアクセス(②)し結果を取得します。取得したデータを元にHTML文書を組立てる(④)ことで、動的な内容を正しく反映できます。組立てたHTMLをブラウザへ送信(⑥)した後、リクエスト処理が完了したのでDBの切断(①)を行います。接続前にSQLを実行したり、結果なしでHTMLを完成させてしまうとデータが反映されないため不正解です。
理由は順序の論理性にあります。まずDBに接続(③)し、実行するSQL文を組立てる(⑤)。そのSQLを用いてDBへアクセス(②)し結果を取得します。取得したデータを元にHTML文書を組立てる(④)ことで、動的な内容を正しく反映できます。組立てたHTMLをブラウザへ送信(⑥)した後、リクエスト処理が完了したのでDBの切断(①)を行います。接続前にSQLを実行したり、結果なしでHTMLを完成させてしまうとデータが反映されないため不正解です。
解法ステップ
- 各処理(接続・SQL組立・DBアクセス・HTML組立・送信・切断)を役割で分類する。
- 「どの処理が他の処理の結果を必要とするか」を考える(例:HTML組立はDBアクセス結果を必要)。
- 依存関係を矢印でつなぎ、論理的に矛盾しない順序に並べ替える。
- 選択肢と照合して、依存関係を満たす順序を選ぶ。
選択肢別の誤答解説
- ア: ③、 ②、 ⑤、 ④、 ⑥、 ①
誤り点:DBに接続してすぐDBアクセス(②)を行い、その後でSQLを組立てる(⑤)順序は矛盾。実行するSQLは事前に組立てておく必要があります。 - イ: ③、 ④、 ②、 ⑤、 ⑥、 ①
誤り点:接続後にHTMLを組立ててしまい、その後DBアクセスとSQL組立が続く構成で、HTMLに動的データを反映できない順序になっています。 - ウ: ③、 ④、 ⑤、 ②、 ⑥、 ①
誤り点:HTML組立(④)がSQL組立(⑤)とDBアクセス(②)の前に来ており、結果の反映タイミングが不適切です。 - エ: ③、 ⑤、 ②、 ④、 ⑥、 ①
正解:接続→SQL組立→DBアクセス→HTML組立→送信→切断の流れで、依存関係と実行順序が論理的に整合します。
よくある誤解
- 「HTMLは先に全部組み立てて後でデータを埋めれば良い」→動的データは実行結果が必要なので、必ずDB実行後に最終組立てを行う必要があります。
- 「DBの切断は送信前でもよい」→理論的には送信前でも切断可能な場合がありますが、処理中に結果を使うなら送信前に切断してはいけません。選択肢の文脈では送信後に切断が適切です。
- 「SQLの組立てはDB接続後でなくても良い」→組立て自体は接続前に行える設計もありますが、接続状態やセッション変数に依存する場合は接続後に組立てるのが安全です(本問は接続→SQLの順を前提とする選択肢構成)。
補足コラム
- 実運用では「接続→切断」を毎リクエストで繰り返すのはコストが高いため、コネクションプールを使って接続の再利用を行うのが一般的です。
- トランザクション制御が必要な処理では、BEGIN/COMMIT/ROLLBACK を適切に行い、エラー時のロールバックを考慮する必要があります。
- セキュリティ面ではSQL組立時にプレースホルダやプリペアドステートメントを用い、SQLインジェクション対策を行ってください。
FAQ
Q1: HTMLの静的部分は先に作っておいても良いですか?
A1: はい、静的部分は事前に準備可能ですが、動的データ挿入はDB実行後に行う必要があります。
A1: はい、静的部分は事前に準備可能ですが、動的データ挿入はDB実行後に行う必要があります。
Q2: DBの切断は必ず送信後に行うべきですか?
A2: 基本は「不要になったら速やかに切断」が原則です。レスポンス生成にDB結果が必要なら送信前に切断してはいけませんが、結果を取得済みで以降DBを使わないなら送信前に切断しても構いません。
A2: 基本は「不要になったら速やかに切断」が原則です。レスポンス生成にDB結果が必要なら送信前に切断してはいけませんが、結果を取得済みで以降DBを使わないなら送信前に切断しても構いません。
Q3: 接続前にSQLを組立てても良いですか?
A3: 多くの場合、SQL組立自体は接続に依存しませんが、接続ごとのセッション状態や変数に依存するSQLは接続後に組立てる必要があります。本問では接続→SQLの順を前提としています。
A3: 多くの場合、SQL組立自体は接続に依存しませんが、接続ごとのセッション状態や変数に依存するSQLは接続後に組立てる必要があります。本問では接続→SQLの順を前提としています。
関連キーワード: Webサーバ, DB接続, SQL文, HTML組立て, HTTPレスポンス, コネクションプール, トランザクション, SQLインジェクション

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

