応用情報 データベース応用 4 — Questions and Answers
Question 1: SQLのGROUP BY句と共に使用できるHAVING句の役割はどれか。
- 集計後のグループに対して条件をフィルタリングする (Correct answer)
- WHERE句の代わりに使用する個別行のフィルタ
- 結果をソートする条件を指定する
- JOIN条件を指定する
Correct answer: 集計後のグループに対して条件をフィルタリングする
HAVING句はGROUP BYの集計結果に対してフィルタ条件を適用する。WHERE句は集計前の個別行にフィルタを適用するため、集計関数(SUM・COUNTなど)の条件にはHAVINGを使う。
Question 2: データベースの「楽観的ロック」の説明として正しいものはどれか。
- 更新時にバージョン番号や更新日時で衝突を検知しコンフリクト時はエラーにする (Correct answer)
- データ読み取り時に即座にロックを取得する
- デッドロックを防ぐためにロックしない
- 全テーブルに排他ロックをかける
Correct answer: 更新時にバージョン番号や更新日時で衝突を検知しコンフリクト時はエラーにする
楽観的ロックは衝突が少ないと仮定し、更新時にバージョン番号等で変更がないか確認する方式。衝突が多い場合は再試行コストがかかるが、ロック競合が少ない場面では効率的。
Question 3: データベースのコネクションプールの目的はどれか。
- DB接続を使い回すことで接続確立のオーバーヘッドを削減する (Correct answer)
- DBのデータをメモリにキャッシュする
- クエリを並列実行して高速化する
- バックアップを自動的に取得する
Correct answer: DB接続を使い回すことで接続確立のオーバーヘッドを削減する
コネクションプールはあらかじめDB接続を複数確立して池(プール)に保持し、アプリケーションから再利用する仕組み。毎回の接続確立(TCP接続・認証)のコストを排除できる。
Question 4: OLAP(Online Analytical Processing)のスタースキーマの構成要素はどれか。
- 中央のファクトテーブルと周辺のディメンジョンテーブルから構成される (Correct answer)
- 全テーブルが均等に接続されたメッシュ構造
- 単一の巨大フラットテーブル
- 3層の階層的なテーブル構造
Correct answer: 中央のファクトテーブルと周辺のディメンジョンテーブルから構成される
スタースキーマはデータウェアハウスの設計パターンで、売上などの事実データを持つファクトテーブルを中心に、日付・商品・地域などのディメンジョンテーブルが星型に配置される。
Question 5: SQLのINNER JOINとLEFT JOINの違いとして正しいものはどれか。
- INNER JOINは両テーブルに一致する行のみ、LEFT JOINは左テーブルの全行を含む (Correct answer)
- LEFT JOINは両テーブルに一致する行のみ返す
- INNER JOINは全ての行を返す
- LEFT JOINは右テーブルの全行を返す
Correct answer: INNER JOINは両テーブルに一致する行のみ、LEFT JOINは左テーブルの全行を含む
INNER JOINは結合条件に一致する行のみを返す。LEFT OUTER JOINは左テーブルの全行を返し、右テーブルに一致しない場合はNULLを補う。RIGHT JOINは右テーブルの全行を返す。
Question 6: データベースのマテリアライズドビューの特徴として正しいものはどれか。
- クエリ結果を物理的に保存し高速な読み取りを実現するが更新が必要 (Correct answer)
- 通常のビューと同じで物理データは持たない
- リアルタイムで常に最新データを返す
- 書き込み性能を向上させるための機能
Correct answer: クエリ結果を物理的に保存し高速な読み取りを実現するが更新が必要
マテリアライズドビューはクエリ結果を物理的に保存した実体化ビュー。通常のビューより高速に参照できるが、ベーステーブル更新後は定期的にリフレッシュが必要。
SQLのGROUP BY句と共に使用できるHAVING句の役割はどれか。