「マンガでわかるデータベース」を読んだ
なぜ読んだか
業務でMySQLを使ってはいるものの、体系的に学んだことがなかったため読んでみました。 結論から言うと、読んでよかったと思います。
学んだこと
2章 リレーショナルデータベースって何だろう?
演算
射影, 選択, 結合などはもちろん知っていたが、直積や商などの演算は聞いたことはあったが理解はしていなかった。
- 直積:2つの表のレコードの組み合わせ これはすぐ理解できた。
- 商:割られる方の表から、割る表のすべての行を取り出し、割る方の行を除く らしい。
3章 データベースを設計しよう
正規化
正規化はなんとなく理解した気にはなっているものの、自分の言葉で説明するとなると難しい。
- 非正規形:繰り返しが排除されていない表 1つの項目に複数の値が入っている。
- 第一正規形:繰り返しが排除されるように別の表に分割するした状態
- 第二正規形:主キーによって他の列の値が決まる(関数従属)ように表を分割した状態
- 第三正規形:間接的に値が決まる(推移従属)部分がなくなるように表を分割した状態
4章 データベースを利用しようーSQLの基本操作
相関副問い合わせ correlated subquery
副問い合わせ外で指定された表を副問い合わせ内で用いる。
これは初めて知った。
ややこしく感じるが、上の言葉のとおり副問い合わせに副問い合わせ外の情報を使うというもの。
5章 データベースを運用しよう
ACID属性
基本情報の午前問題でちょろっと出てくるやつ。という印象だった。
- Atomicity:トランザクションはコミット or ロールバックのどちらかで必ず終了する
- Consistency:トランザクションが同じ資源(表, 行など)に並列的にアクセスしても矛盾が生じない
- Isolation:トランザクションが並列処理をされても、逐次処理したときと同じ結果になる
- Durability:完了したトランザクションの内容が、障害によって損なわれない
その他、時刻印制御や楽観的制御といった同時実行制御の方法, ダーティーリードやノンリピータブルリート, ファントムなどの独立性のレベルなど知らないことも多かった。
6章 データベースの普及と活躍
分散データベース
- 水平分散:複数の対等なデータベースサーバーを用いる。どれかのDBサーバーに障害が起きても、DBを稼働させることが可能。
- 垂直分散:中心的な役割を持つサーバーと、処理を依頼するサーバーに分ける。主サーバーへの負担が大きいが、主サーバーの管理がしやすい。
2相コミット
調停者が各参加者にコミット可能かを尋ねる。参加者が全員コミット可能でなければロールバックする。
↓の解説がわかりやすかった。
平成21年秋期問31 2相コミットプロトコル|応用情報技術者試験.com
分散データベースの結合処理
その他分散データベースの結合について。
読んでどうだったか?
読んでみてよかったです。
マンガでわかるというタイトルのため正直なめてかかっていましたが、知らない・理解できていないことも多くあり、非常に勉強になりました。 (特に後半)
この本はデータベースを全然知らない人がデータベースの雰囲気を知るのにもよいですし、僕のようなデータベース触ってなんとなく理解した気になっている人間が知識を整理する・知識の隙間を埋めるのにも活用できます。
ルルナ姫がかわいいです。