1-4. データベースとは

Webサイトでは、さまざまなデータを扱います。ユーザ情報はもちろん、ブログサイトではユーザが投稿した記事もそうです。

Webサイトではそれらのデータを、どのように保存や編集、参照しているのでしょうか?

Webサイトにおいて、データの管理はデータベースを使います。本講座の基礎編でとてもよく出てきます。特にPHPの基礎やHTMLを終えたあたりから、データベースを抜きでは進まない!といっても過言ではありません。

まずはここで、データベースとは何かをざっくりと理解しましょう。

データベースとは

改めてデータベースとは何かを解説します。

データベースとは正式にはデータベースマネジメントシステム、または関係データベースといい、データを管理するソフトウェアです。DBMSやRDBなどと省略されることがよくありますが、単にデータベースDB(ディービー)と省略するのが一般的です。

データベースがなかったとすると

もしデータベースがなかった場合は、データをどのように保存しますか?

すぐに思いつくのがデータをメモリに保存する、またはテキストファイルに保存するといった方法です。しかしこれらの方法は、以下のような問題があります。

そこで登場するのがデータベースです。データベースが上記の問題を全て解消してくれます。

データベースに管理されたデータは、コンピュータを再起動しても消えません。またユーザが直接アクセスすることができないため、紛失や持ち出し、改竄(かいざん)といった心配もありません。

データベース内の構成

データといっても、さまざまです。データベース内では各種データをどのように管理をしているのでしょうか?

データベースは複数作ることができます。その中に、さらに複数のテーブルを作ることができます。

図のように、データベースは複数作成することができます。1つのデータベースの中に1つまたは複数のテーブルがあります。

テーブルは、以下のような表形式でデータを管理します。冒頭であげたブログサイトを例にとってみましょう。

データベースの役割

データベースの役割は、以下のとおりです。

・SQL言語によるデータ操作を可能にする
・複数テーブル間の整合性を維持する
・アクセス管理、排他制御
・バックアップとリストア(復元)
・セキュリティを担保する

正直、本講座で必要になるのは最初の2つだけで十分です。3つめ以降は一般に公開するWebサイトを構築する時に必要になる知識です。とても重要な話ですが、本章では解説は割愛します。

SQL言語によるデータ操作

データベースは、アプリケーションや人手によるデータ操作を、SQLという言語で実施できるようになっています。

例えばユーザというテーブルがあって、IDが3番の人のユーザ名を取得する場合、以下のようになります。

ただし実際のWebサイトでは、みなさんがこれから学習するLaravelのようなフレームワークを使って開発することが一般的です。フレームワークはデータへのアクセス手段を提供しており、みなさんが直接SQLを記述するケースは稀です。

しかし、背後でSQLという言語が生成されて、それがデータベースにて処理されているということは必ず知っておかなくてはなりません。知らないと何らかのエラーが発生した時、エラー原因を解析することができません。

複数テーブル間の整合性

いきなり難しい説明が出てきましたが、単純な話なのでご安心ください。

ブログサイトで、データが以下のような状態になってはいけません。

存在しないユーザが書いたブログがある。
ブログがあるのにそれを投稿したユーザが削除できてしまう。

(あとデータの整合性という意味では外れますが、どの投稿からも参照されない画像ファイルというのも存在してはいけませんね。)

データベースでは、上記のような「なってはいけない状態」を防ぐ手段が用意されています。以下の図をご覧ください。

データベースには種類がある

データベースの種類はいろいろあります。開発元のほか有償無償、基本は有償だけどお試し版は無償、さまざまです。以下にざっと書き出してみましょう。カッコ内は開発元です。

・MySQL (Oracle)
・Oracle(Oracle)
・PostgreSQL(PostgreSQL Global Development Group)
・SQLServer(マイクロソフト)
・SQLite(個人)

どのデータベースでも、今まで解説してきた機能は備えています。

そして今回は、みなさんはPHPやLaravelとも相性の良いMySQLを使います。MySQLは無償で使えて大規模システムまで対応できるといった優れたデータベースです。

1-4. データベースとは”へ1件のコメント

  1. ピンバック: SQL1 – aitech-school

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です