かつては非常に高価なもので、手軽に導入できないという印象のあったデータベースですが、現在では、PostgreSQLやMySQL、Firebirdなどといったオープンソースのデータベースが商用のものに引けを取らない機能、性能を備えるようになり、それほど規模の大きくないWebアプリケーションであっても、あたりまえのようにデータベースが使用されるようになりました。
本特集では、Webアプリケーションを初めて開発するという方に向けて、データベース設計の基本について説明していきます。なお、一言にデータベースといってもいろいろなものがありますが、いわゆるテーブルによってデータを管理するリレーショナルデータベースを対象とします。
今回は、データベース設計の全体的な流れについて説明します。
データベース設計とは、データベースによってデータを管理できるように、現実の世界を抽象化してデータモデルを作成していく作業です。データモデルはデータベースをどのように構成するかということを定義したものです。リレーショナルデータベースであれば、リレーショナルモデルがそれにあたります。
このデータモデルを作成していく作業(データモデリング)は、一般的に概念設計、論理設計、物理設計という3つの段階を通して行われます。そして、それぞれの段階ではアウトプットとして概念モデル、論理モデル、物理モデルが作成されます。
概念設計
概念設計では、データベースによって管理の対象とするものを現実の世界から抽出して概念モデルを作成します。概念モデルは、最終的にリレーショナルデータベースでデータを管理するとしても、特定のデータモデルを意識して作成するものではありません。
概念モデルの作成にあたっては、ERモデル(実体参照モデル)がよく使用されます。ERモデルでは、その名のとおり、実体(エンティティ)と関連(リレーションシップ)によってモデルを作成していきます。実体は現実の世界を構成する実体そのもの、関連は実体間のつながりを表現します。また、実体や関連は属性(アトリビュート)を持つことができます。
論理設計
論理設計では、概念設計によって作成された概念モデルを、特定のデータモデルに対応した論理モデルに変換します。したがって、リレーショナルデータベースによってデータを管理するのであれば、ERモデルからリレーショナルモデルを作成していきます。
ERモデルからリレーショナルモデル、つまり、テーブル(リレーション)への変換は機械的に行うことができます。しかし、そのままテーブルに変換しただけでは、リレーショナルモデルとして適切な形式にならない場合があります。
そこで、論理設計ではテーブルをリレーショナルモデルとして適切な形式に変換する作業(正規化)を行います。テーブルを正規化することによってデータの冗長性や不整合の発生を減少させることができます。
また、論理設計では、ERモデルにおける属性をテーブルの列としてデータ型を決定し、テーブルや列に対して制約を定義するといったことも、この段階において行います。
物理設計
物理設計の段階になって初めてデータベースとしての性能について考慮します。具体的には、論理設計において正規化したテーブルの定義を崩したり、インデックスを定義したりして性能が向上するようにモデルを修正していきます。また、物理設計では使用するデータベースに依存する機能を使用することもあります。
物理設計によって修正されたモデルを物理モデルと呼び、このモデルをもって実際にデータベースによって管理することができる形式となります。
今回は、データベース設計の全体的な流れを理解してもらうため、どのような段階を通して現実の世界からデータモデルを作成していくかということについて簡単に説明しました。
次回は、論理設計において説明したERモデルを記述する方法としてER図について紹介します。