現在、様々な分野で活用されているデータベース。
データベースのデータ構造のことを「データモデル」と呼びますが、データモデルにはいくつかの種類があり、それぞれが一定の規則に基づいてデータが管理されています。
現代のデータモデルは「関係データベース(リレーショナルデータベース)」が主流となっていますが、どのようなデータ構造を持っているのでしょうか。
この記事では、データベースのデータモデルの種類と、現代の主流である「関係データベース」の概要について、イメージ図を用いて説明します。
データベースの種類
この章では、データベースのデータモデルの種類について説明します。
種類とは、あくまでデータベースの構造の種類であり、データベースサービスの種類のことではありません。
階層型
最初に紹介するデータモデルは「階層型」と呼ばれるツリー構造のモデルです。

1つの親データに複数の子データがぶら下がっているような構造となっていて、会社の組織図に似ているかもしれません。
階層型のデータモデルはデータ検索が高速である一方、複数のカテゴリに紐付けられるデータは重複してしまうというデメリットもあります。
身近なデータベースとして、スマホの連絡帳をイメージしてください。
連絡帳には「友人」や「仕事」などの属性(タグ)を付与することができますが、たとえばAさんという友人に「友人」と「女子会」の属性を付与したと仮定しましょう。
この場合、階層型のデータモデルでは、「友人」の配下と「女子会」の配下、それぞれにAさんというデータが存在してしまいます。
階層型のデータモデルでは、ひとつのデータにつき親データはひとつしか存在できませんので、構造上、このような重複は避けることができなくなってしまうのです。

一方、たとえばAさんのデータに辿るまでに、まずは「友人」のデータを通ります。階層を通るたびにターゲットデータを一気に狭めていきますので、データ検索速度は高速になります。
ネットワーク型
次に紹介するデータモデルは「ネットワーク型」と呼ばれる蜘蛛の巣構造のモデルです。

ネットワーク型のデータモデルは、1つのデータに対して複数の親データを持つことができますので、階層型データモデルの欠点であるデータの重複を避けることができます。
一方、その複雑な構造からデータ構造を正確に整理しないとデータの利活用が難しくなる面もあり、より高度な知識が求められるというデメリットになっています。
関係データベース(リレーショナル型)
最後に紹介するデータモデルは「関係データベース(リレーショナル型)」と呼ばれる表構造のモデルです。

このデータモデルでは、表を複数存在させることができ、共通したキー項目を持たせることで、お互いの表に存在するデータを容易に関連付けることができます。
その利便性と合理性の高さから、現在のデータモデルの主流となっている型です。
つまり、データベースの理解を高めるためには、現在、多くのデータベースで採用されている「関係データベース(リレーショナル型)」の理解を深めることが不可欠なのです。
関係データベースについて、次の章でもう少し掘り下げてみます。
関係データベースについて
前章で紹介した通り、関係データベース(リレーショナル型)は表形式の構造になっているデータベースです。
そして、データベース内に複数の表を持つことが可能で、お互いに関連付けてデータの結合などをし、必要な情報を取り出すことができます。
これはイメージ例を用いるとわかり易いです。
関係データベースの例
どの会社でも社員情報をデータ管理していると思いますが、社員情報を関係データベースで管理するイメージを見てみましょう。
この例では、1つのデータベースに「社員基本」「職位賃金」「役職賃金」と3つの表データを持たせています。



この表を見ればすでにイメージができた方もいるかと思いますが、社員データに付随する賃金情報は、「社員基本」の表では持っていません。
職位や役職に関するデータは、「表①:社員基本」から「表②:職位賃金」、「表③:役職賃金」に関連付け、結合されて、ひとつの情報(データ)となるのです。
なお、職位に関する賃金は「職位」のコード(8Aや7Cなど)がキーとなっていて、役職に関する賃金は「役職」のコード(SMGやMGなど)がキーになっています。
関連付けのイメージ

結合後の表

あとがき
今回の記事では、データベースの知識に欠かせない関係データベース(リレーショナル型)について、図解を用いて紹介しました。
このように、身近なデータベースを例に考えると理解がし易いと考えていますが、いかがでしょうか。
なお、関係データベースでは、複数の表を基にお互いに関連付けられる構造が多いのですが、関係データベースの定義として「必ずしも複数の表が存在することが求められていない」という一面もあります。
表の数に関わらず、関係データベースは表形式のデータベースと理解しておいてもよいでしょう。