これは、私が構築している Web サイトに関連する設計上の質問です。
名前、パスワード、最後のIP、生年月日、アバターへのリンク、場所などを保存する「プレーヤー」テーブルがあります。
プレイヤーがログインすると、入力したユーザー名でデータベースが検索され、パスワードもチェックアウトされます (もちろん、パスワードはハッシュされます)。次に、ログイン状態を維持するための Cookie が与えられます。
ユーザーが新しいページにアクセスするたびに、Cookie の情報を使用してデータベースで正しいプレーヤーが検索されます。現在の IP がログインに使用した最後の IP (おそらく 10 秒前) と一致する場合、ページはその名前などと共に出力されます。
これが私の質問です: Player テーブルの主キーをプレーヤーの名前 (一意であることがわかっているテキスト フィールド) にする必要がありますか、それとも任意の自動インクリメント インデックスを作成する必要がありますか?
これは、Cookie に保存される情報 (int またはユーザー名をテキストで保存するかどうか) にも影響することに注意してください。同様に、Cookie に int やユーザー名だけが含まれないように、その値に対して何らかのハッシュ処理を行いたいと考えています (セキュリティを少し強化するためだけです)。
では、効率とデザインの両方の観点から、どちらがより良い選択でしょうか?
編集データベースに VARCHAR を使用することも問題なく、おそらくより高速になると思います。 EDIT2この主キーは、他のテーブルからも参照されます。