この記事では、データベース業務を扱うSQL初心者の方向けに「データベースの型の種類」について解説していきます。
この記事の内容は僕が研究を行っている上で、実務でも関係がありそうな事をまとめて記載したものです。
実際の業務と異なる点もあるかもしれませんが、その点はご了承ください。
本記事ではデータベースの型の種類として「階層型」「ネットワーク型」「リレーショナル型」の3種類を解説します。
階層型データベース
階層型データベースは昔から使われてきたデータベース構造で、下図のようなツリー構造をとっています。
ツリー構造とは、木のように一本の幹から複数の枝へと分かれて伸びながら、最後には多数の葉をつける形の構造のことです。
階層型データベースはデータ同士の階層関係に着目してデータを表現するデータベースとなっており、データを親子関係として表現する構造です。
親と子の関係は1対多となります。上図の階層型データベースのツリー構造を元にイメージするとこの様なイメージとなります。
階層型データベースの具体例としてイメージしやすいのが、会社などの組織図です。
病院や医局(医師が所属する大学の組織)も同じ様なものなのですが、会社、NPO法人など多くの組織には部署や役職があり、それが階層型となって意思決定などが行われます。
階層型データベースは特定のデータを検索する際には常に1つのルートだけしか存在しないため、速度が非常に速いというメリットがあります。
複数のルートがあれば、その分、検索するのにかかる時間も増えてしまいます。
ただし、注意しないといけないのが、データが重複してしまう点です。
これも組織図でイメージするとわかりやすいです。
例えば、会社において「社員A」が「企画課」と「開発課」とを兼務した場合、2つの課それぞれの下に「社員A」が別々で登録されることになり、社員Aは1人だけなのに、まるで2人いるかのようになってしまいます。
また、階層構造に変化があった場合、プログラムの修正も発生しメンテナンスも大変になるデメリットがあります。
社員Aが別の課へ異動となったり、退職する場合です。
データを更新する際は、複数のデータに対して更新をする必要があり、抜け漏れが発生しやすくなります。組織図が頻繁に変更される場合には適さないデータ構造とも言えるでしょう。
ネットワーク型データベース
ネットワーク型データベース(Network Database:NDB)は、親と子とが $n:m$ の対応で構成されるネットワーク構造であるデータベースです。
網の目のように要素と要素が互いにリンクする構造となっています。
ノードの繋がりが網目状になるところから「ネットワーク」という名前が名付けられました。
ノードというのはデータベースで言うと、親・子を「点」、親子間を結んでいる「線」の内、点の部分を指します。
階層型データベースでは発生していた、社員Aの重複登録を避けることができるようになっています。
また、検索のスタート地点を複数設けることができるという、柔軟な設定ができるようになっています。
ネットワーク型の登場によって、階層型データベースの冗長性の問題は排除されましたが、プログラムがデータ構造に依存してしまう問題は残ったままです。
自由度は高いが設計が複雑で利用効率が低くなりやすい面があります。
データ構造を理解していないとデータにアクセスできないため、データ構造への強い依存性を持っています。
リレーショナル型データベース
リレーショナル型データベース(RDB)は、行と列からなる「表」で表されたデータベースです。
データベースの型の中では、一番スタンダードなタイプのデータベースです。イメージとしては以下の図の様なイメージです。
データ検索のほかにSQLを用いたデータのアクセスが可能になります。
一方で、RDBでは、複雑なデータの作成・編集も可能になったため、階層型データベースと比較すると、速度が遅くなる場合もあります。
列にはそれぞれ重複しない項目名が設定され、行としてデータを追加していきます。
表にすることによって、人間の目で見ても行と列との関係性が直感的にわかりやすくなっています。
さらに複数の表を結合することによって、より簡潔に、分かりやすく整理することができるようになります。
関係の深い属性同士を列で並べ、そこに行としてデータを登録していくイメージです。
- 患者番号 患者氏名
- 00001 相田〇〇
- 00002 伊藤△△
- 00003 上田××
※ 実際の臨床研究では患者指名は全て匿名化されて、他の番号と紐付され、紐付データは厳重に管理する場所に保管しています。
※ ここでは簡単に上記の様に記載をしました。
Microsoft ExcelやGoogleスプレッドシートを使い慣れた人が見ると、データを格納する方法が直観的にイメージしやすいという利点があります。
データベースに慣れていない人にともコミュニケーションを取る上では、階層型データベース、ネットワーク型データベースよりも適しています。
データ同士に親子の関係がないので、データに直接アクセスして自由に編集することが可能です。
RDBは階層型データベースに比べて以下のメリットがあります。
RDBのメリット
- プログラムとデータの独立性が高く、データ構造が変わってもプログラム修正に与える影響が少ない
- データベース操作が容易
- リレーショナルデータベースはエクセルの表を思い浮かべると分かりやすい
RDBを管理するためのリレーショナルデータベースマネジメントシステム(RDBMS)は、SQLと呼ばれる言語を使って、データの登録・検索・更新・削除をすることができます。
やっとSQLが出てきました。
RDMSの代表的な製品として、日本オラクルの「Oracle Database」、マイクロソフトの「SQL Server」、日本アイ・ビー・エムの「DB2」などがあります。
RDBを共同作業する場合、データの扱いを厳密にする必要があります。同時に編集されてしまうと、データの整合性が取れなくなるためです。これは、データ保護の観点でも非常に効果的です。
RDBによって、階層型データベースやネットワーク型データベースが使われる機会は減りました。
現在では、さまざまな分野でRDBが使われています。
一方、ソフトウエアの多様化に伴って、リレーショナルデータベースがあまり向かないソフトウエアも増えています。
そのため、今回紹介したタイプ以外のデータベースも、製品化されています。
例えば、XMLのデータを直接に扱える「XMLデータベース」や、オブジェクト指向プログラミングと相性が良い「オブジェクト指向データベース」などがあります。
まとめ:データベースの型の3つの種類
今回は、データベースの型の3種類についてご紹介しました。
データベースの型の3つの種類
- 階層型データベース
- ネットワーク型データベース
- リレーショナルデータベース
現在、主流となっているのは3つ目のリレーショナルデータベースでしょうか。
データベースを開発する時に使用するときのRDBMSの特徴やSQLの基礎については一通り押さえておくのがよいかと思います。。