データベースとは
データベースとは、データを重複なく整理して管理する仕組みで、正規化やトランザクションが土台になります。

注文表の全行に顧客住所を繰り返し書くと、一部だけ変更されて住所が食い違うことがあります。正規化はこのような更新の不整合を減らします。
基本の仕組み

注文表に顧客番号と住所を毎回書く代わりに、顧客番号で決まる住所を顧客表へ分け、注文表には顧客番号だけを置きます。住所変更を一か所で行えるようになります。
トランザクションは一まとまりの処理です。振込みなら引落しと入金をまとめ、途中で失敗したらロールバックすることで片方だけの更新を防ぎます。
正規化は表を細かく分けること自体が目的ではありません。関数従属性を確認し、分けた表を結合すれば元の関係を正しく復元できるように設計します。
関係モデルの制約

主キーは行を一意に識別し、外部キーは別表を参照します。正規化は重複と更新時の不整合を減らすため、関数従属を見て表を分割します。参照整合性は存在しない参照先を作らない制約で、トランザクションの原子性とは別です。
| 概念 | 対象 |
|---|---|
| 主キー | 行の一意性 |
| 外部キー | 別表の参照 |
| 正規化 | 重複と更新異常の抑制 |
トランザクションの性質と障害回復

トランザクションが満たすべき性質は、頭文字をとってACID特性と呼びます。処理が確定したことをコミット、取り消して開始前に戻すことをロールバックといいます。
障害回復では、トランザクションの途中で異常終了したら、更新前ログを使うロールバックで取り消します。ディスク障害では、バックアップを戻してから更新後ログを適用するロールフォワードで、コミット済みの更新を再現します。
複数のトランザクションが同じデータを更新するときはロックで排他制御します。読取り用の共有ロックどうしは同時に掛けられますが、更新用の専有ロックは他のロックと両立しません。互いのロック解除を待ち合うとデッドロックになります。
| 特性 | 意味 |
|---|---|
| 原子性(Atomicity) | 全て実行されるか、全く実行されないか |
| 一貫性(Consistency) | 実行前後でデータの整合性が保たれる |
| 独立性(Isolation) | 同時に実行しても互いに影響しない |
| 耐久性(Durability) | コミットした結果は障害後も失われない |
| 障害 | 回復方法 | 使う情報 |
|---|---|---|
| トランザクションの異常終了 | ロールバック | 更新前ログ |
| ディスク(媒体)障害 | ロールフォワード | バックアップと更新後ログ |
試験に出る
- 正規化は更新の不整合や重複を減らすこと。
- 関数従属性を確認し、結合して元の関係を復元できるよう設計すること。
- ACID特性(原子性・一貫性・独立性・耐久性)の区別と、原子性を保つロールバック。
- 障害回復のロールバック(更新前ログで取消し)とロールフォワード(バックアップ+更新後ログで再現)の使い分け。
- 共有ロックどうしは両立し、専有ロックは他のロックと両立しないこと。
重要な言葉
- 正規化
- データの重複や更新の不整合を減らすよう表を整理すること。
- トランザクション
- 一まとまりとして扱う処理。途中で失敗したら全体を取り消す。
- 原子性
- 処理が全て行われるか、全く行われないかを保証する性質。
- 関数従属性
- ある属性が決まれば別の属性が決まる関係。
- ロールフォワード
- バックアップ時点から更新後ログを適用し、障害直前のコミット済み状態まで戻す回復方法。
確認問題
確かめよう引落しだけ完了し入金が失敗した状態を残してよい?
いいえ。原子性を保つため全体を取り消すなどの処理が必要です。
トランザクションの途中で失敗したら、全体を取り消す。
正規化は、表を細かく分けること自体が目的である。
途中で失敗したときに全体を取り消す性質を何という?
データの重複や更新の不整合を減らすための整理は?
注文表の全行に顧客住所を繰り返し書くと、一部だけ変更されて住所が食い違うことがあります。はこのようなを減らします。
注文表に顧客番号と住所を毎回書く代わりに、で決まる住所を顧客表へ分け、注文表には顧客番号だけを置きます。を一か所で行えるようになります。
は一まとまりの処理です。振込みなら引落しと入金をまとめ、途中で失敗したらすることで片方だけの更新を防ぎます。
正規化は表を細かく分けること自体が目的ではありません。を確認し、分けた表を結合すれば元の関係を正しくできるように設計します。
出典・参考資料
試験の公式案内と、この記事の参考にした学習資料です。
編集:Pinternet Works · 更新日:
教材の編集方針・訂正について
