まさ@ブログ書き込み中

まさ@ブログ書き込み中

まさの旅、英語、プログラミング、プライベートについて、色々記録しています。

『達人に学ぶDB設計徹底指南書』を読んで

 

皆さんこんばんは、まさです。

今日は僕がDB設計について学ぶために読んだ『達人に学ぶDB設計徹底指南書』について、学んだことや感想をまとめていきたいと思います。

 

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

 

  

 

本の構成

本書は全9章から成り、DB設計についての基礎知識が網羅的に紹介されています。各省のタイトルを紹介します。

 

  1. データベースを制する者はシステムを制す
  2. 論理設計と物理設計
  3. 論理設計と正規化
  4. ER図
  5. 論理設計とパフォーマンス
  6. データベースとパフォーマンス
  7. 論理設計のバッドノウハウ
  8. 論理設計のグレーノウハウ
  9. 一歩進んだ論理設計

 

各章のタイトルを見てわかる通り、データベース自体の捉え方から始まり、論理設計、物理設計、パフォーマンス、そしてグッド・バッドノウハウについてちゃんと説明してくれます。

 

僕は僕のようなDB設計についてちゃんと本を読んだことのない初心者が最初に読むべき本はこの本だと思っています。次に楽々ERDレッスンを読んでもいいかもしれません。

 

 

3層スキーマ

各章のタイトルにも出てきた「論理設計」や「物理設計」はデータベースの「3層スキーマ」に関わっている言葉です。ここでいうスキーマとはデータ構造やフォーマットという意味です。その三つのスキーマとは

 

  1. 外部スキーマ(外部モデル)=ビューの世界
  2. 概念スキーマ(論理データモデル)=テーブルの世界
  3. 内部スキーマ(物理データモデル)=ファイルの世界

 

です。それぞれについてもう少し説明していきます。

 

外部スキーマ

外部スキーマとはユーザー(システムの利用者)から見て、データベースがどのような機能とインターフェースを持っているかを定義するスキーマです。

 

テーブルやビュー(SQLのビューです)のことを指します。つまり、画面やデータのことです。

 

概念スキーマ

概念スキーマとは一言でいうとテーブル定義のことで、データの要素やデータ同士の関係を記述するスキーマです。外部スキーマがユーザーから見たデータベースであれば、概念スキーマは開発者から見たデータベースです。

 

そして、概念スキーマの設計を論理設計と言います。論理設計の一環として正規化やER図があります。

 

内部スキーマ

概念スキーマで定義された論理データモデルを、具体的にどのようにDBMS(Database Management System)内に格納するかを定義するスキーマが内部スキーマです。DBMSから見たデータベースと言えるでしょう。

 

テーブルやインデックスの物理的定義、ハードウェアのサイジング(キャパシティとパフォーマンスの観点からストレージを選定すること)、ストレージの冗長構成(RAID)、ファイルの物理的配置を考えることなどがそうです。

 

一言で「DB設計」といっても、色々な観点から設計が行われることがわかります。

 

 

本書を読んでの感想

本書は一冊の本の情報量が多くて長かった上に、読み終えてから時間が少し経ってしまっているので、僕は読んだ内容の全てを覚えているわけではありません。

 

ただ、「何か困った知識があれば本書を読み直せばいい」ということは印象に残っています。どの章もわかりやすい図解と共に丁寧な説明が載っています。

 

例えば第二章のバックアップ設計の項ではバックアップの三つの種類について丁寧に説明がされています。リストアとリカバリ、ロールフォワードについての説明は目から鱗でした。

 

また、第七章と第八章の論理設計のバッドノウハウとグレーノウハウは実際にちゃんとしたDB設計をする時に参考にしたいなと思いました。

 

ここで「ちゃんとしたDB設計」と言いましたが、それは大量かつ多様なデータを扱ったりする複雑なアプリケーションのDB設計のことを指しています。もちろん、どんなアプリケーションを作る時にもちゃんとしたDB設計を行うのは大事なのですが、例えばユーザー登録もしないただのToDoリストのアプリケーションと、HOME'Sのように会員登録をしたり、検索結果や閲覧した物件を残しておいてサジェストするようなアプリではまた違うと思うのです。

 

 

最後に

『達人に学ぶDB設計徹底指南書』の概要について簡単にまとめました。どの本もそうなのですが復習すること、または実践をすることによって知識が定着すると思うので、一度読んで終わりにせず、折に触れて本書を参考にしたいと思っています。

 

それでは、今日はここまで。ありがとうございました。