2009-09-04 5 views
1

私はここにワードプレスのような「ユーザーの役割」を持つように私のPHPネットワークのコードを変更していますが、これまで私の計画であるmysqlデータベースに10個のオプションを格納する最良の方法は何ですか?

0 = registred以外のメールは、ユーザー
1 =登録さを検証し、
2 =モデレータ
3電子メールを検証-9 =何もまだありません
10 = admin

私のPHPコードでは、このような配列を使用して、役割番号の設定を行います。

$user_role['10'] 

私は、ユーザーが私のmysqlのDBに持つ値の格納を考えていた、これは列挙型として、10個の異なる役割のオプションを格納するための最良の方法であるか、またはより良い方法やより高速な方法はありますでしょうか?私はenumが時には最速ではないことを読む。

enum('0','1','2','3','4','5','6','7','8','9','10') 

答えて

1

INTまたはTINYINTは、ユーザーレベル(役割)を格納するのに十分です。また、数値を10倍することも考えられますので、今後はさらにレベルを追加する余地があります。

+0

私はこれに同意します。あなたが望むのは、ユーザ権限を示すための単一の数字だけであれば、整数列を使用するだけです。 ENUMを使用する場合、新しいレベルを追加できる唯一の方法は、データベーススキーマを変更することです。また、ENUMはmysql特有で非標準的なものであり、一般的にベンダー固有の機能が必要な場合を除いて、避けてください。 – longneck

0

権限/ユーザーレベルにビットマスクを使用します。

exampleを参照してください。

+0

その回答を少しずつ拡大してもいいですか? – ZombieSheep

+0

はやや複雑に見えますが、これはもっと速いと思いますか?また、私はそれを使用しない場合、私はMySQLの列挙型を使用しないでしょうか? – JasonDavis

+0

@jasondavisいいえあなたはdb内のアクセス権の小数表現を保存するだけで、私の答えでは変更されたリンクを読んで、それは本当にうまく説明します –

関連する問題