連載
» 2016年07月05日 05時00分 UPDATE

ゼロからのリレーショナルデータベース入門(1):そもそも、リレーショナルデータベースとは何か? (2/4)

[杉田奏子,株式会社アシスト]

「リレーショナルデータベース(RDB)」とは何か

 データベースには、大きく分けて「階層型」「ネットワーク型」「リレーショナル型」があります。そのうち、2016年現在で一般的に使用されているのは、リレーショナル型です。「リレーショナルデータベース」、略して「RDB(Relational Database)」と呼ばれます。RDBを管理するDBMSを「リレーショナルデータベース管理システム」、同じく略して「RDBMS」と呼ばれます。

 RDBには2つの大きな特徴があります。

  • データは「二次元の表形式」で表現される
  • 表は結合(ジョイン)して利用できる

 RDBでは、全てのデータを表形式で表現します。表は列と行で構成され、列は必ず1つの意味を持ちます(図5)。

photo 図5 RDBのデータ形式のイメージ

 例えば、図5で示した社員表には「社員番号」「社員名」「給与」「部門番号」といった「列データ」が含まれます。そして、横の1行が1人の社員データを示します。例えば、行データの最初の行にある、社員番号7899の鈴木さんは、月給30万円で10番で識別される部門番号の部署に所属しているという意味になります。社員表を参照することで、社員の社員番号を調べたり、給与金額を変更するといった処理を行えます。

 RDB内にあるデータを参照したり、変更したりするには、「SQL(Structured Query Language)」というデータベース言語を使います。SQLの詳細は後述します。

 RDBのもう1つの大きな特徴は、複数の表を結合(ジョイン)して利用できることです。1つの表の情報だけでは知りたい情報が得られないことがあります。例えば図5では、加藤さんの所属は「20」とありますが、これだけでは正しい部署名が分かりません。そこで、部門番号「20」が「何部の何課」なのかが登録してある「別の表=部門表」を参照します。部門表の情報と付け合わせることで、加藤さんの正しい所属部署が分かる、というわけです(図6)。

photo 図6 「社員表」から正確な所属部門を把握するには、別で管理されている「部門表」と結び付けて確認する

 RDBでは、共通の情報を持つ「列」を使用して、表を一時的に結合することができます。このことを「ジョイン」と呼びます(図7)。複数の表のジョインも、前述したSQLを使って操作します。

photo 図7 「部門番号」という同じ情報を基に、それぞれの表のデータ同士を結び付け合う。これをジョインと呼ぶ

 それならば、最初から図7のような1つの表にしておけばいいのでは? と思うかもしれません。しかし、これらを1つの表にしてしまうと、幾つか問題が起こり得ます。例えば、データベースの規模が大きくなるにつれてディスク領域が多く必要となり、更新の手間も多く発生する課題が発生します(図8)。

photo 図8 全てを1つの表にしてしまうことも可能だが、ストレージ容量や管理の手間が余計に発生してしまう

 具体的に説明しましょう。仮に3拠点で計1万人のデータを保存する社員表に「部門表のデータ」も含めるとすると、3つしかない「所在地」の名称が社員ごとの行データそれぞれに必要となります。重複データが多いと思いませんか? 数件ならまだしも、1万件規模になりますと、その分、無駄と思えるディスク領域を消費してしまっています。

 また、「所在地の名称」が変わる場合はどうでしょう。その拠点にいる社員全員のデータを変更する処理を行わなければなりません。変更は手間が掛かり、ミスも発生しそうです。このような問題を避けるために、「データ重複を省きながら」1つの表を複数の表に細かく分けて、必要に応じてジョインできるようにするのがポイントです。このような作業は、データベースの世界では「正規化」と呼ばれます。

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。