【達人に学ぶDB設計 徹底指南書】の感想をまとめてみる
はじめに
『達人に学ぶDB設計 徹底指南書』を読んだので、まとめてみる。
良かった点
・SQL入門本の次ステップとしてスムーズに移行できた
『スッキリわかるSQL入門』でSQL操作を一通り学んだことで、
データベースからデータを操作する手法が分かった。
ただ、Webサービスを1から立ち上げようとしたら、データベースを作る(データ設計する)側の手順が必要になる。
そうなった際に何に気をつけ、どういう手順でデータ設計すれば良いかを、本書で学ぶことができた。
また、インプットするだけでなく演習問題も付いているので、
実践練習もできた点が良かった。
・無駄のない構成で読みやすい
この本を読んだことがある人なら共感してもらえると思うが、
冒頭ではこの本がターゲットにしている分野や大切な観点をまとめてあったり
「勘どころ」で抑えるべきポイントが要約されていたり
図を多用しすぎず行の間隔に余裕があったり
と、内容は決して優しいものではなかったが、スラスラと読めた。
学んだこと
・最初にデータありき
システムの品質を決めるのは、プログラムではなく設計。
これは本書で口酸っぱく語られていることだが、
データ設計は後々変更するのは高コストなため、初めの段階でしっかり設計しておくこと。
・3層スキーマ
①外部スキーマ(外部モデル)= ビューの世界
②概念スキーマ(論理データモデル)= テーブルの世界
③内部スキーマ(物理データモデル)= ファイルの世界
概念スキーマは、外部スキーマと内部スキーマの緩衝材(お互いが依存関係になり、一方の変更が他方に影響を与える弱いシステムになるのを防ぐ)
・論理設計のステップ
1. エンティティの抽出(RDBでは、テーブル)
2. エンティティの定義(RDBでは、列)
3. 正規化(第1~3正規形まででOK)
4. ER図の作成
・物理設計のステップ
1. テーブル定義(論理設計で定義された概念スキーマをもとに、DDLで)
2. インデックス定義
3. ハードウェアのサイジング
4. ストレージの物理配置決定
・データベース設計は常にPros and Cons
データベース設計に限らずあらゆる事象には
「この手順やこの機能なら絶対大丈夫」というものはない。
「あちらを立てればこちらが立たず」の連続だが、
『あくまで正攻法、どうしようもなくなった時のみ特例措置』
難しかったところ
・内部スキーマおよび物理設計
内部スキーマ関連はファイルの世界でよりシステム内部に近い層の話だったので、
どうしても内容的に難しく理解に苦しむことが多かった。
おわりに
今回データベース設計を学んだので、今後実装の際に学んだことを生かして
データベース設計の経験も積んでいきたい。