-2

ASP.NET で設計した Web サイトを立ち上げる準備をしています。

問題は、顧客に非常に低い注文 ID (例: #00000001) を持たせたくないということです。

顧客が K20434034 のような注文番号を取得できるように、一意の (かつランダムな) 注文 ID を生成するにはどうすればよいですか?

4

4 に答える 4

1

ビジネス層とデータベースの両方から複数のオプションがあります。

検討

  • 乱数は衝突する可能性があります
  • 内部ID、特にシーケンシャルIDを公開しないのがおそらく最善です。
  • 長い値を入力したり話したりする必要がある場合、ユーザーは長い値を使用すると煩わしくなります。

オプション

  • 暗号論的乱数を生成します(でInt64生成されたものRNGCryptoServiceProviderは、衝突または予測可能性の可能性が非常に低いです)
  • ゼロ以外の任意の数で始まる自動インクリメント列を開始します
  • 使用UNIQUEIDENTIFIER(またはSystem.Guid)およびベース62はバイトをエンコードします
于 2012-05-22T23:52:59.990 に答える
1

OrderIdのIDシードを多数に設定します。次に、注文番号をユーザーに提示するときに、注文IDの前に定数を追加するか(すべての注文がKで始まるように)、ランダムな文字列を生成して注文レコードに保存することもできます。

于 2012-05-22T23:56:01.563 に答える
0

数が少ないと思わない場合は、IDシードをより高い数から開始することをお勧めします。ランダムの問題は、衝突の可能性が常にあり、既存の注文IDの数が増えるにつれて、重複をチェックするのにますます費用がかかることです。

于 2012-05-22T23:52:51.307 に答える
0

列のデータ型をUNIQUEIDENTIFIERにします。このデータ型は、以下の形式でIDを提供します。これがニーズを満たすことを願っています。

B85E62C3-DC56-40C0-852A-49F759AC68FB。

于 2012-05-23T05:24:12.253 に答える