- ベストアンサー
IDの払い出し(文字列)
WEB APでデータベースを勉強中のものです. ユーザを管理するID番号をデータベースの連番IDではなく,文字列のIDにしたいのですが,どうすればいいでしょうか.PHP等で作成する方法でもいいです. 文字列IDにすると特定されにくいかなって思っています. 例えば A100001 C100002 です.
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
OrangeCup150さんが想定されている意図であるなら・・・ 1.PHPにてランダムの半角英数文字列(固定桁長)を生成する(8桁とか) 2.SELECTして1の値と既存との重複チェック 3.重複があれば1と2を繰り返し。なければそれでOK。 serial型などは今どきなら自動でINDEXもつくので、ユーザーID的なものとは別にあってもいいと思いますよ。プライマリキーになるので、他のテーブルとの結合もしやすいし。 ユーザーの情報をいじくったりする時には、そのserial型の値を使って操作してやったほうが速度も出やすいですから。
その他の回答 (1)
- OrangeCup150
- ベストアンサー率62% (109/174)
つまり、 普通に、ユーザ登録時に、ユーザに希望IDを入力させるようにすればいいと思いますが・・・。それができないため、システム側でIDを発行するようにしたいわけですよね(たぶん)。 しかし、単純に連番IDを使用すると、ユーザIDの存在の有無が判別されやすいから、良くないよなーとか思ったわけですよね(たぶん)。 連番IDにアルファベット2,3文字(いわゆるチェックコードみたいな)を加えれば、まあ、十分マシになるかとか思ったわけですよね(たぶん)。 ユーザID(番号部)は、周回するシーケンスで採番し、ユーザID(アルファベット部)は、パスワード作成の要領で作成する。(ユーザ登録時に重複チェックを行ない重複していたら、ユーザID(アルファベット部)を再作成する。) たぶん、アルファベット2~4ケタ、番号、3~6ケタ程度にすればいいぐあいになると思います。 こういう方法でどうでしょうか?
お礼
意図を汲み取っていただきありがとうございます. なるほど,そういう方法でつくるんですね. 勉強になります.