PHP WEBアプリケーション作成⓻ データベースについて

データベースはデータを集めて表のように扱います。操作するにはSQLという言語でクエリ(専用の命令文)を書いていきます。ここではこれまで作ってきたBaseballサークルサイトにデータベース(DB)を使った掲示板を作っていきましょう。

データベースとは?

データベースとはその名の通りデータの基地であり、データを一箇所に集めておきます。ある決まった形式で(多くは表形式)でデータを揃えておき、後から探しやすくするのが目的です。

データベースはたくさんの種類がありますが、ここではPHPと相性がいいMariaDBを使います。

MariaDBとは?

MariaDBはリレーショナルデータベース(RDB)という種類のDBで広く使われているオープンソースDBで、高速で動作し、使いやすく、利用料が無料です。

リレーショナルデータベースとは?

リレーショナルデータベースは、いくつかの表からできています。表のことをテーブル、列をカラム、行をレコードといいます。各カラムには型があり、カラムごとにデータの形式を決めていきます。

MariaDBでのデーターの型

MariaDBでのデーターの型は大まかに➀数値型、➁日付・時刻型、➂文字列型の3種類があります。どういったデータを保存するかによって、この3つの中から適切な型を選ぶ必要があります。

➀数値型

INT整数型連番、個数など
DOUBLE浮動小数点数型体重など小数点を含むもの

➁日付・時刻型

DATE日付型日付
DATETIME日付時刻型日付と時刻

➂文字列型

CHAR固定長
文字列型
郵便番号など桁数が決まっているもの
VARCHAR可変長
文字列型
名前、住所など
TEXT文字列型本文などの長い文章

データベース設計

まずはデータベース(DB)名を決めていきます。今回はBaseballサークルサイトでの掲示板を作るので、「baseball」という名にします。

次に、掲示板のデータを保存するテーブルを設計していきます。テーブル名は「bbs」とします。今回、bbsテーブルには➀書き込み番号、➁名前、➂書き込みタイトル、④本文、⑤書き込み日時、以上の内容を書き込んでいきます。というわけで一旦、以下の設計とします。

カラム名型と長さNOT NULL制約説明
idINT書き込みの通し番号。主キー。自動採番
nameVARCHAR(255)書き込んだ人の名前。長さは255文字まで
titleVARCHAR(255)書き込みタイトル。長さは255文字まで。タイトルがない場合は無題と表示
bodyTEXT本文
dateDATETIME書き込み日時
passCHAR削除パスワード。4文字の数値文字列

主キーを決める

idは主キーとなります。主キーとは、そのテーブルの中でレコード(行)を識別する意味的な値のことです。主キーは重複させない性質をもたせることが重要です。例えば、クラス名簿を作ったときはどうでしょうか。同姓同名の人がいるかもしれないので、氏名は主キーに不向きです。しかし、各自に振られた出席番号は、そのクラスの名簿では重複しないので主キーに適しています。

NOT NULL制約

NOT NULL制約とは必須項目のこと、つまり、そのカラムには必ずデータを入れるという約束をします。NOT NULL、つまり空白、ゼロではないということ。

データベースの作成

設計ができたので、それではMariaDBに接続してデータベースを作成してみましょう。

まずはコントロールパネルのShellボタンからコマンドプロンプトを起動します。

次に「mysql -u root -p」と入力。ユーザーの-uのオプションでroot(管理者権限のユーザー)としてログインします。-pのオプションを指定しているので、パスワード入力します。XAMPPをダウンロードしたときに設定したパスワードです。

ログインできたら次のクエリ(データベース用の命令)をしましょう。

「create database ~;」 これはデータベースを作成するための構文です。~にはデータベース名をいれます。コマンドの末尾にはセミコロン(;)をつけ、終わりを明示します。

ファイルを作成したら、次のクエリを出します。「use ~」でファイルを利用する選択をします。するとMariaDBの後ろにファイル選択した「baseball」名が表示されていればOKです。

ちなみに、DROP DATABASE文で作成したデータベースを削除できます。例えば「DROP DATABASE baseball;」です。データベース内に作成されていたテーブルも一緒に削除されます。

テーブルの作成

次にcreate table テーブル名(~ でテーブルを作成していきます。AUTO_INCREMENTは自動採番でレコード(行)が追加されるごとに1,2、3と自動的に番号が割り当てられます。PRIMARY KEYは主キーであることを表します。

ちなみに、DROP TABLE文で作成したテーブルを削除できます。例えば「DROP TABLE bbs;」です。登録されていたレコード(行)は削除されますが、データベース自体は残ります。

ユーザーの作成

データベースを操作できるユーザーを作成し、セキュリティ対策をします。MariaDBをインストールしたばかりの状態では、rootという管理者権限を持つユーザーが作られます。しかし、rootはすべてのデータベースを操作できてしまうためセキュリティ上よくないですね。

そこで使うデータベースだけを操作できるユーザーを作成していきましょう。ユーザーを作成するGRANT構文を使います。

GRANT 権限 ON データベース名. テーブル名 TO 'ユーザー名'@'ホスト名' INDENTIFIED BY 'パスワード';

実際には下記のように入力しました。

GRANT ALL ON baseball.* TO ‘baseballuser’@’localhost’ IDENTIFIED BY’ ‘パスワード’;

上記のクエリ(命令)の内容として、「localhost上のbaseballuserさんに、baseballデータベースのすべてのテーブルの権限ALLを与えます。パスワードは〇〇です」になります。

実際、与えられる権限は多種ありますが、ここではALL(すべての権限)を指定しました。データベース名とテーブルはドット(.)でつなぎ、特定のデータベースの特定テーブルへの権限を与えることができます。

今回はbaseballuserさんがbaseballデータベースのすべてのテーブルを操作できるようにするため、「baseball.*」として*を使っています。この*はワイルドカードといって「すべて」を表す記号になります。

ユーザーを作成したらMariaDB内部の一時データを削除して設定を反映させるため、次のクエリを実行します。するとユーザー情報が反映されます。

FLUSH PRIVILEGES;
作成したユーザーの確認のため、一旦CTRLボタン+CにてMariaDBを終了したのでByeと表示される

作成したユーザーの確認

再度コントロールパネルのShellから起動し、次のように入力して確認していきましょう。

mysql -u baseballuser -p を入力、enter →パスワード入力

ログインできたので作成したユーザーの確認ができました。

そうしましたら次に「use データベース名(baseball);」、その次に「DESC テーブル名(bbs);」と入力してみましょう。

作成したテーブルの構造が表になって表示されます。これでパスワード付のユーザーが作成できました。

PHPについて

この本から引用、参考にして学び、完成させることができました。しかし、ここではプログラミング初心者の私が詳しく解説することは、おこがましく、難しく出来ません(ToT)
その点、この本では丁寧な解説が載っていますので、解説とともにコードを書き、完成させればより深く学ぶことができます(^.^)、実際、初心者の私でもわかりやすかったです。身に付け消えないスキルが3,000円弱ならコスパよく、買っておいてよかったと満足してます。


わからないことはプロフェッショナルから学ぶのが一番

キャリアアップに必要なスキルを取得しよう。

オンラインで受講ができるスクールですので、全国どこからでも。

就職・転職支援