注文のテーブルがあり、ユーザーに注文の一意のコードを提供したいのですが、作成された注文の数を教えたくないため、増分 ID 整数の主キーを非表示にします。
コードが一意であることを確認する簡単な方法の 1 つは、主キーを使用してコードを特定することです。
では、整数を使いやすい、たとえば 8 つの英数字コードに変換して、すべてのコードが一意になるようにするにはどうすればよいでしょうか?
注文のテーブルがあり、ユーザーに注文の一意のコードを提供したいのですが、作成された注文の数を教えたくないため、増分 ID 整数の主キーを非表示にします。
コードが一意であることを確認する簡単な方法の 1 つは、主キーを使用してコードを特定することです。
では、整数を使いやすい、たとえば 8 つの英数字コードに変換して、すべてのコードが一意になるようにするにはどうすればよいでしょうか?
これにはMD5を使用します。MD5 は、顧客の注文を表す整数の小さなサブセットに対して十分な「一意性」を提供します。
例については、この回答を参照してください。入力パラメーターを string から int に調整する必要があります (またはToString
、番号を呼び出してコードをそのまま使用するだけです)。
作成される注文の総数がプール内の識別子の総数に近づかないと仮定すると、合理的に効果的な手法は、単純にランダムな識別子を生成し、それが既に使用されているかどうかを確認することです。以前に使用されていない識別子が見つかるまで、新しい識別子を生成し続けます。