11-4. PHPとMYSQLで作る会員管理システム④テーブルの設計
さーやるぞーーとにかくやる。
今日は確認した会員システムの機能を実現するために必要なデータを検討して、データを正規化してテーブル定義を行います。(でた、、、正規化、、、)
1-1. 機能に必要なデータ
複雑なシステムの場合は、ER図とよばれる図を使って概念設計から始めるそうです。ただ、今回は単純なものなので、簡単に必要なデータを検討して直接SQLとして記述します。
以下の機能を実現するには何が必要なのかを考えてみます。
ログイン用のユーザーネームやパスワードを格納する場所が必要だし、
本人確認を行う仮登録テーブルもいるし、、、こんなもんかなと思ったら、まだあった・・・
住所に使う都道府県を別テーブルにして、県名idを他のテーブルに格納することでユーザー情報を識別できます。
◎作成するテーブル
会員情報テーブル | 名前、ユーザーネームやパスワードなど会員情報を格納 |
仮登録テーブル | 会員情報テーブルに確認済みフラッグを追加したもの |
県名テーブル | 都道府県を格納 |
1-2. リレーショナルデータベース
おさらいですが、MySQLは複数のテーブルをリレーションと呼ばれる関係で相互に連結してデータを操作することができます。
手キーとよばれる番号を別のテーブルのレコードに持たせることでこのつながりを実現します。
こうすることで、同じデータは1つのテーブルにだけ格納すればよく、記憶容量の無駄を省くことができます。
新たな機能を追加するために会員のデータを追加したいときも新規テーブルに会員番号を追加するだけで相互に連結できます。
1-3. 会員情報テーブルの作成
会員登録には、会員情報テーブル(member)を使用します。主キーはユーザーIDです。
一部エラーでぐじゃってますが、そのまんまのっけちゃう。
それぞれデータ形式で保存します。データ中の暗号みたいなもの($2$10)はpassという文字列をcrypt関数で暗号化したものです。
1-4. 県名テーブルの作成
県名テーブルはidと県名だけのテーブルで、idを主キーとして定義します。
テーブルに47の県名を登録しておき、会員情報テーブルのカラム[ken」にこのidを登録します。
1-5. 仮登録テーブルの作成
新規登録するにはまず仮登録テーブルにデータを保存しておきます。
仮登録テーブルのテーブル定義は会員情報テーブルにlink_pass(リンク用パスワード)とreg_date(登録日時:DATETIME型)を追加したものになります。
きょうはいじょーーーー