基礎から始めるデータベース入門セミナー

第3回「データベース」の種類

日本オラクル株式会社
井上 学 (いのうえ まなぶ) 山田 真二郎(やまだ しんじろう)

データベースについて1から学びたいという方、一緒に勉強しませんか!!

「基礎からはじめるデータベースセミナー」は、データベースの知識を習得するにはまず何から始めたらよいのかと、書籍を探したりセミナー情報を検索したりしている方のためのセミナーです。これまでデータベースに触れたことの無かった人や、おもにメインフレームやオフコンを中心に扱ってきたために、オープンな環境で動くリレーショナル・データベースに携わった経験がない人たちや営業職の方向けに、「そもそもデータベースって何だろう?」というところから始まり、リレーショナルデータベースのしくみとOracle Databaseのアーキテクチャを基本のところから学習することを目的としています。今回は、その第3回目の講義です。“「データベース」の種類”についてご説明します。

講師
講師
生徒
生徒

目次

階層型データベース

データベースは、おもに「階層型データベース」「ネットワーク型データベース」「リレーショナル型データベース」の3つに分類できます。まずは、階層型データベースについて説明しましょう。

階層型データベースは、名前が示すとおりデータを階層型に格納/整理する仕組みをもったデータベースです。もっともイメージしやすい例は、会社の組織図です。階層型データベースでは、データはツリー構造で表します。そして、ある1つのデータが他の複数のデータに対して、親子の関係をもちます。したがって、データにアクセスするためのルートは一通りしかありません。

また、データを階層型でもつため、データの冗長が発生しやすくなります。つまり、データは常に親子(1対多)の関係とは限らず、「多対1」の場合や「多対多」の場合もあり得、同じデータがあちこちの親データに所属する形になります。先ほど例としてあげた会社の組織図だと、ある一人の人物が複数の部門の仕事を兼任している、と考えればわかり易いかもしれません。兼任していた場合、組織図上は複数の部門に所属(つまりデータベース内には複数存在)していますが、実際には一人だけです。

階層構造だと、どうしても冗長化が起こりやすくなってしまうのですね。

それに、階層型データベースでデータにアクセスするには、プログラマーがあらかじめ階層構造を理解しておく必要があります。また、階層構造に変更があった場合には、それに合わせたプログラムの改変も必要になります。

ネットワーク型データベース

ネットワーク型データベースでは、データは網の目の形で表現されます。それぞれのデータ単位(ノード)が繋がっていることから、ネットワーク型と呼ばれています。ネットワーク型データベースでは、複数の親データへのアクセスが可能になりました。つまり、階層型で問題となっていた冗長性を排除する仕組みになっているのです。

ネットワーク型データベースも、データ構造が変更されるとプログラムに影響があるのでしょうか?

はい、影響します。階層型データベースと同じく、ネットワーク型でもデータ構造を理解してプログラム開発をする必要があります。

図1 データベースの種類
図1 データベースの種類

階層型・ネットワーク型の問題点

1章と2章で述べたように、階層型データベースとネットワーク型データベースでは、それぞれ欠点がありました。階層型では、データの冗長/重複が発生し、プログラムはデータ構造に強く依存します。ネットワーク型では、データ冗長/重複は解消されましたが、依然としてデータ構造への依存性を強くもっています。これではデータベース本来の目的である「データの整理・一元化」は難しくなります。また、データ構造を意識したプログラムの必要性や、データ構造の変更に伴うプログラム改変の必要性は、多くのユーザーやプログラムがデータを使用していた場合にメンテナンスに大きな工数と負荷をかけることにもなります。これでは、ファイルシステムにおける問題を引き継いでしまい、解決になりません。

また、階層型データベースとネットワーク型データベースは、データベースの構築やデータの検索/更新のためにきわめて複雑なプログラム言語が必要になり、かなりの熟練者でないと扱うのが困難でした。

階層型データベースとネットワーク型データベースの登場により、単なるファイルシステムに比べるとデータアクセスは確かに容易になりましたが、データとプログラムの独立性(データ構造の変更がプログラムに影響を与えないこと)やデータの扱いの容易性に関しては、まだ大きな問題が残っていたのですね。

