データベースの説明
主キーと外部キーが存在する。
データベース主に3つのスキーマが分かれている。
それぞれ、ATMを例にして考えてみよう。
外部スキーマ:ユーザーがATMを見てる画面
概念スキーマ:開発者が見ているデータ
内部スキーマ:ハードウェアの部分
主要なデータベースの関係モデル:表形式
属性とは列のこと。
データベースの正規化
主キーと外部キーがある。
→1つに特定するための列を主キー
外部キー
→表と表をくっつけるためのキー
表を分けるメリット:
独立性が高まり、データの管理が容易になる。
第一正規化:重複してる列を分割する。
第二正規化:カテゴリー別にデータを分割する。
第三正規化:第二で分割しきれなかった部分をさらに分割する。
トランズアクション処理:
Atomicity:「完全に処理」、「全く処理されてないこと」「途中で終わる処理はつくらない」
Consistency:データベースの内容に矛盾がないこと。
Isolation:複数のトランズアクションの実行結果が等しくなること。
Duration:障害が発生してもデータベースからデータが消失しないこと。
共有ロック:他ユーザーはデータを見ることができるが更新は出来ない。
専有ロック:他ユーザーはデータを見ることができないが更新は出来ない。
ストアドプロシージャ:
プロシージャ:データベーすの命令郡を一つにまとめる。なぜ?データベースをSQLで実行するときに一つずつ実行する手間と通信にかかる負荷を軽減できる。
データベースの復元:
更新前ジャーナルと更新後ジャーナルがある。
更新前ジャーナル:処理が終わる前のデータをそれに保存
更新後ジャーナル:処理が無事に終わったら、それに記録。
コミットとロールバック:
バックアップファイルと更新後ジャーナルでデータを破損した際に、データを復元できる。
バックアップファイルに定期的にデータが保存されている。更新後ジャーナルはトランズアクションが終わったあとのデータを保存してるので復元が可能。
ロールバック:トランズアクション中にエラーが発生した際、更新前ジャーナルで復元。
ロールフォワード:システム障害等でデータが破損した際、バックアプファイルと更新後ジャーナルで復元。
2相コミット
すべてコミット可能:コミット実施
一つでも✗:ロールバック
これらを2相コミットという。