0

これは、私が構築している Web サイトに関連する設計上の質問です。

名前、パスワード、最後のIP、生年月日、アバターへのリンク、場所などを保存する「プレーヤー」テーブルがあります。

プレイヤーがログインすると、入力したユーザー名でデータベースが検索され、パスワードもチェックアウトされます (もちろん、パスワードはハッシュされます)。次に、ログイン状態を維持するための Cookie が与えられます。

ユーザーが新しいページにアクセスするたびに、Cookie の情報を使用してデータベースで正しいプレーヤーが検索されます。現在の IP がログインに使用した最後の IP (おそらく 10 秒前) と一致する場合、ページはその名前などと共に出力されます。

これが私の質問です: Player テーブルの主キーをプレーヤーの名前 (一意であることがわかっているテキスト フィールド) にする必要がありますか、それとも任意の自動インクリメント インデックスを作成する必要がありますか?

これは、Cookie に保存される情報 (int またはユーザー名をテキストで保存するかどうか) にも影響することに注意してください。同様に、Cookie に int やユーザー名だけが含まれないように、その値に対して何らかのハッシュ処理を行いたいと考えています (セキュリティを少し強化するためだけです)。

では、効率とデザインの両方の観点から、どちらがより良い選択でしょうか?

編集データベースに VARCHAR を使用することも問題なく、おそらくより高速になると思います。 EDIT2この主キーは、他のテーブルからも参照されます。

4

2 に答える 2

1

Marc のコメントが示すように、 int はメモリとパフォーマンスの両方でより効率的です。ログインをIPアドレスに結び付けないことをお勧めします.一部のユーザーは、サーバーへの各リクエストが異なるIPアドレス(オニオンルーター、AOL、他の種類の奇妙な企業NATを知っている)から来て、常にログアウトされます.超迷惑になります。誰としてログインしているかを示す Cookie を設定する代わりに、セッションの使用を検討することもできます。sig があると少し安全になりますが、セッションを使用するとさらに安全になります。また、ユーザーがログインする前にユーザーに関する情報を柔軟に追跡できます (たとえば、ログインに成功した後にユーザーをリダイレクトするページなど)。 )。

于 2012-04-26T03:59:28.063 に答える
0

これが私の質問です: Player テーブルの主キーをプレーヤーの名前 (一意であることがわかっているテキスト フィールド) にする必要がありますか、それとも任意の自動インクリメント インデックスを作成する必要がありますか?

後者。
名前は変わる傾向にあります。

  1. int またはユーザー名をテキストで保存するかどうか。
  2. 同様に、その値に対してある種のハッシュを行いたい

最初に決心
してから、最終的にハッシュになるかプレーンな値になるかを尋ねてください。後者の場合 - 違いは何ですか?

では、効率とデザインの両方の観点から、どちらがより良い選択でしょうか?

おー。これは絶対に関係ありません。

于 2012-04-26T04:04:56.737 に答える