データベーススペシャリスト試験の全問題一覧
科目A-1(多肢選択式・四肢択一、30問)
- ある社員管理表は、社員番号を主キーとし、社員番号→社員名、社員番号→部門コード、部門コード→部門名という関数従属を持つ。この表に対して部門名を変更する際、同じ部門に所属する複数の社員の行をすべて更新しなければならない。この現象への対処として最も適切なものはどれか。
- 学生と科目の間には「1人の学生が複数の科目を履修し、1つの科目を複数の学生が履修する」という多対多の関連がある。この関連をリレーショナルデータベースの表として実装する方法として、最も適切なものはどれか。
- 社員表の年齢列に、0以上150以下の範囲外の値が登録されることを防ぎたい。この目的を実現するために指定すべき制約はどれか。
- 社員表に対してWHERE 部門コード = ? AND 入社年月日 > ?という検索条件を伴う問合せが頻繁に実行される。部門コードは10種類の値しか取らず、入社年月日はほぼすべての行で異なる値を取る。この検索を高速化するために複合インデックスを1つ作成する場合、最も効果的な列順序はどれか。
- トランザクションAが表Xをロックした後に表Yのロック取得待ちとなり、同時にトランザクションBが表Yをロックした後に表Xのロック取得待ちとなり、互いに相手の解放を待ち続ける状態が発生した。DBMSがこの状態を検出した際に一般的に行う対応はどれか。
- 受注表(10,000行)の得意先コード列は、得意先表(500行)の主キーである得意先コードを参照する外部キーであり、参照整合性が保たれている(すべての受注に有効な得意先コードが設定されている)。この2つの表を得意先コードで内部結合したとき、結果は何行になるか。
- あるB+木索引において、1,000,000行のデータに対し、索引の各ノードの分岐数(ファンアウト)が100であるとき、この索引は理論上何段(ルートからリーフまでの階層数)になるか。
- 次の売上表に対してSUM(売上高) OVER (PARTITION BY 店舗コード ORDER BY 月 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)という累積合計のウィンドウ関数を適用した。店舗コード「A」の3月の行で算出される値はどれか。(店舗Aの売上高: 1月=100, 2月=150, 3月=200)
- データベースの設計工程を、要件定義の後、概念設計・論理設計・物理設計の順に進める場合、「論理設計」の工程で行う作業として、直前の「概念設計」の成果物を最も適切に引き継いでいるものはどれか。
- チェックポイント取得後にシステム障害が発生し、ログを用いて回復処理(リカバリ)を行う場合の一般的な処理の順序として、正しいものはどれか。
- 関係を第1正規形から段階的に正規化する際、部分関数従属を解消する段階(第2正規形化)と、推移的関数従属を解消する段階(第3正規形化)の順序として正しいものはどれか。
- 関係Rが第3正規形(3NF)を満たすが、ボイス・コッド正規形(BCNF)は満たさない場合がある。このような状態が生じる原因として最も適切なものはどれか。
- リレーショナルデータベースにおける主キー制約とUNIQUE制約(一意性制約)の違いに関する記述のうち、適切なものはどれか。
- SQLの副問合せ(サブクエリ)における「相関副問合せ」と「非相関副問合せ」の違いに関する記述のうち、適切なものはどれか。
- 同時実行制御における共有ロック(Sロック)と専有ロック(排他ロック、Xロック)の違いに関する記述のうち、適切なものはどれか。
- ANSI/SPARCの3層スキーマアーキテクチャにおける「外部スキーマ」の説明として、最も適切なものはどれか。
- リレーショナルデータベースにおける「候補キー」の説明として、最も適切なものはどれか。
- リレーショナルデータベースにおける「ビュー(VIEW)」の特徴に関する記述のうち、適切なものはどれか。
科目A-2(多肢選択式・四肢択一、25問)
- ある銀行システムで、口座Aから口座Bへの1万円の振替処理を行うトランザクションが、口座Aからの引き落とし処理を終えた直後、口座Bへの入金処理を行う前にシステム障害でトランザクションが中断した。再起動後のデータベースの状態として、トランザクションのACID特性のうち原子性(Atomicity)を満たすために正しい対応はどれか。
- トランザクション分離レベルにおける「READ COMMITTED」と「REPEATABLE READ」の性質の違いを説明したものとして、適切なものはどれか。
- DBMSがデッドロックを検出した場合の一般的な処理の流れとして、最も適切なものはどれか。
- 分散データベースにおける2相コミットプロトコル(Two-Phase Commit)の第1フェーズ(コミット要求フェーズ)で調整者(コーディネータ)が行う処理として、適切なものはどれか。
- あるDBMSはWAL(Write-Ahead Logging)方式を採用している。更新トランザクションがコミットされ、クライアントにコミット完了の応答を返した直後にサーバの電源が断たれ、データファイルへの反映(フラッシュ)が完了していなかった。再起動後のDBMSの動作として適切なものはどれか。
- データベースのチェックポイント方式に関する記述のうち、シャープチェックポイント(一括チェックポイント)とファジーチェックポイント(非同期チェックポイント)の違いを正しく説明しているものはどれか。
- メディア障害(ディスク破損)が発生した場合の一般的な復旧手順として、最も適切な順序はどれか。
- あるDBMSで障害が発生し、直前のチェックポイントから15万件のログレコードが未反映のまま残っていた。1件のログレコードの再実行(redo)に平均0.2ミリ秒を要する場合、ロールフォワード処理に要するおおよその時間はどれか。
- ある大規模なテーブルに対する検索SQLの実行計画を確認したところ、WHERE句で絞り込み条件を指定しているにもかかわらずテーブルフルスキャンが選択されており、想定より処理時間が長くなっていた。原因調査の結果、対象列に索引は存在していたが、直近の大量データ更新後に統計情報が更新されていなかったことが判明した。このときまず行うべき対応として最も適切なものはどれか。
- リレーショナルデータベースにおける「オプティマイザの統計情報」の役割を説明したものとして、適切なものはどれか。
- テーブルのパーティショニング方式である「レンジパーティショニング」と「ハッシュパーティショニング」の性質の違いを説明したものとして、適切なものはどれか。
- あるSQLの実行において、論理読み込み(logical reads)が10,000回発生し、そのうちバッファキャッシュにデータが存在せず物理I/Oが発生した回数(物理読み込み)が800回であった。このときのバッファヒット率は何%か。
- あるシステムでは主系(プライマリ)から副系(スタンバイ)へ非同期レプリケーションでデータを転送している。主系で更新をコミットし、クライアントに応答した直後、副系への転送が完了する前に主系に障害が発生しフェールオーバーが行われた。このとき起こりうる事象として最も適切なものはどれか。
- 大量データを扱うシステムでシャーディング(水平分割)を導入する際の設計の進め方として、最も適切な順序はどれか。
- 稼働率0.9のストレージ装置を2台用意し、少なくとも1台が稼働していればシステム全体が利用可能な並列冗長構成にした。このときのシステム全体の稼働率はいくらか。
- 分散システムにおける「CAP定理」の説明として、適切なものはどれか。
- ある企業のデータウェアハウスで、売上実績を分析するためにスタースキーマを設計することになった。日付・商品・店舗といった分析軸ごとの属性情報と、売上金額・数量といった実績値を分けてテーブル化する場合、実績値(売上金額・数量)を格納するテーブルの設計として適切なものはどれか。
- NoSQLデータベースにおける「キーバリュー型」と「ドキュメント型」の違いを説明したものとして、適切なものはどれか。
- ある企業で、退職予定の社員が業務上不要な顧客テーブルに対して大量のSELECT文を深夜に繰り返し実行していたことが、後日の調査で判明した。このような内部不正の早期発見のために、あらかじめ講じておくべき対策として最も適切なものはどれか。
- あるテーブルに400万件のレコードを格納する。1ページ(ブロック)には充填率を考慮して20件のレコードを格納できるとすると、このテーブルの格納に必要なページ数はどれか。