• ベストアンサー

IDの払い出し(文字列)

WEB APでデータベースを勉強中のものです. ユーザを管理するID番号をデータベースの連番IDではなく,文字列のIDにしたいのですが,どうすればいいでしょうか.PHP等で作成する方法でもいいです. 文字列IDにすると特定されにくいかなって思っています. 例えば A100001 C100002 です.

質問者が選んだベストアンサー

  • ベストアンサー
  • 1minn
  • ベストアンサー率57% (52/90)
回答No.2

OrangeCup150さんが想定されている意図であるなら・・・ 1.PHPにてランダムの半角英数文字列(固定桁長)を生成する(8桁とか) 2.SELECTして1の値と既存との重複チェック 3.重複があれば1と2を繰り返し。なければそれでOK。 serial型などは今どきなら自動でINDEXもつくので、ユーザーID的なものとは別にあってもいいと思いますよ。プライマリキーになるので、他のテーブルとの結合もしやすいし。 ユーザーの情報をいじくったりする時には、そのserial型の値を使って操作してやったほうが速度も出やすいですから。

その他の回答 (1)

回答No.1

つまり、 普通に、ユーザ登録時に、ユーザに希望IDを入力させるようにすればいいと思いますが・・・。それができないため、システム側でIDを発行するようにしたいわけですよね(たぶん)。 しかし、単純に連番IDを使用すると、ユーザIDの存在の有無が判別されやすいから、良くないよなーとか思ったわけですよね(たぶん)。 連番IDにアルファベット2,3文字(いわゆるチェックコードみたいな)を加えれば、まあ、十分マシになるかとか思ったわけですよね(たぶん)。 ユーザID(番号部)は、周回するシーケンスで採番し、ユーザID(アルファベット部)は、パスワード作成の要領で作成する。(ユーザ登録時に重複チェックを行ない重複していたら、ユーザID(アルファベット部)を再作成する。) たぶん、アルファベット2~4ケタ、番号、3~6ケタ程度にすればいいぐあいになると思います。 こういう方法でどうでしょうか?

kawaK1986
質問者

お礼

意図を汲み取っていただきありがとうございます. なるほど,そういう方法でつくるんですね. 勉強になります.

関連するQ&A