はじめに
前回はデータベースの超基礎事項について解説ました。データベースの理解には最初のイメージが結構重要なので、まだ見てない方は是非こちらを見てから、今回の解説を読むようにしてみてください。
さて、今回ですが、データベースをより分からなくするリレーショナルデータベース(RDB)について解説していきます。リレーショナルデータベースはめちゃくちゃ重要な概念であるのにもかかわらず、データベースをよりわかりづらくするというかなり尖った性格を持っています。
一方で、理解できればデータベースに関する考え方の幅が一気に広がる、そんなかわいいやつでもありますので、みなさんには奴のそんなかわいい一面に是非触れて頂きたいと思います。
データベースの種類
データベースは型よって2つの種類に分けられています。その2つの型の種類とは、1つ目がリレーショナル型のデータベース、そして2つ目が非リレーショナル型のデータベースです。また、リレーショナル型のデータベースのことをリレーショナルデータベースやRDBといい、非リレーショナル型データベースのことを、NoSQLや非RDBといったりします。
単純すぎて何とも言えないと思いますが、ここで重要なのは、リレーショナルデータベースとは、2種類あるデータベースの型のうちの一つである、ということです。
では、なぜ非RDBではなく、リレーショナルデータベースをテーマの中心にするかというと、世の中にあるデータベースは、ほとんどがリレーショナル型のデータベースだからなんですね。なんなら、データベースといえばリレーショナル型のデータベースといっても過言ではないくらいなのです。
では、リレーショナルデータベースの立場がわかったところで、具体的にリレーショナルデータベースとは一体何者なのか、解説していこうと思います。
リレーショナルデータベースとは
リレーショナルデータベースとは、複数の行と列で構成された表形式のデータベースのことです。
また、リレーショナルデータベースでは、表の全体のことを「テーブル」、行(横)のことを「レコード」、列(縦)のことを「カラム」と呼んだりします。
前回解説した図書館のイメージでいえば、図書館がデータベース、本棚がテーブル、本棚の一段一段がレコードといった感じでしょうか。(カラムはちょっと例えづらい・・・。)
さて、いきなり色々な情報が出てきて「何ゆうてるん」と思った人も多いでしょう。しかし、この時点ではまだ、「表の形になってるデータベースのことをリレーショナルデータベースっていうんだぁ」ぐらいの感覚で大丈夫です。
リレーショナルデータベースをもっとわかりやすく
さて、ここまでの内容であれば、色々な本やサイトに載っていると思うのですが、今一つパッとしませんね。僕も最初は「だからなんやねん」と思いました。
ということで、少し考え方を変えてみましょう。
リレーショナルデータベースは「複数の行と列で構成された表形式のデータベースのこと」ではなく、「表の形になるように、データ(情報)をぶち込んたもの」と考えてみるとどうでしょうか。
そうすると「では、なぜ表の形でなければならないのか」といった疑問が生まれますね。
みなさん、前回の内容は覚えているでしょうか。ひとつ前の章でも触れましたが、データベースは図書館のイメージです。そして、なぜ図書館なのかというと、データベースとは、情報(データ)が一定の規則のもと整理されているものだから、という話をしましたね。
そうつまり、この一定の規則のもと整理されているというのが超絶ポイントなのです。表形式であれば、一定の規則のもと整理する、ということがかなり容易になります。というか、そもそも表形式以外の方法で、情報を規則的に整理する形ってあまり思いつきませんよね。
つまり、データを良い感じにまとめるのに表形式がピッタリだったため、表形式のデータベースを採用しましたよ、というのがリレーショナルデータベースの始まりなんですね。
リレーショナルデータベースの特徴
とはいっても、やはり疑問に残るのはこの名前ですよね。
「『リレーショナルデータベース』って、なんでそんな名前にしたん。表形式データベースでええやけ」
といった声が聞こえてきそうですが、まぁ気持ちはわかります。しかし、リレーショナルデータベースには、表形式という特徴を超えて、この名前が採用されたのも納得できる最強かつ最大の特徴があるのです。
そうそれは、複数のデータベース同士を関連付けさせることができる、という特徴です。
リレーショナル(=relational)は「関連する」っていう形容詞ですが、まさにデータベース(テーブル)同士がお互いに関連しあって最強のデータベースとなっています。
(補足:便宜上、「データベース同士」と表現しましたが、厳密にはテーブル同士が関連しています。関連したテーブルとかそういうの全部ひっくるめて「データベース」ですからね。)
では、何が最強かというのを具体的に見ていきましょう。
まず、注文票が以下のようにデータベースになっています。
長々と色々書いてありますが、例えばこの住所の部分。所々同じ住所がありますね。
まぁ10件や100件くらいならいいですよ。でもこれが1,000件、10,000件ってなったときにどうしますかっていう話なんです。しかも、もし会社がお引越しして、住所全部書き換えてくださいってなったら地獄開幕ですからね。こんなんいちいち書いてられないですし、何より煩雑になります。
ということで、こんな感じで新たにテーブル(住所一覧)をつくってあげるとどうでしょうか。
テーブルは2枚に増えましたが、なんだかさっきよりスッキリしましたね。
(補足:本来であれば「注文一覧」と「住所一覧」は別のテーブルに記載しなければいけません。しかし、今回は解説の便宜上Excelを使用しており、一つのシートに2つのテーブルをまとめて書いてあります。あくまでもわかりやすさのためであり、実際のデータベースではこのような使い方はしませんし、そもそもできませんので、そこはご了承ください。)
そして「A社であればこの住所」というの形で、社名と住所を結び付けてあげると、リレーショナルなデータベースが完成します。
これであれば、もし住所変更になっても、新たに作った「住所一覧」テーブルの内容を変えるだけで、「注文一覧」テーブルのすべてに反映されるという仕組みです。
とはいっても、まだまだフィールド(上の図で言えば、「社名」「注文商品」「個数」のこと)が少ないので、わざわざ別シートに分ける必要もない感じもしますが、もし社長のプロフィール(性別、電話番号、メールアドレス、etc)や注文商品の詳細(りんごの種類、みかんの種類、etc)などのデータが必要になったとき、そのデータをすべて順番に書こうとすれば、以下みたいになるわけです。
これでは、一体何のデータベースなのかわかりませんよね。
図書館の例でいえば、本棚ごとのジャンル分けとかが一切されておらず、一つの棚にすべての本があいうえお順に並んでいるみたいな状態です。こんな図書館は潰れて然るべきですが、データベースに関しても同様なんですね。
ちなみに、上記のデータベースを各テーブルに分けるとこんな感じになります。
先ほどのテーブルとは打って変わって、各ジャンルごとに分けたことで、非常に見やすくまとまったテーブルになりました。
まとめ
ということで、今回はリレーショナルデータベース(RDB)について解説しました。
ここまでの内容をまとめると、リレーショナルデータベース(RDB)とは、表の形になるようにデータ(情報)をぶち込んだものであり、他のデータベース(テーブル)と関連して動くいう最強の特徴をもっている、ということですね。
さて、リレーショナルデータベース(RDB)は、複数とテーブルと関連しながら動くというのが大きな特徴でしたが、では一体どのようにして関連性を持たせるのか、といった疑問が残ります。
上の図でも、サラッと「テーブルをこんな感じで分けてみました」といって提示してますが、実はこの分け方にも、ある程度ルールのようなものがあるのです。
ということで、次回はのテーブルの分け方のルールに該当する正規化というものについて解説してきます。正規化は、ルールという要素以外にも、データベースの扱い方という点で実に大切な考え方が含まれていますので、必ずマスターするようにしましょう。
また、今回リレーショナルデータベースの解説を見て、「あれ、Excelと同じじゃね?」と思った人は、「リレーショナルデータベース(RDB)とエクセルの違い」という記事もありますので、併せてご覧ください。
~今日はここまで!~