今回は、データベース設計の全体的な流れについて見ていきます。本来、データベース設計とは非常に奥深く、それを語るには十分な経験と高度な知識が必要です。今回はあくまでデータベース設計とはどのようなことをやるのか、その概要のみを見ていきます。
データベース設計とはデータベースの詳細なデータモデルを作成し、データベース内のデータをディスクへどのように格納するのかを決める作業のことです。まず、データベース設計の基盤となる3層スキーマを思い出してください。(詳細は「3層スキーマ」参照)
データベース設計の大まかな流れは以下のようになります。それぞれが各スキーマと結びつきます。
- 論理設計(概念スキーマ)
- ビュー設計(外部スキーマ)
- 物理設計(内部スキーマ)
この中で重要なのが論理設計と物理設計になります。
論理設計の概要
論理設計は、データベースによってデータを管理できるように、現実世界に存在するものを抽象化してデータモデルを作成していく作業です。データモデルとはデータベースにどのような表があり、その表の中にどのような列があるか、その列はどういう性質を持っているか、表と表はどのような関係にあるかを定義したものです。
論理設計は以下のようなステップで行います。
- エンティティの抽出
- エンティティの定義
- 正規化
- ER図の作成
論理設計のゴールはER図を作成することです。ER図とは、データを「実体」(entity)と「関連」(relationship)、「属性」(attribute)という3つの構成要素でモデル化する「ERモデル」を図で表したもののことです。
上記のステップに当てはめると、「1.エンティティの抽出」でシステムに必要なエンティティ(=データ)を抽出し、「2.エンティティの定義」では、ステップ1で抽出した各エンティティがどのような属性を持つかを定義します。そして、「3.正規化」で各エンティティがどのように関連するかを整理します。
それら3つのステップを踏んで、得られた結果から「4.ER図の作成」を行います。
物理設計の概要
物理設計では論理設計の結果を受けて、テーブルやインデックスを定義します。また、データを格納するための物理的な領域や格納方法を決めます。
- テーブル定義
- インデックス定義
- ハードウェアのサイジング
- ストレージの冗長構成決定
- ファイルの物理配置決定
どれも大切な工程ですが、特に大変なのが「3.ハードウェアのサイジング」でしょう。サイジングとは、システムやその構成要素について、必要とされる規模や性能を見極めて用意することです。リクエストの混雑時、ハードウェアスペックが足りず、要件を満たすパフォーマンスがでないとなると一大事です。最悪は、システムダウンが起きてしまうことです。大きなシステムの場合は特に、システムダウンによる損失は計り知れません。ITシステムの依存度が高くなっている現在では、何千万円単位の損失となるケースもそれほどめずらしくないでしょう。損失はシステムが使えない間、ものすごい勢いで膨らんでいきます。かと言って、高価なハードウェアを揃えられるわけではありません。必ず、予算との戦いが待っているでしょう。
サイジングの結果によっては、論理設計で正規化したテーブルの定義を崩すなどして、性能が向上するようにモデルを修正していく作業も行うこともあります。