応用情報 情報セキュリティ — Questions and Answers
Question 1: データベースのACID特性のうち「原子性(Atomicity)」の説明として正しいものはどれか。
- トランザクションは全て実行されるか全て取り消されるかのどちらかである (Correct answer)
- 同時実行されるトランザクションは互いに影響しない
- コミットされたデータは永続的に保存される
- データベースは常に一貫した状態を保つ
Correct answer: トランザクションは全て実行されるか全て取り消されるかのどちらかである
原子性はトランザクションの「全か無か」の性質。途中で障害が起きてもロールバックにより途中状態にならず、完全に実行されるか全く実行されないかどちらかを保証する。
Question 2: SQL文でNULL値との比較に使用する演算子はどれか。
- IS NULL / IS NOT NULL (Correct answer)
- = NULL / != NULL
- EQUALS NULL / NOT EQUALS NULL
- NULL() / NOT NULL()
Correct answer: IS NULL / IS NOT NULL
SQLでNULLは「値が存在しない」を表し、= や != での比較は常にUNKNOWN(不明)を返す。NULL判定にはIS NULL または IS NOT NULLを使用する必要がある。
Question 3: データベースの正規化における第3正規形(3NF)の条件として正しいものはどれか。
- 第2正規形を満たし推移的関数従属を排除している (Correct answer)
- 全ての列が主キーに直接依存している
- 繰り返し項目を除去している
- 複合主キーの一部への関数従属を排除している
Correct answer: 第2正規形を満たし推移的関数従属を排除している
3NFは2NFを満たした上で、非キー属性が他の非キー属性に推移的に依存している場合にそれを別テーブルに分離する。2NFは主キーの一部への部分関数従属の排除。
Question 4: インデックスを使用してもクエリが高速化されないケースとして最も適切なものはどれか。
- テーブル全体の大部分の行を返す検索 (Correct answer)
- 主キーによる単一行の検索
- ユニーク値が多い列の範囲検索
- 外部キー結合の検索
Correct answer: テーブル全体の大部分の行を返す検索
インデックスはデータが絞り込まれる場合に効果的。テーブルの大部分(通常20〜30%以上)を返すようなクエリではフルスキャンの方が速い場合がある。
Question 5: ビュー(View)の説明として正しいものはどれか。
- テーブルに対するSQL問い合わせを仮想テーブルとして保存したもの (Correct answer)
- テーブルのデータを物理的にコピーしたもの
- インデックスの別名
- ストアドプロシージャの実行結果
Correct answer: テーブルに対するSQL問い合わせを仮想テーブルとして保存したもの
ビューはSQL SELECT文を保存した仮想テーブル。実データは元のテーブルに存在し、参照時にビュー定義のクエリが実行される。アクセス制御や複雑なクエリの簡略化に使われる。
Question 6: トランザクションの分離レベルのうちSERIALIZABLEの特徴はどれか。
- 最も高い分離レベルで複数トランザクションが直列実行と同等の結果を保証する (Correct answer)
- ダーティリードのみを防止する
- 最も低い分離レベルで性能が最高
- コミット済みデータの読み取りのみを保証する
Correct answer: 最も高い分離レベルで複数トランザクションが直列実行と同等の結果を保証する
SERIALIZABLEは最高の分離レベルで、並行トランザクションを直列実行した場合と同じ結果を保証する。ダーティリード・ノンリピータブルリード・ファントムリードすべてを防ぐが、性能は最低。
データベースのACID特性のうち「原子性(Atomicity)」の説明として正しいものはどれか。