「ACID特性が覚えにくい…」
「試験でどう問われるの?」
送金の途中でシステムが落ちたら、あなたのお金はどうなってしまうのか。この不安に答えるのがトランザクションです。
トランザクションとは、複数の操作を全部成功か全部取り消しでまとめる処理の単位です。「引く」と「足す」のような一連の操作を、途中で分断させない。この「全部か、無か」が、データの矛盾を防ぐ土台になります。
この記事では、トランザクションが要る理由をシーンで押さえ、コミットとロールバックの実際を図で見て、安全を守るACIDの4性質を整理します。最後に、実務で牙をむく独立性と、試験での問われ方まで踏み込みます。基本情報・DP-900のデータベース対策に効きます。
1. 送金が途中で止まったら — トランザクションが要る理由

AさんからBさんへの1,000円の振込を考えます。やることは2つ、Aから引く・Bへ足す。もし「引いた直後」にシステムが落ちて「足す」が実行されなければ、1,000円が宙に消えます。これは許されません。
あなたが普段使うネット通販や予約も、裏はトランザクションに支えられています。「注文を確定」「在庫を1つ減らす」「決済を記録」がひとまとまりだからこそ、途中で通信が切れても、ちぐはぐな状態が残りにくい。土台のデータベースそのものは データベースとは で押さえられます。
あなたが「そこまで厳密にする必要ある?」と感じたら、逆の世界を想像してみてください。もし保証がなければ、通信の切断やアプリの強制終了のたびに、代金だけ引かれた注文や、在庫だけ減った幽霊注文が積み上がります。トランザクションは、そうした中途半端を最初から生ませないための約束ごとです。あって当たり前に見える安心の裏に、この仕組みが働いています。
2. コミットとロールバック — 「全部か、無か」の実際
「全部か、無か」を実現する仕掛けが、コミットとロールバックです。最後まで正しく終わったら確定(コミット)、途中で問題が起きたら取り消して元に戻す(ロールバック)。図で分岐を見てください。
3. ACID — 安全を守る4つの約束

トランザクションが安全に終わるための4つの性質が、頭文字をつないだACIDです。あなたはまず、名前とひとことの説明を結びつけてください。
| 性質 | 意味 | キーワード |
|---|---|---|
| 原子性(Atomicity) | 全部成功か、全部取り消しか | 全か無か |
| 一貫性(Consistency) | 処理の前後で整合性が保たれる | ルールが崩れない |
| 独立性(Isolation) | 同時に走る処理が互いに干渉しない | 同時実行 |
| 耐久性(Durability) | 確定した結果は障害でも失われない | 障害に強い |
右端のキーワードが、試験を解く手がかりになります。説明文に「同時実行」が出たら独立性、「障害でも消えない」なら耐久性、というふうに逆引きできるからです。正規化との関係まで広げたいなら、SQLと正規化とは でデータを矛盾なく整える考え方も押さえられます。
4つは、バラバラの決まりではありません。4つとも「トランザクションを安全に終わらせる」という1つのゴールに向いています。原子性が「途中で止めない」を、独立性が「他とぶつけない」を、耐久性が「終わった結果を守る」を担う。あなたが4性質を1本の物語としてつなげると、丸暗記より格段に忘れにくくなります。
4. 同時アクセスが牙をむく — 独立性のこわさ
4つの中で、あなたが実務でいちばん痛い目を見やすいのが独立性(Isolation)です。1人で動かすぶんには、どのアプリも正しく見えます。落とし穴は、アクセスが同時に殺到したときだけ表に出ます。
現役エンジニアの視点で言うと、典型は在庫です。「残り1」の商品に注文が集中し、独立性の設計が甘いと、2つの処理が両方「在庫を確保できた」と判断して在庫がマイナスになります。こわいのは、テスト中は1人で操作するので気づかず、本番のセール初日に初めて露見すること。だから、同時アクセスを前提にした設計が要るわけです。同じデータを大量にさばく処理の性格は OLTPとOLAPの違い でも触れられます。
5. 試験での問われ方 — 説明から用語を当てる

基本情報・DP-900では、1つの性質の説明から用語を選ばせる形が定番です。「障害が起きてもコミット済みのデータが失われない性質はどれか」「同時実行の処理が互いに影響しない性質はどれか」といった具合です。
解き方はシンプルで、説明文のキーワードから逆引きします。「障害」なら耐久性、「同時実行」なら独立性、「全部か無か」なら原子性、「整合性」なら一貫性。あなたがこの対応を持っていれば、4択で迷いません。コミットとロールバックの区別も、あわせて狙われる定番です。
次のステップ
データベースが試験全体でどう問われるかを俯瞰したいなら、基本情報技術者試験の試験範囲と勉強法ガイド で学習の優先順位を立てるのがおすすめです。
得点力に変えるなら、基本情報技術者 データベースの問題集 で、ACIDまわりの設問に手を動かして慣れておくのが近道です。