階層型データベースの場合

  • データの中身は同じだが、親の位置が異なることにより、重複するデータ所有が発生
  • 階層型データベース構造が修正される場合、プログラムの変更も必要

ネットワーク型データベースの場合

  • 一つのデータに対し、複数の親を持つような構造
  • ネットワーク型データベース構造が修正される場合、プログラムの変更も必要

リレーショナル型データベース

リレーショナル型データベース(以下、リレーショナル・データベース)は、データを行と列から構成される2次元の表形式で表します。列は各項目を表し、行はデータのエントリー(レコード)を表します。データ同士は複数の表と表の関係によって関連付けられ、SQL(構造化問い合わせ言語)によりユーザーの目的に応じて自由な形式で簡単に操作できます。そして、リレーショナル・データベースは、重複排除や一元管理の為のルールももっているのです。

図2 リレーショナル型データベースのイメージ
図2 リレーショナル型データベースのイメージ

階層型データベースやネットワーク型データベースと比べると、随分画期的なデータベースが開発されたように思えるのですが、データ構造への依存は解消されたのでしょうか?

ほとんど解消されています。リレーショナル・データベースの詳細に関しては第4回の講義で説明しますので、まずはリレーショナル・データベースの利点について簡単に説明しましょう。

リレーショナル・データベースは階層型・ネットワーク型に比べると以下の点で大きなアドバンテージを誇っています。

  • プログラムとデータの分離
    プログラムとデータの独立性が高いため、データ構造に修正が入ったとしてもプログラムへの影響は極めて小さい
  • 柔軟かつ容易なデータの取り出しが可能
  • データベース操作の簡略化

SQLにより、データベースの構築や問合せが簡単になりました。

なるほど。リレーショナル・データベースの登場により、そもそもデータベースによって実現したかった「データを整理/蓄積し活用する」ことが容易になったのですね。

そのとおり。このような優位性により、リレーショナル・データベースは今日ではデータベース市場の主流を占めることになったのです。

ではここで、リレーショナル・データベースの歴史について少し振り返ってみましょう。リレーショナル・データベースのコンセプトは、1970年6月に IBMサンノゼ研究所のコッド博士※が発表した「大規模な共有データバンクのためのリレーショナル・モデル」という論文で提唱されました。しかし当時のコンピュータ会社は、階層型に比べリレーショナル型のデータベースは遅すぎるとして興味を示さず、学術的な世界でのみ取り扱われました。

80年代に入ると、ハードウェアの進化に伴って商用に使えるリレーショナル・データベース用のソフトウェアが徐々に登場してきました。ちなみに、 Dr.DBAことケン・ジェイコブスがオラクル・コーポレーションの前身「Relational Software, Inc.」に入社したのは1981年です。そして1990年代以降になってくると、UNIXやWindowsといったオープン系テクノロジーが、また最近ではLINUX系のサーバーで動くリレーショナル・データベースが急増してきました。その扱いやすさやメンテナンス性に支えられ、現在の商用データベースの約80%はリレーショナル・データベースが占めているのです。

※Edgar F. Codd(1923-2003)。詳細は以下のURLを参照ください。
http://www.oracle.com/technetwork/jp/articles/edgar-f-codd-155044-ja.html

次回は、リレーショナル・データベースについて詳しくご説明します。

"基礎から始めるデータベース入門セミナー" インデックスに戻る

本記事は、「オラクル通信」の同名連載記事から抜粋し、一部に修正を加えたものです。

Copyright © 2010, Oracle Corporation Japan. All rights reserved.
無断転載を禁ず

この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。日本オラクル社は本書の内容に関していかなる保証もいたしません。また、本書の内容に関連したいかなる損害についても責任を負いかねます。

Oracleは米国Oracle Corporationの登録商標です。文中に参照されている各製品名及びサービス名は米国Oracle Corporationの商標または登録商標です。その他の製品名及びサービス名はそれぞれの所有者の商標または登録商標の可能性があります。