リスを倒す 『初めてのPHP,MySQL,JavaScript&CSS』

『初めてのPHP,MySQL,JavaScript&CSS』勉強奮闘記

11-4. PHPとMYSQLで作る会員管理システム④テーブルの設計

さーやるぞーーとにかくやる。
今日は確認した会員システムの機能を実現するために必要なデータを検討して、データを正規化してテーブル定義を行います。(でた、、、正規化、、、)

1-1. 機能に必要なデータ


複雑なシステムの場合は、ER図とよばれる図を使って概念設計から始めるそうです。ただ、今回は単純なものなので、簡単に必要なデータを検討して直接SQLとして記述します。

以下の機能を実現するには何が必要なのかを考えてみます。
f:id:taro-blog2323:20161018205959p:plain

ログイン用のユーザーネームやパスワードを格納する場所が必要だし、
本人確認を行う仮登録テーブルもいるし、、、こんなもんかなと思ったら、まだあった・・・
住所に使う都道府県を別テーブルにして、県名idを他のテーブルに格納することでユーザー情報を識別できます。

◎作成するテーブル

会員情報テーブル 名前、ユーザーネームやパスワードなど会員情報を格納
仮登録テーブル 会員情報テーブルに確認済みフラッグを追加したもの
県名テーブル 都道府県を格納


1-2. リレーショナルデータベース


おさらいですが、MySQLは複数のテーブルをリレーションと呼ばれる関係で相互に連結してデータを操作することができます。
手キーとよばれる番号を別のテーブルのレコードに持たせることでこのつながりを実現します。
こうすることで、同じデータは1つのテーブルにだけ格納すればよく、記憶容量の無駄を省くことができます。
新たな機能を追加するために会員のデータを追加したいときも新規テーブルに会員番号を追加するだけで相互に連結できます。
f:id:taro-blog2323:20161018212717p:plain


1-3. 会員情報テーブルの作成


会員登録には、会員情報テーブル(member)を使用します。主キーはユーザーIDです。

一部エラーでぐじゃってますが、そのまんまのっけちゃう。
f:id:taro-blog2323:20161018214640p:plain

それぞれデータ形式で保存します。データ中の暗号みたいなもの($2$10)はpassという文字列をcrypt関数で暗号化したものです。

1-4. 県名テーブルの作成


県名テーブルはidと県名だけのテーブルで、idを主キーとして定義します。
テーブルに47の県名を登録しておき、会員情報テーブルのカラム[ken」にこのidを登録します。
f:id:taro-blog2323:20161018222413p:plain

1-5. 仮登録テーブルの作成


新規登録するにはまず仮登録テーブルにデータを保存しておきます。
仮登録テーブルのテーブル定義は会員情報テーブルにlink_pass(リンク用パスワード)とreg_date(登録日時:DATETIME型)を追加したものになります。
f:id:taro-blog2323:20161018223220p:plain

きょうはいじょーーーー