Mojoliciousスタートアップ - Perl新規Web開発

仮登録ユーザーテーブルの作成

仮登録ユーザーテーブルを作成しましょう。会員登録フォームの作成が終わったら、次は、データベースに仮登録用のユーザーテーブルを作成します。

仮登録ユーザーテーブルとは

仮登録ユーザーテーブルとは、ユーザー認証が済んでいないユーザーを、登録しておくために使用するテーブルのことです。次のフィールドが必要です。

テーブル名は「user_tmp_regist」にしました。

フィールドテーブルのフィールド名制約
行IDid32bit整数プライマリーキー、自動インクリメント
ユーザーIDcode文字列非ヌル、ユニーク
ハッシュ化されたパスワードpassword_crypted文字列非ヌル
メールアドレスmail文字列非ヌル
トークンtoken文字列非ヌル、ユニーク
トークン有効期限token_expiration64bit整数非ヌル

氏名、住所、電話番号、希望条件など、会員登録フォームに、他の入力項目がある場合などは、そのフィールドも必要になります。

mysqlで仮登録ユーザーテーブルを作成

mysqlで仮登録ユーザーテーブルを作成してみましょう。

create table user_tmp_regist (
  id int primary key auto_increment,
  code varchar(150) not null default '',
  password_crypted varchar(150) not null default '',
  mail varchar(150) not null default '',
  token varchar(150) not null default '',
  token_expiration bigint not null default 0,
  unique(code),
  unique(mail),
  unique(token)
) ENGINE=InnoDB CHARSET=utf8mb4;

utf8mb4がサポートされていない場合は、utf8に書き換えてください。データべースエンジンは、トランザクションをサポートするために、すべてInnoDBにします。

フィールドの解説

フィールドの解説です。

行ID

Mojoliciousスタートアップでは、行を一意に識別できるIDのことを行IDという名前で呼びます。必ずすべてのテーブルに、自動的に値がインクリメントされる、行IDを持たせます。外部キー参照は、すべて行IDを使って行います。

この制約のために、primary keyとauto_incrementを設定します。プライマリーキー制約は、フィールドに一意性と非ヌルを保証する、テーブルに一つだけ設定できる特別な制約です。

型は32bit整数型のintです。

ユーザーIDのためのフィールドではないことに注意してください。

ユーザーID

ユーザーIDは「kimoto」や「tanaka」のような、ユーザーを一意に識別するIDです。codeというフィールド名です。

ユーザーIDは、一意である必要があるので、unique制約を設定します。

型は文字列型のvarchar型です。指定した文字数以内の文字を保存できます。varchar(150)のように、最大150文字を保存できるように設定しています。

255文字まで増やしても、保存領域は増えませんが、utf8mb4の場合に、191文字を超えるとインデックスが正しく動かないMySQLのバージョンがあるために、覚えやすい150字に設定しています。

非ヌル制約は、NULL値をできる限り避けるようにしておくために、できる限りすべてのフィールドに設定するようにしています。

ハッシュ化されたパスワード

ハッシュ化されたパスワードは、ハッシュ化されたパスワードを保存するフィールドです。ハッシュ化されたパスワードについては、仮登録の処理を説明する場所で詳しく解説します。

メールアドレス

ユーザーのメールアドレスです。メールアドレスは、一意である必要があるので、unique制約を設定します。

トークン

メールを送信してユーザー認証を行うために発行されるユニークなトークンです。「356a192b7913b04c54574d18c28d46e6395428ab」のような、ランダムな値です。トークンは、一意である必要があるので、unique制約を設定します。

トークン有効期限

トークンの有効期限です。この有効期限がきれると、トークンは無効になり、ユーザー認証ができなくなります。

型は、時刻情報を十分長く先まで保持できるように、64bit整数型のbigintにしています。