データベースとは

データベースとは、データを保存・抽出できるようになったデータ集合のことをいいます。
ワープロで作成した文書もデータベースの一種ですし、エディタで入力したテキスト文書、年賀状ソフトで入力した住所録もデータベースです。 また、ディスクに保存をしていなくてもメモリー内には覚えているので、このようなデータもデータベースといえると思います。
紙に書かれたものもデータベースです。電話帳などはけっこう大きなデータベースですよね。
ここでの説明は「コンピュータを利用したデータベース」に絞っているので、紙などで表現されているものは除外して説明しています。


全体集合と部分集合

データベースは色々なデータの集まりです。ワープロで作成した文書を例にして考えてみましょう。 作成した文書には、何らかの1つ以上のことがらを表現しています。そして、その文書は1行以上の行数で表現されています。 1行は複数の単語で構成されています。 このようにワープロで作った文書は、色々な単語がたくさん集まって構成されています。 この例では、文書全体を全体集合、それぞれの単語を部分集合として考えてみます。


データベースの種類

データベースは以下のように大別できます。

  • 簡単には全体集合の中から部分集合を抽出できない形式のもの(これを以下の説明ではデータ指向型といいます)。
  • 簡単に全体集合の中から部分集合を抽出できる形式のもの(これを以下の説明では抽出指向型といいます)。

データ形式 特徴
データ指向型
ワープロが良い例です。
データに規則性がなく、データの作者はそのデータの表現を思いついたまま自由に表現できます。
自由に入力できるかわりに、簡単には全体集合の中から目的とする部分集合を抽出できません。 たとえばワープロで作成した「あいさつ文書」の中に書かれている「あて先」を機械的に探すことはほとんど不可能です。
抽出指向型 Excelなどの表計算ソフトや年賀状ソフトなどを使ったことがあればわかりますが、これらは行と列で表形式にデータを入力していきます。 たとえば、年賀状ソフトに入力するとき、「住所」の欄に氏名を入力しても無意味ですよね。 このように、データを自由に入力することができないかわりに、たとえば「東京都内に住んでいる人を抽出する」ということは簡単にできそうです。

(ここに書いている「データ指向型」「抽出指向型」というのは、私が説明上名付けたものです。これらはコンピュータ用語ではありません。)

一般的に「データベース・ソフトウェア」と言われているものは、上記の「抽出指向型」をさしています。
MySQLも「抽出指向型」のデータベースです。


データベース・ソフトウェアのデータ形式 (テーブル、レコード、フィールド)

データベース・ソフトウェアにも色々なものがありますが、ここではMySQLなどの「リレーショナル型データベース」に絞って説明します。

わかりやすくするため、例をあげて説明します。ここでは、年賀状ソフトでもよく使われている住所録データベースを考えて見ましょう。

各個人別に記憶しておくデータは「個人情報」という名前を付けることにしましょう。 「個人情報」は以下のような構成になります。

個人情報
氏名 郵便番号 住所 電話番号
太郎 123 東京都足立区 000-0000-0000
花子 456 愛知県名古屋市熱田区 111-1111-1111

データベース・ソフトウェアでは以下のような表現をします。

  • データベース名は「住所録」といいます。
  • 「住所録」データベースには「個人情報」というテーブルがあります(表形式のデータをテーブルといいます)。
    データベースには1つ以上の複数のテーブルを保存できます。
    Excelで言えば1つのワークブックの中に複数のワークシートを保存できますが、この感覚とほぼ同じです。
    1つのデータベースには複数のテーブルを保存できます。
  • 「個人情報」テーブルには「太郎」や「花子」の情報が保存されたレコードがあります(表の行に相当するものをレコードといいます)。
    また、1行のことを「1レコード」ということがあります。総行数を「レコード数」といいます。上記の例ではレコード数は2レコードです。
  • 「個人情報」テーブルには「氏名」や「住所」などのフィールドがあります。(表の列に相当するものをフィールドといいます)


キー

キーとは、コンピュータ内部で目次を作っておくことを言います。

