ニンニク大好きニンニクマンこと野地である。休日前に食べるラーメンには入れちゃうよね。ア○パンマン出演決定。今回はバックエンド&データベースを全く扱ったことが無い読者向けにphpMyAdminを用いてデータベース設計を行うための連載第一回をお贈りしたいと思う。Rails等のフレームワークでもSQLをあまり意識せずにテーブルを作成できるようになってきたということで、SQLをゴリゴリ操作してデータベース設計をする機会は少なくなってきている。C言語を勉強することでコンピュータの低レイヤーで起こっていることを理解できるようになる、というような話と同じように、テーブル設計という隠ぺいされた低レイヤーの工程を学ぶことでより深くデータベースのことが理解できるハズだ。今回の連載第一回目ではサーバー&データベース環境の用意をした後、MySQLのデータ型やインデックス、論理削除などの概念の説明をした上で一つのテーブルを作成する部分までを紹介したいと思う。連載を通してPHPやRuby等の言語は一切弄らないので、サーバーサイドアレルギーの人も是非体験してみて欲しい。MAMP環境によるサーバーの用意データベースの準備データベースの作成画面INT型とAI(オートインクリメント)、PrimaryキーVARCHAR型と文字列の扱いBOOLEAN型、論理削除と物理削除、複合インデックスまとめ今回のゴールこの連載では例としてユーザー登録ができて、登録されたユーザーはメモを登録できるようなサービスのテーブル設計を行う。第一回目となる今回の記事ではXAMPP(またはMAMP)環境のインストールとphpMyAdminによるテーブル作成の手順を説明を経て、テーブルを一つ作成するところまでを行う。ブラウザ上からSQLを操作することでPHPやRuby等のコードを書かずにMySQLを体験できるようになっているので、バックエンドなんぞ1mmも分からない、なんて人も安心して読み進めて欲しい。MAMP環境によるサーバーの用意まずはなんにせよサーバー環境が必要である。新たに登録するのも良いが、手軽に自分だけがアクセスできる開発環境を手に入れたいならXAMPPをインストールするといいだろう。僕のWindowsでは動きませんでした......インストールは公式サイトをブラウザから開き、対応するOSのモノをダウンロードしよう。後はダウンロードしたファイルを開けば勝手にインストールが始まる。途中何かの選択が要求される場合は全てデフォルトで構わない。最新版のXAMPPではデータベースが「MySQL」ではなく「MariaDB」が採用されているが、今回説明する範囲では特に違いを気にせずMySQLとして使えるハズだ。インストールが済んだらXAMPPを起動しよう。Panel」というアプリケーションが開くハズなので、それを起動すると各Serviceの起動画面となる。phpMyAdminにアクセスするためにはApacheとMySQLの起動が必要なので、両者の横にある「Start」ボタンを押して起動させる。起動に成功したら「Module」の名前が緑色になるので、今度はブラウザを開き、アドレスバーに「http://localhost/phpmyadmin/」と入力すればphpMyAdminを開ける。Macの場合はアプリケーションからXAMPP.appを開けばコントロールパネルが開けるが、Winodwsと違いVM上で起動するためやや操作方法が異なる。「General」タブで「Start」をクリックし、「Service」タブで「Apache」と「MySQL」をStartさせよう。このまま「General」タブに表示されているIPアドレスでphpMyAdminにアクセスできそうな予感がするが、実はセキュリティの問題でこのままではブラウザカラアクセスすることができない。SSH)」をEnable状態にしてからブラウザのアドレスバーに「http://localhost:8080/phpmyadmin/」と入力しよう。Mac環境ではXAMPPではなくMAMPを使用するのもオススメだ。こちらはVM上でサーバーを起動させずに済むので、いくらか手順が簡略化される。PROではないので注意)からインストーラーをダウンロードし、インストーラーの指示に従ってMAMPをインストールしよう。途中で出てくる選択肢は全てデフォルトでOKだ。インストールが終わったらアプリケーションの中にあるMAMP→MAMP.appを起動し、開いた画面の一番左にある起動アイコンをクリックすると勝手にブラウザが立ち上がる。開いたページの上部メニューにある「TOOLS」にマウスオーバーすると「PHPMYADMIN」という項目が出てくるのでそれをクリックするとphpMyAdminが開かれるだろう。データベースの準備どんなデータベース構造を持つべきかはそれこそ作成するモノによるのだが、データベースを使用するアプリケーションに最低限共通するのは必ず専用のテーブルを持ち、それにアクセスできるMySQLのアカウントが存在することだ。Language)を発行し、データベース&テーブル&それにアクセスできるアカウントをMySQLに作成していく必要があるのだが、いきなりSQL直打ちは難易度が高いのでこの連載では編集画面でテーブル作成を行う。account」が表示されるので、そこからユーザーを作成しよう。account」に存在する「同名のデータベースを作成してすべての特権を与える。」にチェックを入れて、一番下にある「実行」をクリックするとデータベースとそれにアクセスできるユーザーが一気に作成される。今回は「test_user_memo」という名前のデータベース&アカウントでデータベースを作成しておこう。データベースの作成画面サイドメニューに作成したユーザー名と同名のデータベースが作成されているハズなので、それをクリックして表示される「構造」画面の下部に表示されている「テーブルを作成」にて任意のテーブルを作成しよう。カラム数というのはそのテーブルに存在するカラムの数なのだが、最近のphpMyAdminはカラムの編集画面であっても後からカラムを追加できるので適当な数を入力しておけば良いだろう。この記事では「カラム」という言い方で統一するが、開発者によっては「カラム」のことを「フィールド」と呼んだりもする。視覚的には列である対して、行にあたる1データのことを「レコード」と呼ぶので覚えておこう。今回のゴールでも書いたが、この記事では例としてユーザー登録ができて、登録されたユーザーはメモを登録できるようなサービスのテーブル設計を行う。ユーザーは管理者が用意したカテゴリーをメモに適用することができるとしよう。様々な設計が考えられるが、今回の例で必要なテーブルはおそらく以下の4つだ。ユーザー情報を保存する「user」メモ情報を保存する「memo」カテゴリー情報を保存する「category」メモ情報とカテゴリー情報の関連を保存する「memo_category_relation」まずこの連載第一回目はuserテーブルを作成してみよう。テーブル名にuser、カラム数を5として「実行」を押すと、カラム情報入力欄が5行分表示された編集画面が現れる。1行につき様々な入力欄が表示されるが、操作するのは「名前」「データ型」「長さ/値」「デフォルト値」「NULL」「インデックス」「AI」「コメント」の8つだ。SQL文中でカラムを指定するための名前。カラムがどのようにデータを持つかの決める規格を決める。数値型にすると数値しか入らず、日付型にすると日時情報しか入らない等の制約を予め設定しておくことでMySQLの動作がスムーズになる。データ型に何が指定されているかによって意味が変わるが、数値型なら桁数で文字列型なら文字数。それ以外は空欄でOKな場合がほとんど。データを追加する際にカラムの指定がなかった時に何が挿入されるかの指定。カラムにNULLが入るのを許容するかどうかの設定。データ型に関係なくこれがtrueだとNULLという状態が許可される。雑に言えば、設定しておくと追加・更新・削除が遅くなるが取得が早くなる設定。Primary、もしくはUniqueがテーブルに最低一つは必要。データを追加する際に勝手に連番を挿入する設定。前述のインデックスに「primary」設定をした上使用されることが多い。場合によっては論理名に該当する。処理的には意味を持たない。これら8つの項目を以下の5カラムに対して設定していく。一意性を保つための数値。1から連番を振っていく。