【データベースの勉強】PHPとMySQLで何ができるのか?【実例参考】

data Webエンジニア
Webサービスを作るにはデータベースの知識が必要らしいけど、どうやって勉強したらいいんだろう?そもそも何ができるようになるの?
このような疑問を持つ方向けです。

データベースとは?

そのものずばりデータの集合体のことです。例えば楽天などのショッピングサイトでは商品のデータがデータベースに蓄積されています。

商品ID 商品名 価格
1 ダウンジャケット 14980
2 Tシャツ 2800
3 レザーブーツ 35800

なぜこのようなデータベースを利用するのか?いくつかありますが、動的なWebサイトを作成するためであることが多いです。

動的なWebサイトとは?

反対に静的なWebサイトをスタティックページと呼びますが、これはいつ見ても表示に変わりのない固定されたページのことです。

例えば「会社概要」といったページは会社名・代表者名・住所など特に動的に変わるような内容は無く。スタティックなページになります。

このように動的な変化のないページを作るうえではデータベースは利用する必要がありません。

商品の検索

一方で動的なページというのは商品の検索ができ、検索結果に一致する商品リストが表示されるショッピングサイト等です。

検索する文字列により、該当する商品・リストの表示は常に動的に生成され毎回表示結果は変わります。このようなページを動的なページと言います。

ツイッターなども自分のつぶやきとフォローした人のつぶやきが動的にタイムラインに表示されますが、これももちろんデータベースが利用されています。

データベースの勉強方法は?

これは残念ながら学校のお勉強のように何かを読んだり書いたりしていてもほとんど身になりません。

データベースを理解するには実際にデータベースを使って色々と動かしてみる必要があります。

データベースを利用するということはPHPなどのサーバサイドのプログラミング言語も併用するかと思います。

なのでwindowsであればXAMPP、macであればMAMPなどをインストールして利用すると一通り利用することが可能になります。

XAMPPのインストール

インストールファイルは公式サイトよりダウンロード可能です。

PHPでデータベースを勉強するだけであれば、インストールの際は以下にチェックのみでOKです。
xampp

インストール後、以下のファイルを実行するとコントロールパネルを起動できます。
xampp

この中にApacheとMySQLをstartしておきましょう。

phpMyAdminの利用

XAMPPをインストールするとブラウザ上から簡単にデータベースの作成・管理が可能なphpMyAdminが利用可能になります。

実務のサイトでこれをブラウザから利用可能な状態で公開することはほぼないかと思いますが、ローカルで自分で勉強するにはちょうどいいと思います。

インストール後以下のURLにアクセスすると表示されるはずです。
http://localhost/phpmyadmin/index.php
pma

実際に作成してみる

データベースを作るにはまずデータベース名を決め、その中にテーブルというものを作成します。

先ほどのショッピングサイトの例でいえば

shop(データベース名)
├tbl_user:ユーザーテーブル
├tbl_product:商品テーブル
├tbl_order:注文テーブル
└…

そして各テーブルにカラム(項目)を設定します

tbl_user
├user_id:ユーザーID
├nickname:ニックネーム
├mail:メールアドレス
└…
tbl_product
├product_id:商品ID
├product_name:商品名
├price:価格
└…

といった具合です。

phpMyAdminを使ってデータベースを作る

まずデータベースの登録は「データベース」タブ→データベースを作成するの欄にデータベース名を入力、照合順序は「utf8-general_ci」を選んでおけばOKです。
pma

続いてデータベース内にテーブルを作成していきます。左側のメニューより該当のデータベースを選択し、テーブルを作成よりテーブル名とカラム数を入力します。
pma

すると今度はカラム名などの設定にうつりますので、先ほどの例で行くと以下のような内容で入力します。
pma

ここで「データ型」というものに何を選べばいいかですが、ひとまず以下を抑えておけば大丈夫かと思います。

  • 文字は最大文字数を決めてvar_char型
  • 数字はint型

他にも主キーの設定など色々あり、上記だけではざっくりしすぎてるんですが、ここでつまづいても仕方ないので現段階では勉強を進めることを優先します。

というわけで上画像のように入力・設定して「保存する」を押します。

これでテーブルが作成できました。

つぎにテーブルに実際にデータを入れていきましょう。テーブルを選択し「挿入」タブをクリックするとデータの入力画面になります。適当にデータを入力してみましょう。
pma

このようにデータが登録され、ユーザーが検索した文字列や選択したカテゴリなどに合わせてデータベースからデータを持ってきて表示といった使い方になります。

データベースでどんなことができる?

簡単なデータベースは作って試してみることができました。次はデータベースで何ができるか実例を交えて解説していこうと思います。

ショッピングサイト

これは例に出した通りですね。楽天やAmazonなどは膨大な商品データベースを扱っており、ユーザーはその中から欲しい商品を探すことができます。

自由入力によるテキスト検索、カテゴリ選択による該当カテゴリの商品表示。注文数から人気ランキング上位商品の表示など、データベースを利用すれば様々な見せ方が可能です。

ユーザー登録による個人情報や、購入履歴による決済情報など取り扱い注意なデータを扱うことになる為、データベースに格納する際には暗号化を行うなどセキュリティ的な注意も必要になります。

SNS系

ツイッターやインスタグラムといったWebサービスもデータベースを利用しています。

ユーザーテーブルと投稿テーブルを利用し、どのユーザーの投稿なのかを判定し表示するといった感じですね・

具体的には以下のような形です。

tbl_user
├user_id:ユーザーID
└…
tbl_post
├post_id:投稿ID
├user_id:ユーザーID
├post_detail:投稿内容
└…

投稿テーブルに投稿したユーザーIDのカラムがあることで、ユーザーIDをキーに検索し、そのユーザーの投稿一覧を取得できるという形になります。

データベース設計には絶対の正解があるわけではないので、上記はあくまでも参考程度に。

要はインプットとアウトプットがあるサイト

他にも色々とありますが要はデータベースを利用すればインプットとアウトプットがあるサイトが作れるというわけです。

何かデータを入力し、それを元にユーザーに見せる画面を表示したい。そういったWebサービスを作る際にはデータベースの利用を検討しましょう。

アクセスが増えるとデータベースがメモリを食い尽くしてサーバが落ちてしまうなど、実運用では他にも色々と気にしないといけないことはあります。

しかし勉強の段階ではまずは色々と作ってみて実際に経験を積んでみるということが大事です。

次に学ぶべきはSQL

データベースが何であるか、何ができるかをざっくり学びました。次の段階で学ぶべきことはSQLについてです。

先ほど「ユーザーIDをキーに検索し、そのユーザーの投稿一覧を取得」と書きましたが、これをデータベースで実行するには以下のSQLを実行する必要があります。

※user_idが1のユーザーの投稿を取得する例
select * from tbl_post where user_id = 1;

SQLについては長くなるので、別記事でまとめて紹介させていただく予定です。