5.1 リレーショナルデータベースとは

まずリレーショナルデータベースの考え方を押さえます。

5.1.1 リレーショナルデータベースとは

リレーショナルデータベースは、1970年にIBM社のEdgar F. Codd博士によって提唱されたリレーショナルデータモデルの理論に従ったデータ管理方式の一つです。
1件のデータ(レコード)を複数の項目(フィールド)の集合として表現し、データの集合をテーブルと呼ばれる表で表す方式で、 ID番号や名前などのキーとなるデータを利用して、データの結合や抽出を容易に行なうことができるのが特徴です。

5.1.2 テーブルの概念

いままで見てきた通り、列(フィールド)が集まって行(レコード)を形成し、これが集まってテーブルとなります。「bookinfo」を参考にすると、「isbn」「title」「price」がそれぞれフィールドを表し、これが集まって1件のレコードとなり、さらにレコードの集まりがテーブル「bookinfo」となります。リレーショナルデータベースでは、テーブルがデータの入れ物の基本単位となります。

 表(bookinfo)

5.1.3 リレーショナルの意味

これまでは、単一のテーブルを個別に扱ってきましたが、この個々のテーブルを互いに関係(リレーション)付け、 複数のテーブルを連携して管理する方式が、リレーショナルデータベースなのです。今まで出てきた「bookinfo」と「orderinfo」を関連付けてみましょう。

※簡略のために、データを一部だけ表示しています。

この2つの表は「isbn」で関連付けられています。つまり、「orderinfo」の注文番号「1」で注文された書籍は「SQL入門テキスト」、注文番号「5」で注文された書籍は「SQL基礎テキスト」ということになります。この2つのテーブルは下記のように1つにまとめることもできます。

orderno user isbn title price quantity date
1 kanda 00001 SQL入門テキスト 1050 1 2010-07-01
5 kanda 00002 SQL基礎テキスト 2300 1 2010-08-22

しかしこのようなテーブルは冗長であり、例えば「SQL入門テキスト」の注文が1万件あった場合、titleの「SQL入門テキスト」とpriceの1050円というデータが1万件できることになります。しかし、これを「bookinfo」と「orderinfo」に分けることによって、「SQL入門テキスト」とpriceの1050円というデータは「bookinfo」の1件で済みます。これは、データの容量を抑えるとともに、データに変更があった場合の保守性の観点からも有用です。「bookinfo」を例にとれば、仮に書籍名「SQL入門テキスト」が変更になった場合でも、1万件のデータを更新せずに済みます。

このように冗長な表を複数の表に分割して冗長さをなくすことを「正規化」と呼びます。正規化の手法は本テキストの範囲を超えますので説明は省略しますが、興味のある方は専門の書籍等を参照してください。