たとえば、さきほどの「個人情報」テーブルで見てみましょう。「個人情報」テーブルでは氏名で検索して住所や電話番号を調べることが多いのではないでしょうか。

このとき、氏名にキーを作っておくと多量のデータがあっても瞬時に検索できるようになります。データが増えても検索時間はあまり変わりません。

キーを作らなくても検索はできますが、データの増加に比例して検索時間も長くなっていきます。

このように、キーをもったフィールドで検索すると高速に検索できますので、検索を繰り返すようなシステムでは必ずキーを設けるようにしましょう。


テーブルの連結 (JOIN)

今度は、それぞれの個人情報の家族構成をデータベースに保存することにしましょう。 これもテーブルに保存します。

さて、この時困ったことがおきます。1人の個人情報に、家族は何人いるか未定ですね。
たとえば太郎さんの家族は3世代同居で数十人ということもあり得ます。 どのようにテーブルを作ったら良いでしょうか?

一般的に、こういった未知数のデータを保存する場合には別のテーブルに保存するとうまくいきます。

家族情報
代表者氏名 家族氏名 間柄 年齢
太郎 太郎 本人 38才
太郎 洋子 35才
太郎 たろ一 長男 15才
太郎 たろ子 長女 13才
太郎 二郎 次男 10才
花子 花子 本人 25才
花子 孝三郎 28才

この例の場合では、太郎の家族は本人を含めて5人です。花子の家族は2人ですね。
これで、個人情報と家族情報がテータベースに保存できました。

ところで、このデータベースを使って洋子さんの住所を調べるときはどうしたらよいでしょうか?
このような関連性がある2つ以上のテーブルでは、以下のようにすればデータを見つけられます。

  1. 家族情報から洋子さんのデータを検索する。
  2. 洋子さんの家族は代表者が太郎さんだとわかります。
  3. 今度は個人情報から太郎さんのデータを検索します。
  4. 太郎さんの住所がわかります。
  5. 洋子さんは太郎さんの家族なので、洋子さんの住所は太郎さんの住所と同じです。よって、洋子さんの住所は「東京都足立区」ということが判明しました。

毎回、このようにして調べればいいのですが、少し面倒ですよね。

もしも、上記2つのテーブルを含んだデータベースがあったとき、以下のようなデータが取り出せれば洋子さんの住所を調べるのは簡単ではないでしょうか。

個人・家族情報
代表者氏名 家族氏名 間柄 年齢 郵便番号 住所 電話番号
太郎 太郎 本人 38才 123 東京都足立区 000-0000-0000
太郎 洋子 35才 123 東京都足立区 000-0000-0000
太郎 たろ一 長男 15才 123 東京都足立区 000-0000-0000
太郎 たろ子 長女 13才 123 東京都足立区 000-0000-0000
太郎 二郎 次男 10才 123 東京都足立区 000-0000-0000
花子 花子 本人 25才 456 愛知県名古屋市熱田区 111-1111-1111
花子 孝三郎 28才 456 愛知県名古屋市熱田区 111-1111-1111

上の3つの表をよく見比べるとわかりますが、この例では「個人情報」の「氏名」と、「家族情報」の「代表者氏名」がリンクされて1レコードに合体されています。

こういった、2つ以上のテーブルを合体することを「JOIN」といいます。
JOINを行うと、物理的には存在しない、仮想のテーブルが出来たように見えます。
データベース・ソフトウェアでは、こういったJOINを何度も繰り返して、必要な情報を瞬時に取り出せるようになっています。

また、この例では「個人情報」の太郎さんの住所だけを変えると、「個人・家族情報」にのっている太郎さんの家族の住所は全員変わります。
このように、JOINを使うと非常に簡単にデータを変更できるようになります。

これでデータベースの説明はおしまいです。興味が沸いたらMySQLデータベースをインストールしてみましょう。

MySQLのページ トップへ

Copyright©2001-2019 釣ったよ! All Right Reserved.    sg@tsuttayo.jpn.org