会員制のIDの振り方でお尋ねします。利用がネットのみなら、ユーザが決めるIDが最善策と思いますが、半分が非ネット利用で半分ネット利用のため運営者がIDを決める必要があります。他の既会員のIDを推測されにくくする為の策を考えています。①アルファベットではなく7桁ぐらいの番号制にすることをどう思いますか?(もちろん認証にはパスワードもあり)。その場合AUTO_INCREMENTは一発で推測されるので駄目でしょう。

そこで、ID生成の目的で「AUTO_INCREMENT,乱数」×(10の7乗)のレコードを作成し、「ORDER BY 乱数」でソートしたテーブルを作成しておき、会員ID発行の際に一つずつ抜き出そうと思っています。要するに一意な数字をランダムな順番で抽出したいのです。単純に乱数にすると、会員数が多くなったときにIDが重複しないかどうかの処理が効率悪くなってくると思いまして。②もっと便利な方法がありますか?
①と②の両方についてアドバイスいただける方のみお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:paphio No.1

回答回数299ベストアンサー獲得回数0

ポイント50pt

http://www.n-barcode.com/cd/aboutcd.html

チェックデジットについて

URLは参考です。

この方法は、入力ミスをなくすため、数字のコード設定に広く使われて方法です。

有利点は、計算で求められるため全体数が多い場合総当たりしなくても正しいかチェックできる点にあります。

この応用で、チェックデジットを2桁、3桁にする方法も良いと思います。

もうひとつは、下2桁だけ乱数というのは同でしょうか、上5桁は連番で設定することによりユニークになります。

下2桁は単に推測されるのを防ぐためだけに2桁の乱数で設定します。

管理する場合は、上5桁だけを意識して管理すると管理も簡単になると思います。

id:kyoko55

検討してみます。

ありがとうございます。

2004/11/11 13:34:43
id:taxa No.2

回答回数77ベストアンサー獲得回数0

ポイント50pt

1)数字のIDは好きですね。覚えやすいし、携帯会員なども入力しやすいので。

何名くらいの会員数を予定されているのか分かりませんが、10万人くらいの会員の場合は、オートインクリメント5桁+ランダム2桁で可能で、ランダム2桁だけで格段に推測が難しくなります。(100分の1の確率で会員IDを当てて、パスワードまでヒットさせるのはかなり難しいと思います。)

数字7桁というのは人間が簡単に覚えられる桁数なので私は好きです。10万人を超えると上記方法では溢れてしまうため8桁になってしまいますが…。

2)セキュリティをどうしても高くしたい場合は完全ランダムアルファベットだと思いますが、覚えられないのでイヤです。

ネット利用者は好きなIDで、非ネット利用者は「日付(秒数まで)+ランダムアルファベット3桁くらい」にすれば、非ネット利用者の登録作業を数人で行う程度であれば、まずかぶる事はありません。(同じ時間(秒数まで同じ)でランダムアルファベット3文字がかぶる事は考えられないです。心配ならアルファベットをもっと増やせば良いかも)

ちなみに非ネット会員がネット会員になった場合にIDを取り直してもらえば済む問題だと思いますし、その時1度だけならどんな長い難しいIDでも入力してくれると思います。

ちなみに、IDの重複チェックですが、MySQLでも10万人程度なら一瞬ですよ。

id:kyoko55

> 携帯会員なども入力しやすいので。

それは気づきませんでした。やはり全て数字にしようと思います。

参考になりましたので、ありがとうございました。

2004/11/16 12:10:44

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません