フルスタックエンジニアのノウハウ
2020.01.14    2022.06.12

データベースの基礎知識【実例を交えて説明】

この記事の動画版はこちら(画像クリックでYoutubeに飛びます)

チャンネル登録お願いします!


皆さんは「データベース」という言葉を聞いたことがありますか?


このブログでも度々出てきている言葉ですが、プログラミングデータベース切っても切れない関係にあります。


今回は「データベースとは何か?」について、実例を交えながらわかりやすくご説明します。



データベースとは


 データベースとは、データを「永続的に保存しておく場所



なぜデータベースが必要なのか?


Webサービスでは、ユーザー情報を登録したり、ブログ記事を投稿したり、商品を注文した履歴を残したりといったように、さまざまな情報を保存(記録)しておく必要があります。


しかし、プログラムだけでは情報をずっと覚えておくことが出来ません。


データベースは、こういった情報を「永続的に保存しておくため」に使います。


Amazonに掲載されている商品も、Twitterに投稿されたツイートも、このブログ記事も、全てデータベースの中に保存されています。(全てが1つの同じデータベースに保存されている訳ではなく、それぞれのサービスごとにデータベースを持っています)


ほぼ全てのWebサービスで、データベースを使っていると言っても過言ではありません。



データベースはどこにある?


データベースは、物理的には「サーバー」と呼ばれるコンピューターの中にあります。


サーバーの中に、データベース管理システム(DBMS)と呼ばれるソフトをインストールして、それを常に稼働させておくことで、データベースが使えるようになります。


データベース管理システム(DBMS)には、以下のようなさまざまな製品があります。


MySQL(無料)
MariaDB(無料)
PostgreSQL(無料)
Oracle(有料)
SQL Server(有料)


※料金体系は、使用形態によって変わる場合があります。




通常、レンタルサーバーを借りると、上記のうちどれかのDBMSが最初からインストールされ、すぐに使えるようになっています。



データベースの構造を知る


データベース管理システム(DBMS)の中には、複数の「データベース」を作ることが出来ます。


通常は、サービスごとに1つのデータベースを作ります。



例えば、ネットショップを作る場合を考えてみましょう。


①まず、サービス用の「データベース」を1つ作ります。



②次に、データベースの中に複数の「テーブル」を作っていきます。サービスの中で扱うデータは種類ごとにテーブルに保存します。



③さらに、テーブルの中には複数の「カラム」を作ることが出来ます。カラムには、そのデータ持つ様々な属性値を保存します。




 このように、データベースの中身は「データベーステーブルカラム」といった構造体になっています。



実際のWebサービスでの使用例


実際のWebサービスの画面で、データベースがどのようになっているのか見てみましょう。


例えば、このような「商品一覧」を表示する画面があります。




このWebサービスのデータベース(テーブルの中身)はこのようになっています。


これは、商品を保存しているテーブルの実際の画面です。


テーブルは、このように表形式で管理されており、表の1行1行が「1商品」になっています。



データベース設計とは?


Webサービスを作るときに「どういうテーブルを作って、その中にどんなカラムが必要か」を考えることを「データベース設計」と呼び、これもプログラマーの仕事の1つです。


無駄のあるデータの持ち方になっていると、プログラムからデータを操作する際に非効率になってしまうため、データベースの設計次第でWebサービスの動作速度や、今後の拡張のしやすさなどが変わってくる重要なスキルです。



現場のコツ


設計にはコツがあり、慣れてくるとあまり考えなくてもサクサク出来るようになります。


最後に、僕がいつも行っているデータベース設計の流れを書いておきます。


①Webサービスの画面設計を起こす。

②画面設計を見ながら、このWebサービスに登場するデータを種類ごとに分類(例えばユーザー、商品など)し、それをそのままテーブルとする。

③画面設計の表示/入力項目を見ながら、各データに必要なカラムを決めていく。

④テーブル間のつながりの設計や、正規化を行う。
※正規化とは、複数のテーブルで同じデータを持たないように整理する作業。


この流れで設計すれば、大体外れのないデータベース設計が完成します。


フルスタックエンジニアを目指す上では、データベースのスキルもとても重要となりますので、しっかり理解していきましょう!



なお、PHPからデータベースを操作する手順については、以下の記事で解説しています。

関連記事

PHPからデータベースを操作する手順


おすすめ記事