リレーショナルデータベースと階層型データベースの主な違いは、リレーショナルデータベースがリレーショナルモデルに従い、テーブルにデータを格納するのに対し、階層型データベースは階層モデルに従い、ツリー状の構造でデータを格納する点です。
データベースとは、関連するデータの集合体です。
DBMSは、データをデータベースに保存し、アクセスや管理を容易にするためのソフトウェアです。
データベースには様々な種類があり、リレーショナルデータベースと階層型データベースはそのうちの2つです。
リレーショナルデータベースとは
データベースモデルとは、データベースの論理設計と構造を定義するものです。
ここで、リレーショナルデータベースとは、関係モデルに基づき、データをテーブルに格納するものです。
また、行は各エンティティを表し、列は属性を表す。
図1:リレーショナルデータベースの表
例えば、ある組織のデータベースを想定する。
社員表は、emp-id, name, age, cityの属性を持つ。
ここで、従業員テーブルの主キーはemp-idです。
また、プロジェクトテーブルと呼ばれるテーブルは、project-id, project-name, duration, emp-idの属性を持っています。
ここで、プロジェクトテーブルの主キーはproject-idです。
社員テーブルのemp-idは、プロジェクトテーブルの外部キーです。
これら2つのテーブルは、外部キーを使って互いに関連づけられます。
リレーショナルデータベースのデータの保存と管理には、SQL(Structured Query Language)が使用されます。
SQLはさらに3つの主要なカテゴリーに分けられる。
SQLはさらに、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つに大別されます。
さらに、DDLはテーブルの構造を変更します。
DMLはデータを操作するのに役立ち、DCLはデータベースユーザーに権限を与えたり奪ったりするのに役立つ。
階層型データベースとは
階層型データベースは、階層的なモデルに基づいている。
データをツリー状の構造で保存する。
ここでは、データはレコードとして保存され、リンクによって互いに接続される。
また、レコードはフィールドの集合体です。
各フィールドは1つの値のみを含む。
さらに、階層構造はルートデータから始まる。
そして、親ノードに子ノードを追加することで、ツリーのように拡張していく。
子ノードは、1つの親ノードしか持たない。
しかし、親ノードは1つ以上の子ノードを持つことができる。
図2: 階層モデル
例えば、ある大学のシナリオを想定する。
これは、データを学科とインフラストラクチャに分割する。
学科は、コース、講師、学生に分けられる。
コースはさらに、理論と実践に分かれる。
同様に、データもツリー状に整理される。
リレーショナルデータベースと階層型データベースの違い
定義
リレーショナルデータベースとは、1970年にE.F.Coddによって提唱されたデータの関係モデルに基づくデータベースです。
階層型データベースは、データをツリー状に整理したデータベースです。
つまり、リレーショナルデータベースと階層型データベースの根本的な違いを説明する。
ベースモデル
つまり;リレーショナルデータベースは、リレーショナルモデルに基づいている。
これに対して、階層型データベースは、階層型モデルに基づいている。
データの保存方法
また、リレーショナルデータベースと階層型データベースのもう一つの違いは、リレーショナルデータベースがテーブルでデータを格納するのに対し、階層型データベースはツリー状の構造でデータを格納することである。
データ検索
リレーショナルデータベースでは、SQLを使って簡単にデータを検索することができる。
一方、階層型データベースでは、データの検索は困難です。
データを取り出すには、ルートノードからツリー全体を走査する必要がある。
この点が、リレーショナルデータベースと階層型データベースの重要な違いです。
人気度
また、リレーショナル・データベースは、階層型データベースよりも一般的です。
結論
簡単に説明すると、リレーショナルデータベースと階層型データベースは、大きく分けて2種類のデータベースです。
リレーショナルデータベースと階層型データベースの主な違いは、リレーショナルデータベースがリレーショナルモデルに従い、データをテーブルに格納するのに対し、階層型データベースは階層モデルに従い、データをツリー構造で格納する点です。