文中の説明画像をクリックすると拡大します。
データベースって何?
データベースを一言で表現すると「ある条件に当てはまるデータを集めて、使いやすい形式に整理された情報の集まり」と言えます。
データベースというと、コンピュータで構築されたものを指す場合が多いのですが、紙媒体の電話帳や住所録も、広い意味でデータベースということができますが、ここでは、コンピュータで扱うデータベースを対象とします。
データベースといっても様々な種類があるのですが、現在最も普及している形式のデータベースが「関係データベース」です。
関係データベースとは、リレーショナルデータベース(Relational Database)とも言われ、その構造はExcelの表のような形をしています。
そして、データベースに含まれているExcelの表のようなものを「テーブル(table)」と呼びます。
一つのデータベースには、複数の表が含まれています。
ここまでの情報を図にすると、下図のようになります。
この図では、一つのデータベースに以下の4つのテーブルが含まれています。
- スタッフテーブル
- 部署テーブル
- 会社テーブル
- 役職テーブル
そのうち、「部署テーブル」と「役職テーブル」に関しては、テーブルの構造を表現しています。
テーブルがExcelの表のようなものだとお分かりいただけると思います。
データベースって、どんなサイトで使われているの?
データベースが使われているサイト
データベースが使われているサイトは、たくさんあります。
身近なところだと、例えばTwitterやFacebookのようなSNS、商品を登録して表示する通販サイト、コンテンツが大量にある大型サイト、CMS(Contents Management System)であるWordPressなどもそうです。
閲覧者は、Webサイトを見るときにブラウザを使いますが、Webサイトがブラウザで表示されるまでには、目に見えないところでいろいろなプログラムが動いています。
この「目に見えないところ」を一般的に「サーバ」と呼び、閲覧者の目に見える部分(ブラウザなど)を「クライアント」と呼びます。
この関係を図にすると、下図のようになります。
この図からわかるように、サーバにはデータベースサーバだけでなく、アプリケーションサーバやWEBサーバが動作していることがわかります。
サーバとは、「サービスを提供するプログラム」のことですが、これら3つのサーバが連携することでWebサイトを表示させることが可能になっています。
WEBサーバには「Apache(アパッチ)」が、アプリケーションサーバには「PHP(ピーエイチピー)」が、データベースサーバには「MySQL(マイエスキューエル)」というソフトウェアが、サーバとして動作しています。
サーバとして動作するプログラムは他にもいくつかあるのですが、「Apache」「PHP」「MySQL」がそれぞれのサーバプログラムの代表のような立場で使われています。
データベースが使われていないサイト
一方で、データベースを使用しないWebサイトも存在します。
HTMLやCSS、そして画像だけから構成されるWebサイトは、表示されるデータがサーバにアップロードされた状態で決まっており、データベースを必要としません。
このようなWebサイトは、「静的サイト」と呼ばれます。
一方で、ブログやTwitter、Facebookなど、ブラウザから入力されたデータを使いWebサイトで表示されるデータが変化するようなWebサイトは「動的サイト」と呼ばれます。
動的サイトでは、データを管理するためにデータベースが用いられることが一般的です。
データベースのメリット
なぜデータベースが必要なのか
「データならファイルに保存できないの? なんでデータベースを使うの?」
こんな風に疑問を感じるかもしれませんね。
確かに、単純なデータを操作するだけなら、ファイルに記載するので十分です。
ところが、データの量が増えてきたり、データとデータの関係が複雑になってきたりすると、単純なファイルでデータを管理することが困難になります。
そこで、データベースの出番というわけです。
データベースを使わずにファイルでデータを管理する方法として、CSV(Comma-Separated Values:カンマ区切り)でデータを管理する方法があります。
これは、古くから使われている方法ですが、複数のデータをカンマ区切りで繋げただけの形式のファイルです。
先ほどの例で言うと、「部署テーブル.csv」や「役職テーブル.csv」を用意するといった具合です。
テーブル同士に関係性を持たせて、必要なデータを取得する
CSVファイルで管理する方法では、それぞれのCSVファイルの間には何も関連はありません。
しかし、データベースを用いることで、テーブルとテーブルの間に関連(リレーションといいます)を持たせることが可能になります。
データベースを用いる理由は、そこにあります。
ここで別に「部長テーブル」という、部長IDと部長名が設定されたテーブルを用意するとしましょう。
用意した部長テーブルと、もともとあった部署テーブルを結合することで、部署テーブルに記載されている「部長ID」から「部長名」を引っ張ってくることができます。
このように、特定のテーブルと別のテーブルに関連を持たせることで、必要なデータを必要な時に取得できるのが、データベースを採用する大きなメリットです。
他にも、データベースを使う事で以下のようなメリットがあります。
メリット1 データに権限を付与できる
データベースでは、テーブルの追加や削除など様々な操作ができますが、それぞれの操作に対してユーザごとに権限を付与することができます。
メリット2 同時にアクセスしても大丈夫
データベースには、複数のユーザがアクセスしてもデータが壊れないような仕組みが設けられています。これを排他制御と呼び、データベースを用いるメリットの一つとなっています。
メリット3 保存するデータの種類を指定できる
データベースで管理する、テーブルに格納するデータの種類(型)を指定できます。
例えば、「金額」なら「数字」だけ保存させるとか、日時なら「日付」だけ格納できるといった具合です。指定できる型は様々であり、これによりプログラムで処理するデータの整合性を維持できます。
このようなメリットがあるため、特に大量のデータを取り扱う大規模なWebサイトでは、データベースが使われています。
WordPressとデータベース
WordPressのデータベースの構造がどのようになっているのか、簡単に紹介します。
これは、データベース管理ソフト「phpMyAdmin」を使ってWordPressのデータベースのテーブル一覧を表示させたものです。
「wp_commentmeta」から「wp_users」まで、全部で12個のテーブルで構成されていることがわかります。これは、WordPressを動作させるために必要最低限なテーブル構成です。
プラグインなどを導入することで、テーブル数が増えることもあります。
12個あるテーブルのうちの一つ「wp_options」を見てみましょう。
「wp_options」テーブルでは、WordPressのサイトの「URL」や「サイト名」などのWordPressサイトの主要なデータが保存されています。
WordPressでWebサイトを構築するときには、WordPressが用意している各種のPHPの関数を使ってデータベース上のデータを取得します。
例えば、WordPressサイトの「サイト名」を取得するためにはPHPでこのようなコードを書きます。
【PHP】
<?php bloginfo('name'); ?>
WordPressでこのようなコードを書くと、「wp_options」テーブルの「blogname」に保存されているデータを取得して表示します。
このように、WordPressではPHPというプログラミング言語を使って、データベースに格納されているデータにアクセスできるようになっています。
そして、例えば「 <?php bloginfo('name'); ?> 」を表示している箇所は、データベースを更新すればその更新は全てに反映されます。
静的サイトでは、基本的には一つずつ手動で更新をしていくしかありません。
こうした「一括更新作業」も、データベースを利用したサイトならではの利点です。
まとめ
- データベースは、Excelの表のようにデータを管理している。
- データベースを使う事で、ファイルよりも便利にデータを操作できる。
- TwitterやFacebookそしてWordPressにも、データベースは使われている。